吳恩達老師機器學習筆記主成分分析PCA
阿新 • • 發佈:2018-11-05
接著學習主成分分析,這個演算法在之前計量地理學的作業裡寫過,不過前者稍微囉嗦了一點。
原始二維資料:
放程式碼:
load('ex7data1.mat'); [m n]=size(X); X=(X-mean(X))./std(X); sigma=1/m*(X'*X); % 求取協方差矩陣 [U,S,V]=svd(sigma); % 求取特徵向量 Ureduce=U(:,1:1); % 這裡降為1維資料 z=X*Ureduce; % 投影到1維座標系 y=z*Ureduce'; % 顯示降維後的資料 hold on; scatter(X(:,1),X(:,2)); %繪製不同類別的點集 scatter(y(:,1),y(:,2)); hold off;
主成分分析得到的一維資料(紫色部分):
這一點湊篇文章太不值得了,於是接著做第二個練習
2 對人物照片進行主成分分析
原始影象:
程式碼如下:
load('ex7faces.mat'); X=X(1:100,:); [m n]=size(X); X=(X-mean(X))./std(X); sigma=1/m*(X'*X); % 求取協方差矩陣 [U,S,V]=svd(sigma); % 求取特徵向量 Ureduce=U(:,1:10); % 這裡降為10維資料 z=X*Ureduce; % 投影到1維座標系 y=z*Ureduce'; % 顯示降維後的資料 displayData(y); % 練習給的顯示多幅影像的函式 %{ 因為顯示多幅影像函式太麻煩了,就不寫了, 這裡寫了顯示單幅影像意思意思 colormap(gray); % 顯示灰度影象 img=X(1,:)./max(abs(X(1,:))); array=reshape(img,sqrt(n),sqrt(n)); k = imagesc(array, [-1 1]); %}
結果影象: