pca即主成分分析是一種常見的資料降維方法,pca通過線性變換將原始資料變為各維度都線性無關的表示,可用於提取資料的主要特徵成分。
pca演算法:
若有m個樣本,每個樣本的維數為n, 矩陣
(1)將x的每一列進行零均值,即減去該列的均值;
(2)求協方差矩陣
(3)求協方差矩陣c的特徵值與特徵向量;
(4)將特徵值從大到小的順序對應的特徵向量排成矩陣,取前k行組成矩陣p;
(5)y=px為矩陣x從n維降到k維的資料。
pca**:
using system;
using system.collections.generic;
using system.linq;
using system.drawing;
using system.text;
using emgu.cv.ui;
using emgu.cv;
using emgu.util;
namespace decreasefeaturepca
public
void
dopca(out matrix ei**ects,out matrixei**alues)
mean[0, i] /= samplenum;
}//對樣本矩陣進行零均值化
for (int i = 0; i < samplenum; i++)
}//計算協方差矩陣
matrix cov = new matrix(sampledim, sampledim);
matrix sample_transpose=sample.transpose();
cov=sample_transpose*sample;
cov._mul(1.0 / samplenum);
//計算協方差矩陣的特徵值和特徵向量
ei**ects = new matrix(sampledim, sampledim);
ei**alues=new matrix (sampledim,sampledim);
matrix u=new matrix (sampledim,sampledim);
cvinvoke.cvsvd(cov.ptr, ei**alues.ptr, u.ptr, ei**ects.ptr, emgu.cv.cvenum.svd_type.cv_svd_v_t);}}
}
講pca原理很詳細的一篇文章: [[ pca主成分分析 PCA主成分分析(中)
矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...
主成分分析PCA
主要參考這篇文章 個人總結 pca是一種對取樣資料提取主要成分,從而達到降維的目的。相比於上篇文章介紹到的svd降維不同,svd降維是指減少資料的儲存空間,資料的實際資訊沒有缺少。個人感覺pca更類似與svd的去噪的過程。pca求解過程中,涉及到了svd的使用。針對資料集d 假設di 的維度為 w ...
PCA 主成分分析
在進行影象的特徵提取的過程中,提取的特徵維數太多經常會導致特徵匹配時過於複雜,消耗系統資源,不得不採用特徵降維的方法。所謂特徵降維,即採用乙個低緯度的特徵來表示高緯度。將高緯度的特徵經過某個函式對映至低緯度作為新的特徵。pca和lda區別 pca是從特徵的角度協方差角度 求出協方差矩陣的特徵值和特徵...