机器学习经典算法11-PCA
来源:互联网 发布:淘宝卖家怎么查看访客 编辑:程序博客网 时间:2024/05/21 07:15
1.基本介绍
我们人眼最多能看到3维的东西,但是现实生活中有很多大于3维的东西,那么如何对这些数据进行可视化?此外,对多维的数据是否可以压缩以减小存储空间?这都可以用降维的方式达到目的,其中使用广泛的就是PCA(Principle Component Analysis),PCA可以用来降低算法计算开销、去除噪声、使得结果易于展示和理解等。
PCA可以看成在现有的n维上的数据点找到n-1维的平面,使得n维上的数据点到n-1维面上的投影距离之和最小。
这里假设训练集中有m个样本或实例,每个样本的特征或属性数为n。
2.基本流程
将数据抓换成前N个(即从n维变为N维)主成分的伪代码:
1.数据预处理。这里预处理包含两个部分:均值归一化和属性范围调整。均值归一化是相应属性减去其平均值;而属性范围则在归一化基础上除以属性方差。
2.计算特征之间的协方差矩阵。该矩阵是一个n*n的对称矩阵
3.计算协方差矩阵的特征值和特征向量
4.将特征值从大到小排序
5.保留最上面的N个特征向量
6.将原数据映射到由N个特征向量构成的新空间中
3.代码示例
这里协方差矩阵covMat是n*n,而N个特征向量组成的矩阵为redEigVects为n*N维,降维后的数据为lowDDataMat为m*N维,reconMat是降维后还原为n维的数据
from numpy import *import matplotlib.pyplot as pltdef loadDataSet(fileName, delim='\t'): fr = open(fileName) stringArr=[line.strip('\n').split(delim) for line in fr.readlines()] fr.close() datArr=[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) print covMat 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, reconMatdataMat=loadDataSet("testSet.txt")low, rec=pca(dataMat,1)i=0while i<shape(dataMat)[0]: print dataMat[i,:],"_",rec[i,:] i=i+1
testSet.txt中的数据可以为如下:
1.658985 4.285136
-3.453687 3.424321
4.838138 -1.151539
-5.379713 -3.362104
0.972564 2.924086
-3.567919 1.531611
0.450614 -3.302219
-3.487105 -1.724432
2.668759 1.594842
-3.156485 3.191137
3.165506 -3.999838
-2.786837 -3.099354
-3.453687 3.424321
4.838138 -1.151539
-5.379713 -3.362104
0.972564 2.924086
-3.567919 1.531611
0.450614 -3.302219
-3.487105 -1.724432
2.668759 1.594842
-3.156485 3.191137
3.165506 -3.999838
-2.786837 -3.099354
- 机器学习经典算法11-PCA
- 经典机器学习算法系列8-PCA
- 机器学习算法-PCA
- 机器学习算法 -- PCA 学习笔记
- 白话机器学习算法(六) PCA
- 白话机器学习算法(六) PCA
- 机器学习——PCA算法
- 机器学习-LDA与PCA算法
- 【机器学习】主成分(PCA)算法分析
- PCA算法(经典!!)
- 机器学习手记[11]---PCA变换基础
- 机器学习笔记(11)-PCA/SVD
- 机器学习之PCA
- [机器学习] PCA理论
- 机器学习PCA实现
- 机器学习----LDA、PCA
- 机器学习之PCA
- 机器学习降维算法一:PCA (Principal Component Analysis)
- POJ 2251 Dungeon Master
- Web前端开发求职笔记(第一天)
- coookie VS session
- hdu 4489 The King’s Ups and Downs ( 递推 + 排列组合 )
- opencv参考手册里面有个 [人脸检测] 的程序
- 机器学习经典算法11-PCA
- 17. 只对代码说明不了的作注释
- jdk 1.6 官方下载地址
- 题目1154:Jungle Roads
- html页面显示年月日时分秒和星期几
- 虚继承和普通继承的一些不同(持续更新)
- JavaEE大全
- 基于H.264的嵌入式无线视频监控系统
- 可能是堆被损坏,这也说明 XX.exe 中或它所加载的任何 DLL 中有 bug