小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

關(guān)于主成分分析matlab代碼實(shí)現(xiàn)的總結(jié)

 宗邑 2019-01-30

方法一:

1:用zscore函數(shù)對(duì)原始數(shù)據(jù)S進(jìn)行標(biāo)準(zhǔn)化。

2:用cov函數(shù)求出標(biāo)準(zhǔn)化后的數(shù)據(jù)的協(xié)方差。

3:求出此協(xié)方差的特征向量與特征根(eig函數(shù))。

4:將產(chǎn)生的特征向量依據(jù)特征根大小從大到小進(jìn)行排列(即將特征向量按列倒序)。

5:依據(jù)需求取出倒序后的向量的前幾列(一般根據(jù)特征根來算貢獻(xiàn)率,使得累計(jì)貢獻(xiàn)率大于85%),組成新的矩陣T

6:做S*T得到分析后的新的數(shù)據(jù)。

7:依據(jù)特征根算貢獻(xiàn)率,并繪圖。

代碼如下:

X=load('shuju.txt')

z=zscore(X)               %數(shù)據(jù)標(biāo)準(zhǔn)化

M=cov(z)                  %協(xié)方差

[V,D]=eig(M);             %求出協(xié)方差矩陣的特征向量、特征根

d=diag(D);                %取出特征根矩陣列向量(提取出每一主成分的貢獻(xiàn)率)

eig1=sort(d,'descend')      %將貢獻(xiàn)率按從大到小元素排列

v=fliplr(V)                %依照D重新排列特征向量

S=0;

i=0;

while S/sum(eig1)<0.85

    i=i 1;

    S=S eig1(i);

end                         %求出累積貢獻(xiàn)率大于85%的主成分

NEW=z*v(:,1:i)              %輸出產(chǎn)生的新坐標(biāo)下的數(shù)據(jù)

W=100*eig1/sum(eig1)

figure(1)

pareto(W);                  %畫出貢獻(xiàn)率的直方圖

 

 

方法二:

1:用zscore函數(shù)對(duì)原始數(shù)據(jù)S進(jìn)行標(biāo)準(zhǔn)化,(同上)。

2:利用matlab自帶的princomp函數(shù)直接求得其特征向量,新坐標(biāo)下的數(shù)據(jù),特征根(并且已經(jīng)排列好了)。

3:選擇恰當(dāng)?shù)那皫醉?xiàng)主成分與標(biāo)準(zhǔn)化后的數(shù)據(jù)相乘。得到在新坐標(biāo)下的數(shù)據(jù)。

4:如方法一,利用特征根算貢獻(xiàn)率。

代碼如下:

X=load('shuju.txt')

x=zscore(X)                       %標(biāo)準(zhǔn)化

[coef,score,eig,t]=princomp(x);   %利用princomp處理矩陣

t                                 %每一組數(shù)據(jù)在新坐標(biāo)下到原點(diǎn)的距離

s=0;

i=1;

while s/sum(eig)<0.85

    s=s eig(i);

    i=i 1;

end                              %獲得累計(jì)貢獻(xiàn)率大于85%幾組數(shù)據(jù)

NEW=x*coef(:,1:i-1)              %輸出新的數(shù)據(jù)

figure

pareto(eig/sum(eig));          %輸出貢獻(xiàn)率直方圖

figure(2)

plot(eig,'r ');

hold on

plot(eig,'b-');


二:令我糾結(jié)的一些東西

1:歸一化、均值化、標(biāo)準(zhǔn)化、白化

  歸一化:將數(shù)據(jù)歸結(jié)到某兩個(gè)數(shù)之間。

計(jì)算公式:y = (ymax - ymin)*(x - xmin)/(xmax - xmin) ymin

Matlab實(shí)現(xiàn)方法:利用mapminmax函數(shù),具體格式為[y,ps] = mapminmax(x,ymin,ymax)(矩陣中以行來歸一化)。

