數據的變換算法
import pandas as pd data = pd.read_csv("./discretization_data.csv") # data.describe(percentiles=) print data data = data["coefficient"].copy() k = 4 # k等於4是什麼意思啊? d1 = pd.cut(data, k, labels=range(k)) # 等寬離散化,各個類比依次命名爲0,1,2,3 # 等頻率離散化 w = [1.0 * i/k for i in range(k+1)] w = data.describe(percentiles=w)[4:4+k+1] # 使用describe函數自動計算分位數 w[0] = w[0]*(1-1e-10) d2 = pd.cut(data,w,labels=range(k)) from sklearn.cluster import KMeans kmodel = KMeans(n_clusters=k, n_jobs=4) # 創建模型,n_jobs是並行數,通常等於cpu數較好 kmodel.fit(data.reshape((len(data), 1))) # 訓練模型 c = pd.DataFrame(kmodel.cluster_centers_).sort(0) # 輸出聚類中心,而且排序(默認是隨機序的) w = pd.rolling_mean(c,2).iloc[1:] # 相鄰兩項求中點,做爲邊界點 w = [0] + list(w[0]) + [data.max()] # 把首末邊界點加上 d3 = pd.cut(data, w, labels=range(k)) def cluster_plot(d,k): # 自定義做圖函數來顯示聚類結果 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標籤 plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示符號 plt.figure(figsize=(8,3)) for j in range(0, k): plt.plot(data[d==j], [j for i in d[d==j]], 'o') plt.ylim(-0.5, k-0.5) return plt cluster_plot(d1, k).show() cluster_plot(d2, k).show() cluster_plot(d3, k).show()
基於小波變換的特徵提取方法
|
方法描述
|
---|---|
基於小波包變換的特徵提取方法 | 利用小波分解,可將時域隨機信號序列映射爲尺度域各子空間內的隨機係數序列,按小波分解獲得的最佳子空間內隨機係數序列的不肯定型程度最低.將最佳子空間的熵值及最佳子空間在完整二叉樹中的位置參數做爲特徵量,可疑用於目標識別 |
基於小波變換的多尺度空間的模式極大值特徵提取方法 | 利用小波變換的信號局域化分析能力,求解小波變換的模極大值特性來檢測信號的局部奇異性,將小波變換模極大值特性來檢測信號的局部奇異性,將小波變換模極大值的尺度參數s,平移參數t及其幅值做爲目標的特徵量 |
基於小波變換的多尺度空間能量分佈特徵提取方法 | 各尺度空間內的平滑信號和細節信號能提供原始信號的時頻局域信息,特別時能提供不一樣頻段上信號的構成信息.把不一樣頻段上的信號的構成信息.把不一樣分解尺度上信號的能量求解出來,就能夠將這些能量尺度順序排列,造成特徵向量供識別用 |
基於適應性小波神經網絡的特徵提取方法 | 基於適應性小波神經網絡的特徵提取方法可疑經過分析小波擬合表示進行特徵提取.網絡 |
小波基函數app
其中A時近似信號,爲低頻信號部分;D時細節信號,爲高頻部分.