主成分分析實現的乙個心得

2021-09-01 02:49:33 字數 2252 閱讀 3766

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

主成份分析(principal component analysis,pca)也叫做主成份變換、主分量分析或 —l(karhunen—loeve)變換,是建立在統計特徵基礎上的多維(如多波段)正交線

性變換。它是遙感影象處理中最常用也是最有用的變換演算法之一。

這次我要實現乙個主成分分析演算法,圖是做出來了,但是和著名的遙感軟體pci和envi的效果比起來很差。如第一主成分的圖如下: 

上面噪音極多,而且看起來不合諧。我知道自己的演算法有問題,在排除了自己的讀取影象的問題後。我考慮到是不是求取特徵矩陣時出了問題,因為主成分的輸出資料是y=x*a。

其中x為原影象,y為目標影象,a為特徵向量矩陣。由此我懷疑我的特徵矩陣求取有問題。後來從網上找了一種求特徵矩陣的辦法,進行主成分分析的效果。下面是具體的實現**:

//計算特徵向量

/*pdblcof    [in][out]----- 協方差矩陣

lchannelcount  [in] ------  影象的輸入波段數

pdblvects  [out] ---- 特徵向量矩陣

dbleps  [in] ---- 誤差範圍,我取為0.0000001

ljt   [in] ----- 迴圈次數,我取為1000000

*/static

int ijcobimatrixcharactervalue(double** pdblcof, long lchannelcount, std::vector& pdblvects, double dbleps,long ljt)

while(1)

}if(fm 

if(l > ljt)   return 0;

l += 1;

u = p * lchannelcount + q;   w = p * lchannelcount + p; t = q * lchannelcount + p;  s = q * lchannelcount + q;

x = -pdblcof[p][q];

y = (pdblcof[q][q] - pdblcof[p][p])/2.0;

omega = x / sqrt(x * x + y * y);

if(y 

sn = 1.0 + sqrt(1.0 - omega * omega);

sn = omega / sqrt(2.0 * sn);

cn = sqrt(1.0 - sn * sn);

fm = pdblcof[p][p];

pdblcof[p][p] = fm * cn * cn + pdblcof[q][q] * sn * sn + pdblcof[p][q] * omega;

pdblcof[q][q] = fm * sn * sn + pdblcof[q][q] * cn * cn - pdblcof[p][q] * omega;

pdblcof[p][q] = 0.0;

pdblcof[q][p] = 0.0;

for(j = 0;j 

if((j != p) && (j != q))

for(i = 0; i 

if((i != p) && ( i != q))

for(i = 0; i 

}return 1;

}// 根據特徵值從大到小排列特徵向量矩陣

/*pfmatrix [in][out]----- 上一步輸出的協方差矩陣

nbandnum [in] ------  影象的輸入波段數

pdblvects  [out] ---- 上一步輸出的特徵向量矩陣

*/static

void sorteigenvector(double** pfmatrix,int nbandnum,std::vector &pfvector)

if(p != i)}}

} 執行上面兩步之後,所得到的特徵矩陣為用於和原影象相乘的矩陣a.

對一幅tm影象的第1,2,3,4,5,7通道執行pca操作,效果圖如下:

第一主成分:

第二主成分:

第三主成分:

第四主成分:

第五主成分:

第六主成分:

從上面可以看出,正確的影象看起來視覺非常和諧,毫無刺目的感覺。

給我老師的人工智慧教程打call!

主成分分析實現的乙個心得

主成份分析 principal component analysis,pca 也叫做主成份變換 主分量分析或 l karhunen loeve 變換,是建立在統計特徵基礎上的多維 如多波段 正交線 性變換。它是遙感影象處理中最常用也是最有用的變換演算法之一。這次我要實現乙個主成分分析演算法,圖是做出...

主成分分析Matlab實現

資料匯入及處理 clcclear all a xlsread coach.xlsx b2 h16 資料標準化處理 a size a,1 b size a,2 for i 1 b sa i a i mean a i std a i end 計算相關係數矩陣的特徵值和特徵向量 cm corrcoef s...

Python 實現主成分分析

python 實現主成分分析 主成分分析 principal component analysis,pca 是最常用的一種降維方法,通常用於高維資料集的探索與視覺化,還可以用作資料壓縮和預處理等。矩陣的主成分就是其協方差矩陣對應的特徵向量,按照對應的特徵值大小進行排序,最大的特徵值就是第一主成分,其...