利用 PCA来简化数据
来源:互联网 发布:爱丽小屋淘宝官方旗舰 编辑:程序博客网 时间:2024/05/17 02:37
降维的目的是对输入的数目进行削减,由此剔除数据中的噪声并提高机器学习方法的性能,同时使得数据变得更易使用,使得机器学习任务更加精确。
现有的主要的降维技术:(1) 主成分分析( PCA : Principal Component Analysis)
(2) 因子分析(FA)
(3) 独立成分分析(ICA)
主成分分析的关键步骤:
(1) 去除平均值
(2) 计算协方差矩阵
(3)计算协方差矩阵的特征值和特征向量
(4)将特征值从大到小排序
(5) 保留最上面的N个特征向量
(6) 将数据转换到上述N个特征向量构建的新空间中。
PCA可以从数据中识别器主要特征,它是通过沿着数据最大方差方向旋转坐标轴来实现的。选择方差最大的方向作为第一条坐标轴,后续坐标轴则与前面的坐标轴正交,协方差矩阵上的特征值分析可以用一系列的正交坐标轴来获取。
主成分分析(PCA)的代码实现如下:
from numpy import *def loadDataSet(fileName, delim='\t'): fr = open(fileName) stringArr = [line.strip().split(delim) for line in fr.readlines()] datArr = [map(float,line) for line in stringArr] return mat(datArr) #PCA算法def pca(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 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 #将NaN替换成平均值得函数def replaceNanWithMean(): 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
0 0
- 利用PCA来简化数据
- 利用 PCA来简化数据
- 利用PCA简化数据
- 机器学习第十三章:利用PCA来简化数据
- 《机器学习实战》利用PCA来简化数据
- 《机器学习实战》读书笔记之利用PCA来简化数据
- py2.7《机器学习实战》利用PCA来简化数据
- 机器学习之利用PCA来简化数据
- 机器学习实战-利用PCA来简化数据
- 机器学习实战-13利用PCA来简化数据
- 机器学习实战笔记-利用PCA来简化数据
- 机器学习实战——第十三/十四章:利用PCA和SVD来简化数据
- 《机器学习实战》笔记之十三——利用PCA来简化数据
- [完]机器学习实战 第十三章 利用PCA来简化数据
- 【机器学习实战】第13章 利用 PCA 来简化数据
- 【机器学习实战】第13章 利用 PCA 来简化数据
- chapter13 机器学习之利用PCA简化数据
- 【机器学习实战-python3】利用PCA简化数据
- Qt QLabel文字自动换行 Qwidget设置item不可拖动
- Linux驱动修炼之道-SPI驱动框架源码分析(中)
- Web查看号码归属地
- 保存密码操作
- TP 中D()和M()方法的区别
- 利用 PCA来简化数据
- 题目1003:A+B
- 深入Java集合系列之四:ConcurrentHashMap
- Android Dialog和pPopuwindow
- Intellij IDEA中使用Mybatis-generator自动生成Mtbatis代码
- 关于从svn上新下载的项目往往报类找不到,而类又存在的错误问题
- 慕课网-初识Java微信公众号开发
- 题目1004:Median
- spring中bean的作用域属性single与prototype的区别