主成分分析在python上的實現

       主成分分析(PCA)是一種基於變量協方差矩陣對數據進行壓縮降維、去噪的有效方法,PCA的思想是將n維特徵映射到k維上(k<n),這k維特徵稱爲主成分,是舊特徵的線性組合,這些線性組合最大化樣本方差,儘量使新的k個特徵互不相關。

       主成分分析再說白點就是將多項指標轉化爲少數幾項綜合指標,用綜合指標來解釋多變量的方差- 協方差結構。綜合指標即爲主成分。所得出的少數幾個主成分要儘可能多地保留原始變量的信息,且彼此不相關,使得主成分比原始變量具有某些更優越的性能(主成分必須保留原始變量90%以上的信息),從而達到簡化系統結構,抓住問題實質的目的綜合指標即爲主成分。

       協方差(Covariance)在概率論統計學中用於衡量兩個變量的總體誤差。而方差是協方差的一種特殊情況,即當兩個變量是相同的情況。協方差表示的是兩個變量的總體的誤差,這與只表示一個變量誤差的方差不同。 如果兩個變量的變化趨勢一致,也就是說如果其中一個大於自身的平均值,另外一個也大於自身的平均值,那麼兩個變量之間的協方差就是正值。 如果兩個變量的變化趨勢相反,即其中一個大於自身的期望值,另外一個卻小於自身的期望值,那麼兩個變量之間的協方差就是負值。

案例

       以sklearn自帶的葡萄酒數據集爲例,對13個特徵進行降維處理。

from sklearn import datasets
from sklearn.decomposition import PCA
from matplotlib import pyplot as plt
wine=datasets.load_wine()
x=wine.data
y=wine.target
target_names=wine.target_names
pca = PCA(n_components=5)
X_p= pca.fit_transform(x)#各成份數據
feature_vector=pca.components_ # 降維後特徵向量, 
feature_variance=pca.explained_variance_ # 特徵值的方差
feature_variance_ratio=pca.explained_variance_ratio_ #特徵值方差貢獻率
score=pca.score(x) # 樣本的平均log相似性值
score_samples=pca.score_samples(x) # 每個樣本的log相似性值
singular_values_=pca.singular_values_
covariance=pca.get_covariance() #計算並返回協方差矩陣
precision=pca.get_precision() #計算數據精度矩陣
X=pca.inverse_transform(X_p) #還原數據到原來空間

#由方差貢獻率可知取兩個主成分,進行二維散點圖繪製
c=['r','g','b']
plt.figure(1)
for i in range(max(y)+1):
    data=X_p[y==i]
    plt.scatter(data[:, 0], data[:, 1],c=c[i],label=target_names[i])   
    plt.legend()
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.title('PCA of wine')

結果分析 

       前兩個主成分累計貢獻達到99.97%,因此用兩個主成分(特徵)來代表13個特徵,兩個主成分對葡萄酒的識別效果如下散點圖。

                                                              

                                                        

PCA算法優點

       (1)使得數據集更易使用;

       (2)降低算法的計算開銷;

       (3)去除噪聲;

       (4)使得結果容易理解;

       (5)完全無參數限制。

PCA算法缺點

       (1)如果用戶對觀測對象有一定的先驗知識,掌握了數據的一些特徵,卻無法通過參數化等方法對處理過程進行干預,可能會得不到預期的效果,效率也不高;

       (2) 特徵值分解有一些侷限性,比如變換的矩陣必須是方陣;

       (3) 在非高斯分佈情況下,PCA方法得出的主元可能並不是最優的。

PCA算法應用

       (1)高維數據集的探索與可視化。

       (2)數據壓縮。

       (3)數據預處理。

       (4)圖象、語音、通信的分析處理。

       (5)降維(最主要),去除數據冗餘與噪聲。

如果對你有幫助,請點下贊,予人玫瑰手有餘香!

時時仰望天空,理想就會離現實越來越近!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章