1. 程式人生 > >python小白進階三:主成分分析(PCA)

python小白進階三:主成分分析(PCA)

     主成分分析(Principal Component Analysis,PCA)是最常用的一種降維方法,通常用於高維資料集的探索與視覺化,還可以用作資料壓縮和預處理等。矩陣的主成分就是其協方差矩陣對應的特徵向量,按照對應的特徵值大小進行排序,最大的特徵值就是第一主成分,其次是第二主成分,以此類推。

     首先要了解下主成分分析的基本步驟:

   我們通過Python的sklearn庫來實現鳶尾花資料進行降維,資料本身是4維的降維後變成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()
最後結果如下圖:



可以看出,降維後的資料仍能夠清晰地分成三類。這樣不僅能削減資料的維度,降低分類任務的工作量,還能保證分類的質量。