1.PCA介绍

来源:视频https://www.bilibili.com/video/BV1E5411E71z/

笔记:https://www.bilibili.com/read/cv23587690?spm_id_from=333.999.0.0&jump_opus=1

PCA就是找坐标系,使得数据在保留一维数据,损失是最小的。

目标:只保留一个轴的时候(二维降到一维),信息保留最多

怎么样最好

找到数据分布最分散的方向(方差最大),作为主成分(坐标轴)

  1. 去中心化(把坐标原点放在数据中心)
  2. 找坐标系(找到方差最大的方向)

问题是:怎么找到方差最大的方向?

白数据

 拉伸决定了方差最大的方向是横或者纵

旋转决定了方差最大的方向的角度

怎么求解PCA

PCA缺点:离群点影响大

PCA与SVD(奇异值分解Singular Value Decomposition)

SVD中的右奇异矩阵V,就是PCA的主成分

PCA需要先求出协方差矩阵:计算量可能很大

SVD有两个好处:

1)一些SVD的实现算法可不求出协方差矩阵C也能求出右奇异矩阵V

2)PCA仅仅使用了SVD的右奇异矩阵V,没有使用到左奇异值矩阵U,那么U有什么用呢?

2.用PCA给将二维数据降成一维

参考:https://blog.csdn.net/Shiraka/article/details/122354007

https://blog.csdn.net/weixin_42010722/article/details/123826197

https://www.cnblogs.com/wei-520/p/12470843.html

from sklearn.decomposition import PCA

1. 函数原型及参数说明

这里只挑几个比较重要的参数进行说明。

sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

n_components: int, float, None 或 string,PCA算法中所要保留的主成分个数,也即保留下来的特征个数,如果 n_components = 1,将把原始数据降到一维;如果赋值为string,如n_components='mle',将自动选取特征个数,使得满足所要求的方差百分比;如果没有赋值,默认为None,特征个数不会改变(特征数据本身会改变)。
 copy:True 或False,默认为True,即是否需要将原始训练数据复制。
 whiten:True 或False,默认为False,即是否白化,使得每个特征具有相同的方差。

2. PCA对象的属性

explained_variance_ratio_:返回所保留各个特征的方差百分比,如果n_components没有赋值,则所有特征都会返回一个数值且解释方差之和等于1。
 n_components_:返回所保留的特征个数。

3.PCA常用方法

fit(X): 用数据X来训练PCA模型。
 fit_transform(X):用X来训练PCA模型,同时返回降维后的数据。
 inverse_transform(newData) :将降维后的数据转换成原始数据,但可能不会完全一样,会有些许差别。
 transform(X):将数据X转换成降维后的数据,当模型训练好后,对于新输入的数据,也可以用transform方法来降维。

比如:对矩阵X = [[6,-4],[-3,5],[-2,6],[7,-3]]进行降维,从2维降到1维。

代码:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
from sklearn.decomposition import PCArng = np.random.RandomState(1)
X = [[6,-4],[-3,5],[-2,6],[7,-3]]
X = np.array(X)
plt.scatter(X[:, 0], X[:,-1])pca = PCA(n_components=2)
pca.fit(X)print(pca.explained_variance_)#PCA解释方差;
print("新的轴向量:")
print(pca.components_)# PCA分量;
print("各维度投影方差占比分布:")
print(pca.explained_variance_ratio_)
print("各点在新轴上的投影:")
print(pca.transform(X))def draw_vector(v0, v1, ax=None):ax = ax or plt.gca()arrowprops=dict(arrowstyle='->',linewidth=2,shrinkA=0, shrinkB=0)ax.annotate('', v1, v0, arrowprops=arrowprops)# plot data
plt.scatter(X[:, 0], X[:, 1], alpha=0.2)
for length, vector in zip(pca.explained_variance_, pca.components_):v = vector * 3 * np.sqrt(length)draw_vector(pca.mean_, pca.mean_ + v)
plt.axis('equal');pca = PCA(n_components=1) # 降到一维
pca.fit(X)
print("新的轴向量:")
print(pca.components_)
print("各维度投影方差占比分布:")
print(pca.explained_variance_ratio_)
print("各点在新轴上的投影:")
print(pca.transform(X))

