資料降維 主成分分析(PCA)

2021-09-17 21:14:08 字數 1578 閱讀 4465

主成分分析(pca)是一種比較經典的降維方法,它的思想主要是將資料對映到低維空間時使得資料在低維空間的方差最大。演算法如下:

python**如下,我主要使用了兩種方法特徵值分解和奇異值分解。

import numpy as np

import matplotlib.pyplot as plt

from sklearn.utils.extmath import svd_flip

class pca:

def __init__(self,dim,decomposition="eig"):

self.decom_method=decomposition

self.dim=dim

def fit(self,x):

self.input=x

return self

def transform(self):

original_dim=self.input.shape[1]

#樣本中心化

sample_mean=np.mean(self.input,axis=0).reshape((1,original_dim))

center=self.input-sample_mean

if self.decom_method=="eig":

covariance_mat=center.t.dot(center)

ei**alue,ei**ector=np.linalg.eig(covariance_mat)

project_matrix=ei**ector[:,:self.dim]

project_data=center.dot(project_matrix)

elif self.decom_method=="svd":

u,d,v=np.linalg.svd(center)

u=-u#強制翻轉符號,保證輸出一致,sklearn中使用的svd_flip來做的,不然老是和特徵分解的差乙個符號

#udv=(-u)d(-v)

d=np.diag(d)

project_data=u[:,:self.dim].dot(d[:self.dim,:self.dim])

return project_data

x=np.array([[2,2,2],[2,2,3],[9,4,9],[10,4,9],[3,45,23],[3,44,23]])

pca=pca(dim=2,decomposition="svd")

pca.fit(x)

data=pca.transform()

print(data)

plt.scatter(data[:,0],data[:,1])

plt.show()

為了檢驗試驗效果,我們故意製造了三對分別在三個資料軸差1的資料,對映到二維之後,我們可以看到他們之間的距離得到了維持。 

PCA主成分分析(降維)

opencv中使用 實現降維分類預處理 參考 降維 我的理解是,通過降維得到基本特徵可以加快學習演算法。並且由於降維後的資料本身就是正交的,和聚類一樣可以實現分類 識別問題。在自我學習中也可以採用大量無標註的影象,對這些影象降維分類,並結合部分編碼資料得到特徵。例如 將很2500張人臉資訊,通過25...

降維 PCA 主成分分析

其實早該整理一下pca了,怎奈一直沒有時間,可能是自己對時間沒有把握好吧,下面進入正題。所謂降維,就是降低資料的維數。在機器學習中尤其常見,之前做過對一幅提取小波特徵,對於一幅大小為800 600的,如果每個點提取五個尺度 八個方向的特徵,那麼每乙個畫素點提取40個特徵,那麼一副的話就是40 800...

降維方法 主成分分析(PCA)

推薦一篇絕對好的文章 理解pca的數學原理 pca principle component analysis 主成分分析,主要應用於資料降維,它是一種非監督的降維方法,主要捕獲觀測資料之間的變異程度。當資料集的維度過高之後,運用各種演算法處理起來的時間複雜度可能會很高,所以需要對資料進行降維處理,而...