博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
主成分分析(PCA)实现代码
阅读量:6232 次
发布时间:2019-06-21

本文共 1284 字,大约阅读时间需要 4 分钟。

摘自《机器学习实践》第13章:

1 from numpy import * 2 import matplotlib 3 import matplotlib.pyplot as plt 4  5 def loadDataSet(fileName, delim='\t'): 6     fr = open(fileName) 7     stringArr = [line.strip().split(delim) for line in fr.readlines()] 8     datArr = [map(float, line) for line in stringArr] 9     return mat(datArr)10 11 def pca(dataMat, topNfeat = 999999):12     meanVals = mean(dataMat, axis = 0)13     meanRemoved = dataMat - meanVals14     covMat = cov(meanRemoved, rowvar = 0)15     eigVals, eigVects = linalg.eig(mat(covMat))16     eigValInd = argsort(eigVals)17     eigValInd = eigValInd[: - (topNfeat + 1): -1]18     redEigVects = eigVects[:, eigValInd]19     lowDDataMat = meanRemoved * redEigVects20     reconMat = (lowDDataMat * redEigVects.T) + meanVals21     return lowDDataMat, reconMat22 23 if __name__ == "__main__":24     dataMat = loadDataSet('testSet.txt')25     lowDMat, reconMat = pca(dataMat, 1)26     fig = plt.figure()27     ax = fig.add_subplot(111)28     ax.scatter(dataMat[:, 0].flatten().A[0], dataMat[:, 1].flatten().A[0], marker='^', s = 90)29     ax.scatter(reconMat[:, 0].flatten().A[0], reconMat[:, 1].flatten().A[0], marker='o', s = 50, c='red')30     plt.show()

 

输入数据格式: 文本文件,每行是两个以TAB键分隔的浮点数。

附运行结果:

转载于:https://www.cnblogs.com/mush0m/p/3694959.html

你可能感兴趣的文章
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
ToRPC:一个双向RPC的Python实现
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
查看>>
Myeclipse代码提示及如何设置自动提示
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>