資源簡介
主成分分析(PCA)python實現(含數據集),結構清晰,適合初學者

代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
“““
Created?on?Fri?Dec??1?21:29:57?2017
@author:?Q
“““
import?numpy?as?np
import?matplotlib.pyplot?as?plt
def?loadData(filenamedelim?=?‘\t‘):
????with?open(filename)?as?fr:
????????stringArr?=?[line.strip().split(delim)?for?line?in?fr.readlines()]
????????dataArr?=?[list(map(floatline))?for?line?in?stringArr]
????return?np.mat(dataArr)
def?pca(dataSettopNfeat?=?99999999):
????dataMean?=?np.mean(dataSetaxis?=?0)
????meanRemoved?=?dataSet?-?dataMean
????covMat?=?np.cov(meanRemovedrowvar=0)
????eigValseigVec?=?np.linalg.eig(np.mat(covMat))
????eigValInd?=?np.argsort(eigVals)
????eigValInd?=?eigValInd[:-(topNfeat+1):-1]
????redEigVects?=?eigVec[:eigValInd]
????lowDDataMat?=?meanRemoved?*?np.mat(redEigVects)
????reconMat?=?lowDDataMat?*?redEigVects.T?+?dataMean
????return?lowDDataMatreconMat
????
????
????
????
????
#data?=?loadData(‘testSet.txt‘)
#lowdatarecondta?=?pca(data1)
#fig?=?plt.figure(0)
#ax?=?fig.add_subplot(111)
#ax.scatter(data[:0]data[:1]s=90marker=‘^‘c=‘r‘)
#ax.scatter(recondta[:0]recondta[:1]s=30marker=‘o‘c=‘b‘)
#plt.show()
def?svd(dataSetN?=?1):
????UsigmaVT?=?np.linalg.svd(dataSet)
????sig?=?np.mat(np.eye(N)*sigma[:N])
????new?=?U[::N]?*?sig?*?VT[:N:]
????return?new
????
data?=?loadData(‘testSet.txt‘)
recondta?=?svd(data1)
fig?=?plt.figure(0)
ax?=?fig.add_subplot(111)
ax.scatter(data[:0]data[:1]s=90marker=‘^‘c=‘r‘)
ax.scatter(recondta[:0]recondta[:1]s=30marker=‘o‘c=‘b‘)
plt.show()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????4??2017-12-03?18:38??PCA\.git\COMMIT_EDITMSG
?????文件????????295??2017-12-03?18:39??PCA\.git\config
?????文件?????????73??2017-12-03?18:37??PCA\.git\desc
?????文件?????????23??2017-12-03?18:37??PCA\.git\HEAD
?????文件????????478??2017-12-03?18:37??PCA\.git\hooks\applypatch-msg.sample
?????文件????????896??2017-12-03?18:37??PCA\.git\hooks\commit-msg.sample
?????文件????????189??2017-12-03?18:37??PCA\.git\hooks\post-update.sample
?????文件????????424??2017-12-03?18:37??PCA\.git\hooks\pre-applypatch.sample
?????文件???????1642??2017-12-03?18:37??PCA\.git\hooks\pre-commit.sample
?????文件???????1348??2017-12-03?18:37??PCA\.git\hooks\pre-push.sample
?????文件???????4898??2017-12-03?18:37??PCA\.git\hooks\pre-reba
?????文件????????544??2017-12-03?18:37??PCA\.git\hooks\pre-receive.sample
?????文件???????1239??2017-12-03?18:37??PCA\.git\hooks\prepare-commit-msg.sample
?????文件???????3610??2017-12-03?18:37??PCA\.git\hooks\update.sample
?????文件????????217??2017-12-03?18:38??PCA\.git\index
?????文件????????240??2017-12-03?18:37??PCA\.git\info\exclude
?????文件????????150??2017-12-03?18:38??PCA\.git\logs\HEAD
?????文件????????150??2017-12-03?18:38??PCA\.git\logs\refs\heads\master
?????文件????????143??2017-12-03?18:39??PCA\.git\logs\refs\remotes\origin\master
?????文件?????????85??2017-12-03?18:38??PCA\.git\ob
?????文件????????128??2017-12-03?18:38??PCA\.git\ob
?????文件???????9403??2017-12-03?18:37??PCA\.git\ob
?????文件????????694??2017-12-03?18:37??PCA\.git\ob
?????文件?????????41??2017-12-03?18:38??PCA\.git\refs\heads\master
?????文件?????????41??2017-12-03?18:39??PCA\.git\refs\remotes\origin\master
?????文件???????1543??2017-12-03?16:37??PCA\PCA.py
?????文件??????19472??2011-06-04?12:43??PCA\testSet.txt
?????目錄??????????0??2017-12-03?18:39??PCA\.git\logs\refs\remotes\origin
?????目錄??????????0??2017-12-03?18:38??PCA\.git\logs\refs\heads
?????目錄??????????0??2017-12-03?18:39??PCA\.git\logs\refs\remotes
............此處省略21個文件信息
評論
共有 條評論