【机器学习算法-python实现】PCA 主成分分析、降维
2017-05-07 09:51
621 查看
1.背景
PCA(Principal Component Analysis),PAC的作用主要是减少数据集的维度,然后挑选出基本的特征。 PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值。什么叫方差最大的方向的特征值呢。就像下图中的曲线B。一样。它的覆盖范围最广。基本步骤:(1)首先计算数据集的协方差矩阵 (2)计算协方差矩阵的特征值和特征向量 (3)保留最重要的n个特征
what is 协方差矩阵:
定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值。能够參考wiki:(http://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5)比如x是变量,μ是均值,协方差矩阵等于E[(x-μ)(x-μ)^t],物理意义是这种,比如x=(x1,x2,...,xi)那么协方差矩阵的第m行n列的数为xm与xn的协方差,若m=n。则是xn的方差。假设x的元素之间是独立的,那么协方差矩阵仅仅有对角线是有值,由于x独立的话对于m≠n的情况xm与xn的协方差为0。另外协方差矩阵是对称的。
2.代码实现
伪代码例如以下(摘自机器学习实战):''' @author: Garvin ''' from numpy import * import matplotlib.pyplot as plt 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) 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 def plotBestFit(dataSet1,dataSet2): dataArr1 = array(dataSet1) dataArr2 = array(dataSet2) n = shape(dataArr1)[0] n1=shape(dataArr2)[0] xcord1 = []; ycord1 = [] xcord2 = []; ycord2 = [] xcord3=[];ycord3=[] j=0 for i in range(n): xcord1.append(dataArr1[i,0]); ycord1.append(dataArr1[i,1]) xcord2.append(dataArr2[i,0]); ycord2.append(dataArr2[i,1]) fig = plt.figure() ax = fig.add_subplot(111) ax.scatter(xcord1, ycord1, s=30, c='red', marker='s') ax.scatter(xcord2, ycord2, s=30, c='green') plt.xlabel('X1'); plt.ylabel('X2'); plt.show() if __name__=='__main__': mata=loadDataSet('/Users/hakuri/Desktop/testSet.txt') a,b= pca(mata, 2)
loadDataSet函数是导入数据集。PCA输入參数:參数一是输入的数据集。參数二是提取的维度。比方參数二设为1。那么就是返回了降到一维的矩阵。PCA返回參数:參数一指的是返回的低维矩阵。相应于输入參数二。
參数二相应的是移动坐标轴后的矩阵。
上一张图。绿色为原始数据。红色是提取的2维特征。
3.代码下载
下载地址:请点击我[p]/********************************* 本文来自博客 “李博Garvin“[/p]
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/
相关文章推荐
- 【机器学习算法-python实现】PCA 主成分分析、降维
- python实现PCA(主成分分析)降维
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 机器学习算法笔记系列之深入理解主成分分析PCA-Python实现篇
- [机器学习笔记]主成分分析PCA简介及其python实现
- 机器学习(七):主成分分析PCA降维_Python
- 主成分分析 (PCA) 与其高维度下python实现(简单人脸识别)
- 主成分分析(PCA)Python代码实现
- python_主成分分析(PCA)降维
- python实现Kmeans文本聚类,通过PCA降维和Matplotlib显示聚类3d三维图像
- 高维数据的应对手段: 主成分分析(PCA)简介+numpy实现+weka使用说明
- Python 之 sklearn 实现 PCA 降维
- 主成分分析(PCA)及其在R里的实现
- 机器学习之降维算法2-主成分分析(PCA)
- 降维——PCA(主成分分析)
- 主成分分析(PCA)实现代码
- 基于GDAL实现的PCA变换(主成分分析)
- 主成分分析(pca)算法的实现步骤及代码
- 主成分分析PCA的matlab实现