python小白進階三:主成分分析(PCA)
阿新 • • 發佈:2019-02-05
主成分分析(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()
最後結果如下圖:
可以看出,降維後的資料仍能夠清晰地分成三類。這樣不僅能削減資料的維度,降低分類任務的工作量,還能保證分類的質量。