pca算法:算法
算法原理: pca利用的兩個維度之間的關係和協方差成正比,協方差爲0時,表示這兩個維度無關,若是協方差越大這代表兩個維度之間相關性越大,於是降維的時候,app
都是找協方差最大的。spa
1 將XX中的數據進行零均值化,即每一列都減去其均值。 2 計算協方差矩陣C=1mXTXC=1mXTX 3 求出CC的特徵值和特徵向量 4 將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣P 5 Y=XPY=XP就是降維到k維後的數據。
代碼:3d
# coding=utf-8 import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.datasets import load_iris data = load_iris() y = data.target X = data.data print data.feature_names print data.data; pca = PCA(n_components=2) reduced_X = pca.fit_transform(X) red_x, red_y = [], [] blue_x, blue_y = [], [] green_x, green_y = [], [] for i in range(len(reduced_X)): if y[i] == 0: red_x.append(reduced_X[i][0]) red_y.append(reduced_X[i][1]) elif y[i] == 1: blue_x.append(reduced_X[i][0]) blue_y.append(reduced_X[i][1]) else: green_x.append(reduced_X[i][0]) green_y.append(reduced_X[i][1]) plt.scatter(red_x, red_y, c='r', marker='x') plt.scatter(blue_x, blue_y, c='b', marker='D') plt.scatter(green_x, green_y, c='g', marker='.') plt.show()