日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

主成分分析(PCA)深入剖析+Matlab模拟

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 主成分分析(PCA)深入剖析+Matlab模拟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.降維引發的思考

對于現在維數比較多的數據,我們首先需要做的就是對其進行降維操作。降維,簡單來說就是說在盡量保證數據本質的前提下將數據中的維數降低。降維的操作可以理解為一種映射關系,例如函數z=f(x,y),即由原來的二維轉換成了一維。處理降維的技術有很多種,如前面的SVD奇異值分解主成分分析(PCA)因子分析(FA)獨立成分分析(ICA)等等。

2.PCA的主調與意圖

PCA是一種較為常用的降維技術,PCA的思想是將n維特征映射到k維上,這k維是全新的正交特征。這k維特征稱為主元,是重新構造出來的k維特征。在PCA中,數據從原來的坐標系轉換到新的坐標系下,新的坐標系的選擇與數據本身是密切相關的。其中,第一個新坐標軸選擇的是原始數據中方差最大的方向,第二個新坐標軸選取的是與第一個坐標軸正交且具有最大方差的方向,依次類推,我們可以取到這樣的k個坐標軸
PCA的操作流程符合我們在矩陣論中學習的那一套,大致如下:
1.去平均值,即每一位特征減去各自的平均值;
2.計算協方差矩陣;
3.計算協方差矩陣的特征值與特征向量;
4.對特征值從大到小排序(更多時候我們愿意叫他貢獻度);
5.保留最大的k個特征向量;將數據轉換到k個特征向量構建的新空間中。

3.MATLAB仿真實驗

%% pca dataSet = load('testSet.txt');%導入數據 % pca [FinalData, reconData] = PCA(dataSet, 1); %% 作圖 hold on plot(dataSet(:,1), dataSet(:,2), '.'); plot(reconData(:,1), reconData(:,2), '.r'); hold off
function [ FinalData,reconData ] = PCA( dataSet, k )[m,n] = size(dataSet);%% 去除平均值%取平均值dataSetMean = mean(dataSet);%減去平均值dataSetAdjust = zeros(m,n);for i = 1 : mdataSetAdjust(i , :) = dataSet(i , :) - dataSetMean;end%% 計算協方差矩陣dataCov = cov(dataSetAdjust);%% 計算協方差矩陣的特征值與特征向量[V, D] = eig(dataCov);% 將特征值矩陣轉換成向量d = zeros(1, n);for i = 1:nd(1,i) = D(i,i);end%% 對特征值排序[maxD, index] = sort(d);%% 選取前k個最大的特征值% maxD_k = maxD(1, (n-k+1):n);index_k = index(1, (n-k+1):n);% 對應的特征向量V_k = zeros(n,k);for i = 1:kV_k(:,i) = V(:,index_k(1,i));end%% 轉換到新的空間FinalData = dataSetAdjust*V_k;% 在原圖中找到這些點reconData = FinalData * V_k';for i = 1 : mreconData(i , :) = reconData(i , :) + dataSetMean;end end

總結

以上是生活随笔為你收集整理的主成分分析(PCA)深入剖析+Matlab模拟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。