python PCA主成分分析進行降維度

2021-08-20 14:31:56 字數 2060 閱讀 8496

#pca對資料進行降維

from numpy import *

defconfloat

(x):

r=[float(i) for i in x]

return r

defloaddataset

(filename, delim='\t'):

fr = open(filename)

stringarr = [line.strip().split(delim) for line in fr.readlines()]

datarr = [confloat(line) for line in stringarr]

return mat(datarr)

defpca

(datamat, topnfeat=9999999):

#計算平均值

meanvals = mean(datamat, axis=0)

#去平均值

meanremoved = datamat - meanvals #remove mean

#計算協方差矩陣

covmat = cov(meanremoved, rowvar=0)

#計算特徵值和特徵向量

eigvals,eigvects = linalg.eig(mat(covmat))

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

eigvalind = argsort(eigvals) #sort, sort goes smallest to largest

#獲得最大的topfeat 特徵值

eigvalind = eigvalind[:-(topnfeat+1):-1] #cut off unwanted dimensions

#獲取對應的特徵向量

redeigvects = eigvects[:,eigvalind] #reorganize eig vects largest to smallest

#將資料轉換到新的特徵空間

lowddatamat = meanremoved * redeigvects#transform data into new dimensions

reconmat = (lowddatamat * redeigvects.t) + meanvals

return lowddatamat, reconmat

defreplacenanwithmean

(): datmat = loaddataset('secom.data', ' ')

numfeat = shape(datmat)[1]

for i in range(numfeat):

meanval = mean(datmat[nonzero(~isnan(datmat[:,i].a))[0],i]) #values that are not nan (a number)

datmat[nonzero(isnan(datmat[:,i].a))[0],i] = meanval #set nan values to mean

return datmat

datmat=loaddataset('testset.txt')

lowdatamat,reconmat=pca(datmat,2)

print(lowdatamat)

#將降維後的資料和原始資料一起繪製出來

import matplotlib

import matplotlib.pyplot as plt

fig=plt.figure()

ax=fig.add_subplot(111)

ax.scatter(datmat[:,0].flatten().a[0],datmat[:,1].flatten().a[0],marker='^',s=90)

ax.scatter(reconmat[:,0].flatten().a[0],reconmat[:,1].flatten().a[0],marker='o',s=50,c='red')

plt.show()

#print(datmat[:,0].flatten().a[0])

主成分分析

主成分分析 pca 分析乙個隨機向量的中的主成分 主成分一般不是隨機向量中的某乙個分量,而是不同分量的線性組合,根據資訊理論的觀點,資訊的多少與方差有關,所以 主成分是方差最大的幾個成分 主成分分析的方法是求隨機向量的協方差矩陣 用樣本協方差矩陣代替 對於差異較大的資料,可採用相關矩陣代替協方差矩陣...

主成分分析

理論要點 1 主成分分析是一種無監督學習,因此不能用交叉驗證來檢驗誤差 2 在處理資料之前,要對資料做中心化處理 3 p太大的話,做特徵分解用svd 4 一共有min n 1,p 個主成分,因為中心化以後,rank要降一維 5 主成分的載荷向量就是協方差矩陣的特徵向量,對應特徵值最大的是第一主成分,...

主成分分析

1.概念 將一組可能存在相關性的隨機變數轉變成互不相關的隨機變數。這個概念裡有三個地方需要理解清楚。1 隨機變數的指代 在資料集中,每乙個樣本,即將資料集理解成乙個 的話,乙個樣本就是一行,則每一列就是乙個特徵,也就是乙個隨機變數,一列的所有取值就是隨機變數的所有可能取值 說的所有可能取值只針對訓練...