|
|
import numpy as np
|
|
|
import pandas as pd
|
|
|
import matplotlib.pyplot as plt
|
|
|
from scipy.fftpack import fft,ifft
|
|
|
import math
|
|
|
import pywt
|
|
|
import csv
|
|
|
from pandas import DataFrame;
|
|
|
|
|
|
data = pd.read_csv('E:/python/shujuwajue/kddcup.data_10_percent/kddcup_data_10_percent_corrected.csv',encoding="gbk")
|
|
|
print(data.columns)
|
|
|
y_values = np.array(data['0.1'])
|
|
|
x_values = np.array(data['0'])
|
|
|
plt.plot(x_values,y_values)
|
|
|
plt.show()
|
|
|
|
|
|
yy=fft(y_values) #快速傅里叶变换
|
|
|
yreal = yy.real # 获取实数部分
|
|
|
yimag = yy.imag # 获取虚数部分
|
|
|
|
|
|
yf=abs(fft(y_values)) # 取模
|
|
|
yf1=abs(fft(y_values))/((len(x_values)/2)) #归一化处理
|
|
|
yf2 = yf1[range(int(len(x_values)/2))] #由于对称性,只取一半区间
|
|
|
|
|
|
xf = np.arange(len(y_values)) # 取频率
|
|
|
xf1 = xf
|
|
|
xf2 = xf[range(int(len(x_values)/2))] #取一半区间
|
|
|
|
|
|
#plt.plot(xf,yf,'r') #显示原始信号的FFT模值
|
|
|
plt.subplot(2, 1, 1)
|
|
|
plt.plot(xf2,yf2,'g')
|
|
|
#plt.show()
|
|
|
#-----------------------分界线-------------------------------------------
|
|
|
w = pywt.Wavelet('sym8')#选用sym8小波
|
|
|
maxlev = pywt.dwt_max_level(len(data), w)#最大分解级别,返回max_level。db.dec_lenx为小波的长度
|
|
|
coeffs = pywt.wavedec(y_values, w, mode='constant',level=maxlev)#分解波,constant是边缘都填充0,不管tensor的内容
|
|
|
threshold = 0.4
|
|
|
#plt.figure()
|
|
|
for i in range(1, len(coeffs)):
|
|
|
coeffs[i] = pywt.threshold(coeffs[i], threshold*max(coeffs[i])) # 将噪声滤波
|
|
|
|
|
|
datarec = pywt.waverec(coeffs, 'sym8') # 将信号进行小波重构
|
|
|
|
|
|
|
|
|
yy1=fft(datarec)
|
|
|
yreal = yy1.real # 获取实数部分
|
|
|
yimag = yy1.imag # 获取虚数部分
|
|
|
|
|
|
yf_1 = abs(fft(datarec)) # 取模
|
|
|
yf1_1 = abs(fft(datarec))/((len(x_values)/2)) #归一化处理
|
|
|
yf2_1 = yf1_1[range(int(len(x_values)/2))] #由于对称性,只取一半区间
|
|
|
|
|
|
xf_1 = np.arange(len(datarec)) # 频率
|
|
|
xf1_1 = xf_1
|
|
|
xf2_1 = xf_1[range(int(len(x_values)/2))] #取一半区间
|
|
|
|
|
|
plt.subplot(2, 1, 2)
|
|
|
plt.plot(xf2_1,yf2_1)
|
|
|
|
|
|
#plt.plot(datarec,'g')
|
|
|
plt.show()
|
|
|
#d = DataFrame(datarec)
|
|
|
#d.to_csv('C:/Users/ASUS/Desktop/data.csv')
|
|
|
df1 = pd.DataFrame(datarec)
|
|
|
df1.to_excel("E:/python/shujuwajue/kddcup.data_10_percent/output.xlsx")
|