Matlab中特征降维主成分分析(PCA)使用方法(整套流程)
生活随笔
收集整理的這篇文章主要介紹了
Matlab中特征降维主成分分析(PCA)使用方法(整套流程)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. PCA簡介:
PCA(Principal Component Analysis)主成分分析方法是一種常見的數(shù)據(jù)降維方法。數(shù)據(jù)維度過高可能會使得模型效果不佳。PCA主要原理是將高維原數(shù)據(jù)通過一個(gè)轉(zhuǎn)換矩陣,映射到另一組低維坐標(biāo)系下,從而實(shí)現(xiàn)數(shù)據(jù)降維。
2. matlab中pca()函數(shù)
coeff = pca(X) coeff = pca(X,Name,Value) [coeff,score,latent] = pca(___) [coeff,score,latent,tsquared] = pca(___) [coeff,score,latent,tsquared,explained,mu] = pca(___)常用形式:
[coeff,score,latent,tsquared,explained,mu] = pca(___)常用參數(shù)為coeff,score,latent
- coeff:主成分系數(shù)矩陣,也叫做轉(zhuǎn)換矩陣,是理論中的原數(shù)據(jù)X對應(yīng)的協(xié)方差矩陣的特征向量組成的矩陣
- score:原數(shù)據(jù)利用初始coeff轉(zhuǎn)換后的新數(shù)據(jù)矩陣,但這個(gè)不是我們想要的最終轉(zhuǎn)換數(shù)據(jù),因?yàn)楹罄m(xù)降維操作會改變coeff
- latent:是理論中的原數(shù)據(jù)X對應(yīng)的協(xié)方差矩陣的特征值,是一個(gè)向量,并且經(jīng)過排序(貢獻(xiàn)越大越靠前)
3. PCA完整使用方法
(1). 導(dǎo)入實(shí)驗(yàn)數(shù)據(jù),劃分出訓(xùn)練集train_data和測試集test_data
(2). 基于訓(xùn)練集用pca()得到需要參數(shù)
[coeff,score,latent,tsquared,explained,mu] = pca(train_data)(3). 計(jì)算主成分累計(jì)貢獻(xiàn)率,運(yùn)行下面的代碼后會出現(xiàn)一個(gè)向量,從小到大,例如輸出為[0.7,0.95,0.98,1](數(shù)據(jù)特征有四維),0.7就代表取第一主成分貢獻(xiàn)率70%,0.95就代表取第一主成分和第二主成分就已經(jīng)得到累計(jì)貢獻(xiàn)率95%,相當(dāng)于只用兩個(gè)主成分就攬括了原數(shù)據(jù)95%的信息。若只取前兩個(gè)主成分,其他的丟棄,則模型也能夠有著不錯(cuò)的效果,從而將四維數(shù)據(jù)降到了二維。一般要求累計(jì)貢獻(xiàn)率大于等于95%就夠了
cumsum(latent)/sum(latent)%累積貢獻(xiàn)值(4). 基于累計(jì)貢獻(xiàn)值確定所降到的維度數(shù)量(設(shè)為p)后,取coeff的前p列作為降維轉(zhuǎn)換矩陣tran_matrix(coeff也是根據(jù)第幾主成分貢獻(xiàn)從大到小排列的)
tran_matrix = coeff(:,1:p)(5). 把訓(xùn)練集每列的值減去樣本對應(yīng)列的均值,得到train_data0,再將train_data0與轉(zhuǎn)換矩陣tran_matrix相乘,得到將原始訓(xùn)練集降維后的新訓(xùn)練數(shù)據(jù)集
train_data0 = bsxfun(@minus,train_data,mean(train_data,1)); low_train_data = train_data0 * tran_matrix;(6). 將測試集每列的值減去訓(xùn)練集對應(yīng)列的均值,得到test_data0,再將test_data0與轉(zhuǎn)換矩陣tran_matrix相乘,得到將原始測試集降維后的新測試數(shù)據(jù)集
test_data0 = bsxfun(@minus,test,mean(x,1)); low_test_data = test_data0 * tran_matrix;總結(jié)
以上是生活随笔為你收集整理的Matlab中特征降维主成分分析(PCA)使用方法(整套流程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java1.9关键字_对 Java 9
- 下一篇: C++中在浏览器打开html文件