PCA(Principal Component Analysis,主成分分析)降维相关推荐

  1. pca主成分分析结果解释_SKLEARN中的PCA(Principal Component Analysis)主成分分析法

    PCA(Principal Component Analysis)主成分分析法是机器学习中非常重要的方法,主要作用有降维和可视化.PCA的过程除了背后深刻的数学意义外,也有深刻的思路和方法. 1. 准 ...

  2. 【碎片知识(9)】PCA (Principal Component Analysis) [主成分分析]

    离开很久啦,从Ph.D.套磁开始到全部settle down花费了太久的时间,在上周也终于把研究方向定下来了,终于手头的事告一段落了.未来是跨度三到四年的research生涯,无数师兄师姐告诫我,读博 ...

  3. Principal Component Analysis 主成分分析 【学习笔记】

    Principal Component Analysis 主成分分析笔记 文章目录 Principal Component Analysis 主成分分析笔记 PCA是什么? 数据的线性变换 拉伸操作: ...

  4. 主成分分析PCA(principal component analysis)原理

    PCA在很多方面均有应用,但是之前没有仔细探究过,最近看了一些博客和论文,做一下总结. 主成分分析(Principal Component Analysis,PCA), 是一种统计方法.通过正交变换将 ...

  5. 机器学习降维算法一:PCA (Principal Component Analysis)

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

  6. JAVA实现PCA主成分分析_主成分分析PCA(principal component analysis)原理

    PCA在很多方面均有应用,但是之前没有仔细探究过,最近看了一些博客和论文,做一下总结. 主成分分析(Principal Component Analysis,PCA), 是一种统计方法.通过正交变换将 ...

  7. 【机器学习sklearn】主成分分析PCA(Principal Component Analysis)

    主成分分析方法PCA 前言 一.PCA是什么? 二.代码实践 使用MNIST数据集实现sklearn库里的主成分分析方法 不同主成分个数对应的可解释方差分析(Explained Variance) 总 ...

  8. 主成分分析碎石图_R: 主成分分析 ~ PCA(Principal Component Analysis)

    本文摘自:http://www.cnblogs.com/longzhongren/p/4300593.html 以表感谢.感谢 综述: 主成分分析 因子分析 典型相关分析,三种方法的共同点主要是用来对 ...

  9. PCA(Principal Component Analysis 主成分分析)原理及MATLAB实现

    关于PCA的原理参见: PCA原理 PCA:一种通过特征的线性组合来实现降维的方法,目的就是在尽可能好的代表原始数据的前提下,通过线性变换将样本数据投影到地位空间中. 如图示意,二维样本分别投影到e1 ...

  10. 如何利用PCA(Principal component analysis)来简化数据

    本博文的的内容为以下: 降维技术 主成分分析(PCA) 对半导体数据进行降维处理 降维(dimensionality reduction)的目标就是对输入的数目进行消减,由此剔除数据中的噪声并提高机器 ...

最新文章

  1. 第二十一篇:伦理/道德Ethics
  2. AMD与intel CPU型号大全(接口)
  3. 当思科交换机密码遗忘之后......(附图)
  4. Lecture4_14_2.多维随机变量及其概率分布
  5. C++11并发编程:多线程std::thread
  6. php处理上传文件的步骤,php文件上传步骤
  7. h5评论直接显示代码_全套H5教程免费学,让你0基础自学制作H5页面
  8. dw怎么修改html框架的宽度,Dreamweaver (dw)cs6中div标签宽度和高度设置方法
  9. iOS 消息发送与转发详解
  10. USB网卡驱动分析(rt8152)
  11. 2017年第八届CSTQB®国际软件测试高峰论坛日程发布
  12. 日活两亿的快手,如何用AI理解视频、做好分发
  13. 聚石塔,云鼎,多多云-----有一种坑叫盲打
  14. 讯飞离线语音合成(离线资源包)
  15. 不在 sudoers 文件中。此事将被报告。
  16. 系统安装教程之硬盘分区格式化(MBR或GPT)
  17. Latex 插入大括号分类情况
  18. Kafka的概念与命令操作
  19. 单片机c语言ad与da转换实验报告,单片机AD与DA转换实验报告.docx
  20. MATLAB:一维插值算法

热门文章

  1. Android LinearLayout横排和竖排布局
  2. dell 服务器硬盘failed,DELL服务器PERC-5-6RAID操作系统下诊断硬盘故障(tty)手册.pdf
  3. 做一个即时利润表仪表板(不用等账都做完核对完关账后)
  4. ERROR: pyHook-1.5.1-cp37-cp37m-win_amd64.whl is not a supported wheel on this platform.安装pyhook报错
  5. 【二叉树专题】—— 相同的树、对称二叉树、二叉树的最大深度
  6. 835计算机原理,电子科技大学835线性代数考研资料汇总
  7. 正则表达式中问号?的正确用法
  8. lol登录服务器时显示乱码,win7系统登录LOL游戏出现乱码的解决方法
  9. C++中的reverse()函数
  10. 虚拟机网卡的配置---(NET模式)