均值化:將數(shù)據(jù)中的每一個(gè)數(shù)除以其相應(yīng)指標(biāo)的平均值(數(shù)據(jù)矩陣中由于一般每一列描述一個(gè)特征,matlab處理時(shí)要按列處理)(這種方法可以說修正了常用的標(biāo)準(zhǔn)化會(huì)浪費(fèi)部分?jǐn)?shù)據(jù)的情況,可以替代標(biāo)準(zhǔn)化對(duì)數(shù)據(jù)進(jìn)行預(yù)處理)。

標(biāo)準(zhǔn)化:使數(shù)據(jù)均值為0方差為1,即將每一個(gè)數(shù)據(jù)減去所在列的均值后對(duì)數(shù)據(jù)矩陣每一列除以其對(duì)應(yīng)的方差。

Matlab實(shí)現(xiàn)方法:使用zscore函數(shù)。

主成分分析中,原始數(shù)據(jù)的單位不同,需要使用一種數(shù)據(jù)處理方法使其轉(zhuǎn)換為無量綱數(shù),歸一化與標(biāo)準(zhǔn)化都有消除量剛的作用,但是,主成分分析根據(jù)方差來建立新坐標(biāo)系的,所以歸一化矩陣可能不適用于PCA中,所以,基本上主成分分析在數(shù)據(jù)預(yù)處理上都用的是標(biāo)準(zhǔn)化,但是,標(biāo)準(zhǔn)化矩陣本身會(huì)損失一部分信息,而均值化不會(huì)損失信息,均值化可以更好的改進(jìn)PCA算法(網(wǎng)上找到的一篇論文中說到的)。

白化:白化通常為獨(dú)立成分分析中的數(shù)據(jù)處理方式,其與PCA處理方式基本一致,個(gè)人理解ICA就是對(duì)PCA數(shù)據(jù)作的進(jìn)一步處理,找到其中相互獨(dú)立的部分。

2princomp函數(shù)與eig函數(shù)的不同

  在開始我一直以為利用princomp函數(shù)與eig函數(shù)產(chǎn)生的特征向量只有順序有所不同,但是我發(fā)現(xiàn),即使是同一組數(shù)據(jù),其產(chǎn)生的特征向量也有所不同,表現(xiàn)為某幾個(gè)數(shù)據(jù)正負(fù)號(hào)不同,具體如下:

原始數(shù)據(jù):

關(guān)于主成分分析matlab代碼實(shí)現(xiàn)的總結(jié)

使用eig函數(shù)的得到的特征向量:

關(guān)于主成分分析matlab代碼實(shí)現(xiàn)的總結(jié)
使用princomp函數(shù)的特征向量:

關(guān)于主成分分析matlab代碼實(shí)現(xiàn)的總結(jié)

可以看出,不僅是列的位置有所不同,某些數(shù)據(jù)的正負(fù)情況也有所不同,這也是我的一個(gè)疑惑:相同數(shù)據(jù)的特征向量為什么會(huì)有正負(fù)號(hào)的偏差?為保險(xiǎn)起見,我覺得matlab自帶的princomp函數(shù)可能更準(zhǔn)確。

 

3PCAICA的異同

幾何意義上:PCA是在找尋保留最大信息的方向,而ICA是在找尋各個(gè)獨(dú)立的分量,也就是說PCA的第一主成分貢獻(xiàn)率永遠(yuǎn)最大并且貢獻(xiàn)率主成分次數(shù)增高逐漸降低,而ICA并沒有,他只是將原有的信號(hào)解混,并不考慮信息量的大小。

處理方式上:處理ICA時(shí)要先用PCA做白化處理,因?yàn)?/span>PCA協(xié)方差矩陣為對(duì)角陣,其必不相關(guān),獨(dú)立必不相關(guān),所以通過PCA使數(shù)據(jù)之間沒有相關(guān)性,之后再進(jìn)行迭代操作,求出相互獨(dú)立的分量。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多