資源簡(jiǎn)介
Matlab實(shí)現(xiàn)的KL變換實(shí)現(xiàn)主成分分析,包含使用的數(shù)據(jù)集

代碼片段和文件信息
%%%KL變換
%%%主成分分析法
%%%date:2011-7-4
clear??all
%訓(xùn)練數(shù)據(jù)
[w1(:1)w1(:2)]=textread(‘MALE.txt‘‘%f%f‘‘headerlines‘0);?%w1:MALE
[w2(:1)w2(:2)]=textread(‘FEMALE.txt‘‘%f%f‘‘headerlines‘0);?%w2:FEMALE
[w1_row?w1_col]=size(w1);
w1=[w1?ones(w1_row1)];??%給訓(xùn)練樣本增加類別屬性標(biāo)簽?zāi)猩?br/>[w2_row?w2_col]=size(w2);
w2=[w2?-ones(w2_row1)];?%給訓(xùn)練樣本增加類別屬性標(biāo)簽,女生
%畫出students數(shù)據(jù)集的訓(xùn)練樣本
figure(1)
for?i=1:w1_row
????plot(w1(i1)w1(i2)‘r*‘);??%?畫w1類樣本數(shù)據(jù)的二維直角坐標(biāo)曲線圖,其中數(shù)據(jù)以紅*表示
????hold?on;
end
for?i=1:w2_row
????plot(w2(i1)w2(i2)‘bo‘)??%?畫w2類樣本數(shù)據(jù)的二維直角坐標(biāo)曲線圖,其中數(shù)據(jù)以藍(lán)o表示
????hold?on
end
hold?off
%合并兩個(gè)樣本集中的特征
w=[w1;w2];
[w_row?w_col]=size(w);
%求標(biāo)準(zhǔn)化后的協(xié)方差矩陣,再求特征根和特征向量
%for?j=1:w_col
%????mju(j)=mean(w(:j));
%????sigma(j)=sqrt(cov(w(:j)));
%end
%for?i=1:w_row
%????for?j=1:w_col
%????V(ij)=(w(ij)-mju(j))/sigma(j);
%????end
%end
%sigmaV=cov(V);
%求w標(biāo)準(zhǔn)化的協(xié)方差矩陣的特征根和特征向量
%[Tlambda]=eig(sigmaV);
%disp(‘特征根由(小到大):‘);
%disp(lambda);
%disp(‘特征向量‘);
%disp(T);
%y=T(:1)*V(:1)+T(:2)*V(:2)
sigmaV=cov(w(:1:2));
[Tlambda]=eig(sigmaV);
disp(‘特征根由(小到大):‘);
disp(lambda);
disp(‘特征向量‘);
disp(T);
m1=mean(w(:1));
m2=mean(w(:2));
%for?i=1:w_row
%????x1(i1)=T(11)*(w(i1))+T(21)*(w(i2));%第一主成分
%????x2(i1)=T(12)*(w(i1))+T(22)*(w(i2));%第二主成分
%end
%x=140:5:190;
%y=T‘*w‘;
z1=T(:1)‘*w(:1:2)‘;
z2=T(:2)‘*w(:1:2)‘;
figure(2)
for?i=1:w_row
????plot(z1(i)*T(11)z1(i)*T(21)‘r.‘);??
????plot(z2(i)*T(12)z2(i)*T(22)‘b.‘);
????hold?on;
end
hold?off;
figure(3)
z3=T(:2)‘*w1(:1:2)‘;
z4=T(:2)‘*w2(:1:2)‘;
for?i=1:w1_row
????plot(z3(i)*T(12)z3(i)*T(22)‘r.‘);
????hold?on;
end
for?i=1:w2_row
????plot(z4(i)*T(12)z4(i)*T(22)‘b.‘);
????hold?on;
end
hold?off;
figure(4)
z5=T(:1)‘*w1(:1:2)‘;
z6=T(:1)‘*w2(:1:2)‘;
for?i=1:w1_row
????plot(z5(i)*T(11)z5(i)*T(12)‘r.‘);
????hold?on;
end
for?i=1:w2_row
????plot(z6(i)*T(11)z6(i)*T(12)‘b.‘);
????hold?on;
end
hold?off;
%方差貢獻(xiàn)率和累計(jì)方差貢獻(xiàn)率
wsum=sum(sum(lambda2)1);
for?i=1:(w_col-1)
????fai(i)=lambda(ii)/wsum;
end
for?i=1:(w_col-1)
????psai(i)=sum(sum(lambda(1:i1:i)2)1)/wsum;
end
disp(‘方差貢獻(xiàn)率‘);
disp(fai);
disp(‘累計(jì)方差貢獻(xiàn)率‘);
disp(psai);
%方法2:求w的相關(guān)系數(shù)矩陣,再求特征根和特征向量
%w的標(biāo)準(zhǔn)化的協(xié)方差矩陣就是w的相關(guān)系數(shù)矩陣
%R=corrcoef(w);
%求w相關(guān)系數(shù)矩陣的特征根和特征向量
%[TR?lambdaR]=eig(R);
%disp(‘特征根由(小到大):‘);
%disp(lambdaR);
%disp(‘特征向量‘);
%disp(TR);
%?第一主成分分析
right=0;%分類正確次數(shù)
wrong=0;%分類錯(cuò)誤次數(shù)
fprintf(‘******************************************\n‘);
fprintf(‘第一主成分分析\n‘);
fprintf(‘******************************************\n‘);
y10=(T(21)*m1+T(22)*m2);?%閾值y0
for?i=1:w_row
????y1=T(21)*w(i1)+T(22)*w(i2);
????if?y1>y10
????????fprintf(‘測(cè)試數(shù)據(jù)(%f%f)屬于w1類(男)‘w(i1)w(i2));
????????if(w(i3)==1)
????????????right=right+1;
????????????fprintf(‘??正確\n‘);
????????else
????????????wrong=wrong+1;
????????????fprintf(‘??錯(cuò)誤\n‘);
????????end
????else
????????fprintf(‘測(cè)試數(shù)據(jù)(%f%f)屬于w2類(女)‘w(i1)w(i2));
????????if(w(i3)==-1)
????????????right=rig
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????426??2004-10-08?09:03??KL\FEMALE.TXT
?????文件???????4407??2011-10-14?00:20??KL\kl.m
?????文件????????424??2004-10-08?09:04??KL\MALE.TXT
?????目錄??????????0??2011-10-14?00:21??KL
-----------?---------??----------?-----??----
?????????????????5257????????????????????4
評(píng)論
共有 條評(píng)論