Python sklearn庫實現PCA(以鳶尾花分類為例)
阿新 • • 發佈:2019-01-04
PCA簡介
主成分分析(Principal Component Analysis,PCA)是最常用的一種降維方法,通常用於高維資料集的探索與視覺化,還可以用作資料壓縮和預處理等。矩陣的主成分就是其協方差矩陣對應的特徵向量,按照對應的特徵值大小進行排序,最大的特徵值就是第一主成分,其次是第二主成分,以此類推。基本步驟:
具體實現
我們通過Python的sklearn庫來實現鳶尾花資料進行降維,資料本身是4維的降維後變成2維,可以在平面中畫出樣本點的分佈。樣本資料結構如下圖:
其中樣本總數為150,鳶尾花的類別有三種,分別標記為0,1,2
程式碼
import matplotlib.pyplot as plt #載入matplotlib用於資料的視覺化
from sklearn.decomposition import PCA #載入PCA演算法包
from sklearn.datasets import load_iris
data=load_iris()
y=data.target
x=data.data
pca=PCA(n_components=2) #載入PCA演算法,設定降維後主成分數目為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()
結果圖