2017-04-04 91 views
1

我想應用主成分分析,以減少我的數據的維度。 200x146,200個具有146個特徵(維度)的觀察值(樣本),每個觀察值可以屬於三個類別之一。我想要做的是將數據可視化,以便在向我的數據添加新樣本後查看類質心如何移動。由於不可能繪製這樣的高維度數據,因此我正在尋找一個能夠將我的數據表示在幾乎不同的班級中的維度。主成分分析,獲得係數告訴我什麼?

我知道PCA計算特徵向量的特徵值,而特徵值代表方差。方差越高,數據分佈越多,可視化效果越好。具有最高特徵值的特徵向量是主分量,然後由PCA找到與該分量正交的軸。 (我有沒有正確理解PCA的基本理念?)

但是我不明白,我做什麼的信息獲取,當我使用MATLAB函數PCA() 我得到的係數,但他們怎麼告訴我,之後如何繼續? PCA_CLASS_SCATTERPLOT)';

data=trndata; 
[coeff,score]=pca(data(:,1:end-1)); 

newinputdata=coeff(:, 1:3)*score(:, 1:3 
newinputdata=newinputdata'; 

class1i=find(data(:,end)==1); 
class2i=find(data(:,end)==2); 
class3i=find(data(:,end)==3); 


class1=newinputdata(class1i,:); 
class2=newinputdata(class2i,:); 
class3=newinputdata(class3i,:); 


x=1; 
y=2; 
figure; 
plot(class1(:,x), class1(:,y),'ro') 
hold on 
plot(class2(:,x), class2(:,y),'go') 
hold on 
plot(class3(:,x), class3(:,y),'bo') 
+1

儘管PCA肯定是您想要實現的好工具,但事實上,您有三個類,並且希望將數據投影到2D聽起來像是應該真正查看[線性判別分析](https:// en .wikipedia.org/wiki/Linear_discriminant_analysis)也用於降維。 – kazemakase

回答

1

MATLAB PCA()函數使我們能夠靈活,以提取所描述here許多有用的信息。

如果我們輸出一個參數(coeff),它將以146x200矩陣的形式返回加載。現在,如果我們問,兩個輸出參數.i.e。

[係數_,得分= PCA(X)

我們將得到的負載以及相應的分數值。在這裏,我們可以通過coeff *得分重建輸入數據。

現在爲了降低維度,您將選擇第一個輸出參數的n個元素,並以coeff(:,1:n)* score(:, 1:n)'的形式執行近似重構。

我希望它回答您的查詢。

+0

感謝您的回覆,我已將我的代碼添加到帖子中,如果您只是看看它。我創建了一個新的輸入數據矩陣,並假定新矩陣的兩個第一維是繪製數據的最佳維度,因爲新的輸入數據矩陣根據最高得分重新排列,對嗎? – xava

相關問題