回覆列表
-
1 # 無痕6157
-
2 # Sunday呀
1.在對資料進行主成分分析時,需要對資料標準化處理,以消除量綱的影響,如圖所示,使用程式碼x=zscore(A);對資料進行標準化。原則是原資料減去均值後,除以標準差。
2.標準化後,使用matlab自帶主成分分析函式[coeff,score,latent,tsquare]=princomp(x);如圖所示。
3.其中,coeff是各個主成分的係數也就是轉換矩陣,score是各個主成分的得分,latent是X的特徵值,tsquare是每個資料的統計值。這裡主要看的coeff、latent。如圖所示。
4.接下來計算每個特徵的貢獻率,輸入程式碼latent’;、y=(100*latent/sum(latent))"; 如圖所示。
5.提取主成分的方法是依據前N個特徵值的累計貢獻率為準則,若累計貢獻率為85%以上,則說明這前N個特徵可以代表去不資料的絕大部分資訊。如圖所示(將每個特徵的貢獻率複製到Excel相加,累計達到85%)前99個特徵。
6.由於前99個特徵的累計貢獻率達到85%。故可以使用此前99個特徵的資訊表示大部分的原始資訊。取前99個特徵的特徵向量作為轉換矩陣,即coeff(:,1:99)。降維後的資料B=x*coeff(:,1:99);如圖所示,新資料只能99個特徵(原資料有841個特徵)達到降維的結果。
1、在對資料進行主成分分析時,需要對資料標準化處理,以消除量綱的影響,如圖所示,使用程式碼x=zscore(A);對資料進行標準化。原則是原資料減去均值後,除以標準差。
2、標準化後,使用matlab自帶主成分分析函式[coeff,score,latent,tsquare]=princomp(x);如圖所示
3、其中,coeff是各個主成分的係數也就是轉換矩陣,score是各個主成分的得分,latent是X的特徵值,tsquare是每個資料的統計值。這裡主要看的coeff、latent。如圖所示
4、接下來計算每個特徵的貢獻率,輸入程式碼latent’;、y=(100*latent/sum(latent))"; 如圖所示
5、提取主成分的方法是依據前N個特徵值的累計貢獻率為準則,若累計貢獻率為85%以上,則說明這前N個特徵可以代表去不資料的絕大部分資訊。如圖所示(將每個特徵的貢獻率複製到Excel相加,累計達到85%)前99個特徵。
6、由於前99個特徵的累計貢獻率達到85%。故可以使用此前99個特徵的資訊表示大部分的原始資訊。取前99個特徵的特徵向量作為轉換矩陣,即coeff(:,1:99);
降維後的資料B=x*coeff(:,1:99);如圖所示,新資料只能99個特徵(原資料有841個特徵)達到降維的結果。