输入:原矩阵m*n   压缩后的维度p

  • 其中m为记录数量,n是原数据的维度,所谓压缩,并不会改变数据量(即记录的数量),而是压缩表示数据的维度,如从原来的3维空间压缩到2维空间,原来是1000个点,压缩后仍是1000个点,只是原来需要三个坐标表示一个点,而压缩后只需要2个坐标就可以表示一个点
  • 目的是压缩,显然p应该是一个小于n的数

计算过程

  1. 去平均值menaRemoved=原矩阵-平均值(按列)
  2. 协方差矩阵:计算menaRemoved的协方差矩阵
  3. 特征值、特征向量:计算协方差矩阵的特征值、特征向量
  4. 降维矩阵:取p个最大的特征值对应的特征向量组成降维矩阵
  5. 压缩矩阵=menaRemoved*降维矩阵  (这里压缩矩阵就是指原矩阵在低维空间的表示)
  6. 重构原矩阵=压缩矩阵*降维矩阵的转置+平均值

代码说明

from numpy import *#从一个文本文件中读入一个数据集,数据集示例如下:
'''
8.805945    10.575145
9.584316    9.614076
11.269714   11.717254
9.120444    9.019774
7.977520    8.313923
'''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)#基于numpy实现pca算法
def pca(dataMat, topNfeat=9999999):                           #原数据  m*nmeanVals = mean(dataMat, axis=0)                          #均值:1*nmeanRemoved = dataMat - meanVals                           #去除均值  m*ncovMat = cov(meanRemoved, rowvar=0)                       #协方差矩阵 n*neigVals,eigVects = linalg.eig(mat(covMat))                 #特征矩阵  n*neigValInd = argsort(eigVals)            #将特征值排序eigValInd = eigValInd[:-(topNfeat+1):-1]  #仅保留p个列(将topNfeat理解为p即可)   redEigVects = eigVects[:,eigValInd]       # 仅保留p个最大特征值对应的特征向量,按从大到小的顺序重组特征矩阵n*plowDDataMat = meanRemoved * redEigVects        #将数据转换到低维空间lowDDataMat: m*preconMat = (lowDDataMat * redEigVects.T) + meanVals    #从压缩空间重构原数据reconMat:  m*nreturn lowDDataMat, reconMat

《机器学习实战》学习总结(六)PCA算法原理相关推荐

  1. 机器学习实战第15章pegasos算法原理剖析以及伪代码和算法的对应关系

    Pegasos原文是: http://ttic.uchicago.edu/~nati/Publications/PegasosMPB.pdf 还是挺长的,论文结构是: 第1~6页:主要原理 第7~15 ...

  2. python的knn算法list_机器学习实战学习笔记1——KNN算法

    一.KNN算法概述: 1.KNN算法的工作原理是: (1)存在一个训练样本集,并且知道样本集中每一数据与所属分类的对应关系,即每个数据都存在分类标签. (2)若此时输入不带标签的新数据之后,将新数据的 ...

  3. 机器学习:朴素贝叶斯模型算法原理(含实战案例)

    机器学习:朴素贝叶斯模型算法原理 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页

  4. 机器学习实战学习提纲

    机器学习实战学习提纲 学习目录 第一部分 分类 第1章 机器学习基础 第2章 k-近邻算法 第3章 决策树 第4章 基于概率论的分类方法:朴素贝叶斯 第5章 Logistic回归 第6章 支持向量机 ...

  5. 机器学习实战-57: 人工神经网络分类算法(Artificial Neural Network)

    机器学习实战-57: 人工神经网络分类算法 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 人工神经网络(Artificial Neural Network)分类算法属于监督学习算法 ...

  6. 吴恩达《机器学习》学习笔记六——过拟合与正则化

    吴恩达<机器学习>学习笔记六--过拟合与正则化 一. 过拟合问题 1.线性回归过拟合问题 2.逻辑回归过拟合问题 3.过拟合的解决 二. 正则化后的代价函数 1.正则化思想 2.实际使用的 ...

  7. 机器学习实战之路 —— 4 Boosting算法

    机器学习实战之路 -- 4 Boosting算法 1. Boosting算法概述 2. 主要算法实现 2.1 AdaBoost 2.2 GBDT 2.3 XGBoost 3. 实战 - 鸢尾花数据集分 ...

  8. 机器学习实战2.3. k-近邻算法例子-识别手写数字

    机器学习实战2.3. k-近邻算法例子-识别手写数字 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多机器学习干货 csdn:https://blog.csdn.net/ ...

  9. PCA算法原理及python实现

    [原理]PCA算法原理 1.PCA算法 PCA(principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据压缩算法.在PCA中,数据从原来的坐标系转换到新的坐 ...

最新文章

  1. 《高效团队开发工具与方法》
  2. python 编程一日一练-2018-12-01:python每日一练(1)
  3. 2019年春季学期第二周作业(文件指针)
  4. 程序步骤_小程序平台搭建步骤是什么?
  5. 专科学历事业单位工资计算机,事业单位人来告诉你:学历跟入编之后待遇关系有多大!很直接...
  6. python入门系列:深入Python的set和dict
  7. 【机器学习】朴素贝叶斯(Naive Bayes)
  8. fastdfs 一个group内实现按照不同的项目,指定路径存储.
  9. HDU ACM Steps攻略 ACM Steps的全部内容
  10. C++学习笔记(一)
  11. 最小费用最大流背诵用模板
  12. MIUI 12 的方向走错了吗?
  13. linux嵌入式开发从入门到精通
  14. 间接效应值大于1是正常的吗?Q群答疑20200405
  15. SQL Serevr 2012 安装教程
  16. (转发)详解汽车UDS诊断协议(二)
  17. 超强Commodore C64 emulator for Flash Player 9
  18. 数据智能,慧眼识“真”——个推大数据风控产品亮相
  19. 计算机文件一点右键就内存突增,电脑内存占用忽然升高怎么解决
  20. 冷热水龙头_冷热水龙头原理是什么 冷热水龙头原理及结构图

热门文章

  1. FineReport的公式编辑框的语法简介
  2. java中单,单|的意思,按位操作符详述
  3. oracle update范例,oracle 12c单范例数据库打12.1.0.2.4补丁记录
  4. 苹果笔记本怎么找文件夹_苹果笔记本电脑回收价格是否合理怎么看
  5. html 音乐能连续播放吗,音乐在不同HTML页面的连续播放问题
  6. 圆变成长方形什么变了_中班数学教案详案图形变变变含PPT课件
  7. python黑色背景白色背景_用Python去除图像的黑色或白色背景实例
  8. 毕业设计基础测试 定位+后端处理+退出删除
  9. 【文献阅读】ResNet-Deep Residual Learning for Image Recognition--CVPR--2016
  10. pytorch学习笔记(三):线性回归