1.背景

PCA(Principal Component Analysis),PAC的作用主要是降低数据集的维度,然后挑选出主要的特征。
PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值,什么叫方差最大的方向的特征值呢。就像下图中的曲线B,一样,它的覆盖范围最广。
基本步骤:(1)首先计算数据集的协方差矩阵
(2)计算协方差矩阵的特征值和特征向量
(3)保留最重要的n个特征
what is 协方差矩阵:

定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值。例如x是变量,μ是均值,协方差矩阵等于E[(x-μ)(x-μ)^t],物理意义是这样的,例如x=(x1,x2,...,xi)那么协方差矩阵的第m行n列的数为xm与xn的协方差,若m=n,则是xn的方差。如果x的元素之间是独立的,那么协方差矩阵只有对角线是有值,因为x独立的话对于m≠n的情况xm与xn的协方差为0。另外协方差矩阵是对称的。
可以参考wiki:(http://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5)

2.代码实现

伪代码如下(摘自机器学习实战):
'''
@author: Garvin
'''
from numpy import *
import matplotlib.pyplot as pltdef 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 meancovMat = cov(meanRemoved, rowvar=0)eigVals,eigVects = linalg.eig(mat(covMat))eigValInd = argsort(eigVals)            #sort, sort goes smallest to largesteigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensionsredEigVects = eigVects[:,eigValInd]       #reorganize eig vects largest to smallestlowDDataMat = meanRemoved * redEigVects#transform data into new dimensionsreconMat = (lowDDataMat * redEigVects.T) + meanValsreturn lowDDataMat, reconMatdef plotBestFit(dataSet1,dataSet2):      dataArr1 = array(dataSet1)dataArr2 = array(dataSet2)n = shape(dataArr1)[0] n1=shape(dataArr2)[0]xcord1 = []; ycord1 = []xcord2 = []; ycord2 = []xcord3=[];ycord3=[]j=0for 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.代码下载

下载地址:请点击我

/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/

【机器学习算法-python实现】PCA 主成分分析、降维相关推荐

  1. 决策算法python_GitHub - nxety/MachineLearning_Python: 机器学习算法python实现

    机器学习算法Python实现 目录 1.代价函数 其中: 下面就是要求出theta,使代价最小,即代表我们拟合出来的方程距离真实值最近 共有m条数据,其中代表我们要拟合出来的方程到真实值距离的平方,平 ...

  2. 机器学习(五)PCA数据降维

    PCA数据降维 原文地址:http://blog.csdn.net/hjimce/article/details/45000221 作者:hjimce 一.PCA相关理论 PCA算法又称主成分分析,是 ...

  3. 机器学习算法 | Python实现k-近邻算法

    机器学习算法 | Python实现k-近邻算法 目录 机器学习算法 | Python实现k-近邻算法 基本介绍 工作原理 程序设计 参考资料 基本介绍 KNN,全名k近邻算法.是⼀种⾮常简单有效的机器 ...

  4. 【机器学习基础】数学推导+纯Python实现机器学习算法19:PCA降维

    Python机器学习算法实现 Author:louwill Machine Learning Lab 作为一种常见的多元统计分析方法,主成分分析法(Principal Component Analys ...

  5. 【数学与算法】PCA主成分分析(降维)的通俗理解

    1.PCA降维 PCA主成分分析简单的理解,就是把某物的很多个能直接获取到的特征,经过变换得到很多个新特征,这些新特征对该物体来说,有的影响很大,有的影响很小,只需要使用这些影响大的新特征,舍弃很多影 ...

  6. 新兴机器学习算法:从无监督降维到监督降维

    1.前言 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表 ...

  7. 10种经典机器学习算法——Python版

    klearn python API LinearRegression from sklearn.linear_model import LinearRegression # 线性回归 # module ...

  8. 通俗解释如何理解主成分分析PCA,Python实现PCA主成分分析2维降到1维

    知道IEEE这个世界最大电子电气学术组织禁止华为资助和中国某些一流大学教授参与审稿这个消息我是愤怒的.我也是无奈的,学校考核必须发论文到这儿,不得不发.IEEE上面的论文中国人几乎占了三成(美国人搞学 ...

  9. 【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集

    1.背景 决策书算法是一种逼近离散数值的分类算法,思路比较简单,而且准确率较高.国际权威的学术组织,数据挖掘国际会议ICDM  (the IEEE International Conference o ...

最新文章

  1. php 爬虫去重,浅谈动态爬虫与去重(续)
  2. Android SwipeRefreshLayout 官方下拉刷新控件介绍
  3. 分分钟入门【Nodejs】—一个网页是如何生成的
  4. WIN2003下×××服务器架设攻略
  5. linux shell删除归档_linux打怪技能方向规划,送给迷茫学习的你
  6. 应用程序委托和新的单例(译)
  7. Netty框架多人聊天案例,代码示例
  8. 520 miix 小兵 黑苹果_黑苹果资源
  9. Unity——JSON
  10. 联合概率分布与边缘分布
  11. Android Tombstone/Crash的log分析和定位(墓碑文件)
  12. 永续合约短线交易技巧?
  13. jquery fullpage
  14. 利用STM32精确测量电压
  15. 新型冠状肺炎——这个不一般的春节
  16. 具有编码能力的可展开结构人造肌肉
  17. linux每日命令,Linux日常命令整理
  18. 使用P.L.A.N法提升执行力
  19. 第 15 章 Admonition 警告与提示
  20. HRBU 2021暑期训练解题报告Day3

热门文章

  1. python代码架构_Python架构
  2. python构造和析构_python魔法方法 构造和析构实例讲解
  3. sql里查询一个组和组的用户数怎么查?_【牛客网SQL刷题】留存率怎么算?
  4. 苹果电脑如何删除软件_软件开发公司误将委托人系统数据删除,责任如何认定?...
  5. php jcrop,PHP结合JQueryJcrop实现图片裁切实例详解
  6. python最大堆_用Python实现最大堆
  7. 如何在Panel中嵌入子窗体
  8. 小乌龟 拉取项目_从有个叫“乌龟石”的地方讲起
  9. react ui框架_顶级React组件库推荐
  10. java程序不能编译_救命-JAVA程序不能编译!