import numpy as npimport 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...