-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathPCAWithRaw.py
More file actions
29 lines (22 loc) · 848 Bytes
/
PCAWithRaw.py
File metadata and controls
29 lines (22 loc) · 848 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from numpy import *
# PCA降维数据
def loadDataSet(fileName, delim='\t'):
fr = open(fileName)
stringArr = [line.strip().split(delim) for line in fr.readlines()]
datArr = [list(map(float, line)) for line in stringArr]
return mat(datArr)
def pca(dataMat, topNfeat=9999):
meanVals = mean(dataMat, axis=0)
meanRemoved = dataMat - meanVals
covMat = cov(meanRemoved, rowvar=0)
eigVals, eigVects = linalg.eig(mat(covMat))
eigValInd = argsort(eigVals)
eigValInd = eigValInd[:-(topNfeat+1):-1]
redEigVects = eigVects[:,eigValInd]
lowDDataMat = meanRemoved * redEigVects
reconMat = (lowDDataMat * redEigVects.T) + meanVals
return lowDDataMat, reconMat
if __name__ == '__main__':
dataMat = loadDataSet('../data/kmeanstestSet.txt')
lowDMat, reconMat = pca(dataMat, 1)
print(lowDMat)