PCA降維的例子

2021-10-05 16:38:24 字數 1054 閱讀 4383

import numpy as np

import matplotlib.pyplot as plt

#載入資料

data=np.genfromtxt("data.csv",delimiter=",")

x_data=data[:,0]

y_data=data[:,-1]

plt.scatter(x_data,y_data)

plt.show()

print(x_data.shape)

#資料中心化

def zeromean(datamat):

#按列求平均,即各個特徵的平均

meanval=np.mean(datamat,axis=0)

newdata=datamat-meanval

return newdata,meanval

newdata,meanval=zeromean(data)

#np.cov用於求協方差矩陣,引數rowvar=0說明資料一行代表乙個樣本、

covmat=np.cov(newdata,rowvar=0)

#print(covmat)

#np.linalg.eig求矩陣的特徵值和特徵向量

ei**als,ei**ectors=np.linalg.eig(np.mat(covmat))

print(ei**als)#特徵值

print(ei**ectors)#特徵向量

#對特徵值從小到大進行排序

ei**alindice=np.argsort(ei**als)

#選取最大的top個特徵值的小標:topk,k為需要降到的維度

top=1

n_ei**alindice=ei**alindice[-1:-(top+1):-1]

#最大的n個特徵值所對應的特徵向量

n_ei**ect=ei**ectors[:,n_ei**alindice]

print(n_ei**ect)

lowdatamat=newdata*n_ei**ect

print(lowdatamat)#降維後的資料

PCA降維演算法

文章由兩部分構成,第一部分主要講解pca演算法的步驟,第二部分講解pca演算法的原理。那麼首先進入第一部分 pca演算法的步驟 樣本矩陣x的構成 假設待觀察變數有m個,其實相當於乙個資料在m維各維度上的座標,我們的目標是在保證比較資料之間相似性不失真的前提下,將描述資料的維度盡量減小至l維 l樣本矩...

PCA降維原理

在之前的介紹中,一幅影象只能表示乙個物件。那麼對於w x h的灰度影象,只能表示為w x h位的向量,那麼乙個有100 100的影象就需要10000維的向量空間。對於一幅人臉而言,是否所有維的資料都是有用的呢?在矩陣論當中我們知道,矩陣可以近似的表示為乙個特徵值與特徵向量的乘積。根據這個原理,如果我...

資料降維 PCA

模型原型 class sklearn.decomposition.pca n components none,copy true,whiten false 引數 copy 如果為false,則直接使用原始資料來訓練,結果會覆蓋原始資料所在的陣列 whiten 如果為true,則會將特徵向量除以n s...