PCA 主成分分析 及原始碼

2021-09-30 12:19:04 字數 1241 閱讀 7427

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是從特徵的角度協方差角度 求出協方差矩陣的特徵值和特徵...