PCA(Principal Component Analysis)是一種經(jīng)典的線性降維方法,其基本思想是將高維數(shù)據(jù)映射到低維空間中,使得映射后的數(shù)據(jù)具有更好的可解釋性。
PCA 的核心思想是將原始數(shù)據(jù)投影到一個新的坐標(biāo)系中,使得投影后的數(shù)據(jù)方差最大。在這個新的坐標(biāo)系中,第一個主成分是數(shù)據(jù)方差最大的方向,第二個主成分則是與第一個主成分不相關(guān)的方向,以此類推,直到所有主成分都被選出為止。
在 MATLAB 中,可以使用 pca 函數(shù)來計算主成分。下面是一個示例代碼,假設(shè)我們有一個包含 1000 個樣本和 10 個特征的數(shù)據(jù)集:
%生成隨機數(shù)據(jù) data=randn(1000,10); %計算主成分 [coeff,score,latent]=pca(data);
其中,coeff 是一個 10x10 的矩陣,每列對應(yīng)一個主成分,score 是一個 1000x10 的矩陣,表示每個樣本在新坐標(biāo)系中的投影,latent 則是一個包含每個主成分的方差的向量。
我們可以使用這些結(jié)果來對數(shù)據(jù)進行降維。例如,如果我們希望將數(shù)據(jù)降到 3 維,可以將前三個主成分相加,得到每個樣本在新空間中的坐標(biāo):
new_data=data*coeff(:,1:3);
這將返回一個 1000x3 的矩陣,表示每個樣本在新空間中的坐標(biāo)。
綜上所述,PCA 是一種非常有效的降維方法,可以在不丟失太多信息的情況下將高維數(shù)據(jù)降到低維空間中。在 MATLAB 中,可以使用 pca 函數(shù)來計算主成分,并使用結(jié)果來對數(shù)據(jù)進行降維。
PCA并通過python實現(xiàn)
PCA(Principal Component Analysis)是一種常用的數(shù)據(jù)降維技術(shù),它可以通過對數(shù)據(jù)進行主成分分析,將高維數(shù)據(jù)映射到低維空間,從而使得數(shù)據(jù)在保留盡量多信息的前提下,減少特征維度,簡化問題。下面是一個用Python實現(xiàn)PCA的示例:
假設(shè)我們有一組二維數(shù)據(jù),可以通過以下代碼來生成:
importnumpyasnp np.random.seed(1)#設(shè)置隨機數(shù)種子,這樣每次運行程序生成的數(shù)據(jù)都是相同的 X=np.dot(np.random.rand(2,2),np.random.randn(2,200)).T
這里我們使用np.dot()函數(shù)來進行矩陣乘法運算,其中第一個矩陣是2x2的隨機矩陣,第二個矩陣是2x200的隨機矩陣,最終得到的是2x200的矩陣,這就是我們的原始數(shù)據(jù)。
接下來我們通過sklearn中的PCA來實現(xiàn)二維數(shù)據(jù)的降維和可視化:
fromsklearn.decompositionimportPCA importmatplotlib.pyplotasplt pca=PCA(n_components=1)#創(chuàng)建一個PCA對象,設(shè)置降維后的維度為1 X_new=pca.fit_transform(X)#對原始數(shù)據(jù)進行降維 plt.scatter(X[:,0],X[:,1],alpha=0.5)#繪制原始數(shù)據(jù) plt.scatter(X_new[:,0],np.zeros(X_new.shape),alpha=0.5)#繪制降維后的數(shù)據(jù) plt.show()
這里我們指定降維后的維度為1,即將二維數(shù)據(jù)降到一維。通過fit_transform()函數(shù)可以得到降維后的結(jié)果,最后通過可視化來展示原始數(shù)據(jù)和降維后的結(jié)果。
完整的代碼如下:
importnumpyasnp fromsklearn.decompositionimportPCA importmatplotlib.pyplotasplt np.random.seed(1) X=np.dot(np.random.rand(2,2),np.random.randn(2,200)).T pca=PCA(n_components=1) X_new=pca.fit_transform(X) plt.scatter(X[:,0],X[:,1],alpha=0.5) plt.scatter(X_new[:,0],np.zeros(X_new.shape),alpha=0.5) plt.show()
運行結(jié)果會得到一個散點圖,其中藍色的點表示原始數(shù)據(jù),橙色的點表示經(jīng)過PCA降維后的數(shù)據(jù)。可以看出,經(jīng)過降維后,數(shù)據(jù)呈一個直線狀分布。
注意:上面的示例中的數(shù)據(jù)是人為生成的,實際應(yīng)用中的數(shù)據(jù)通常是更加復(fù)雜的,需要進行更多的數(shù)據(jù)預(yù)處理和參數(shù)調(diào)整才能得到較好的降維效果。
責(zé)任編輯:彭菁
-
matlab
+關(guān)注
關(guān)注
185文章
2980瀏覽量
231007 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7139瀏覽量
89576 -
PCA
+關(guān)注
關(guān)注
0文章
89瀏覽量
29694
原文標(biāo)題:詳解PCA主成分分析算法
文章出處:【微信號:嵌入式職場,微信公眾號:嵌入式職場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論