1 简介

PCA(Principal Component Analysis)即主成分分析是最常见的降维方法, 它是一种统计方法。用于高维数据集的探索与可视化,还可用于数据的压缩和预处理。可通过正交变换把具有相关性的高维变量转换为线性无关的低维变量,这组低维变量称为主成分,它能保留原始数据的信息。

2 PCA算法过程

1)输入:样本集D={x1,x2,…,xn};低维空间数d’
2)过程:
①对所有样本进行中心化;
②计算样本的协方差矩阵XX^(T);
③对协方差矩阵XX^(T)作特征值分解;
④取最大的d’个特征值所对应的特征向量w1,w2,…,w(d’)
3)输出:
投影矩阵W=(w1,w2,…,w(d’))

PCA应用:
主成分分析作为基础的数学分析方法,其实际应用十分广泛,比如人口统计学、数量地理学、分子动力学模拟、数学建模、数理分析等学科中均有应用,是一种常用的多变量分析方法。 [1]

3 sklearn实现主成分分析

1)完整代码如下(代码可复现):

"""
PCA实现高维数据可视化  03.28
目标:已知鸢尾花数据是4维,共3类样本,使用PCA实现降维,
并在二维平面上可视化
"""
# 1 建立工程,导入sklearn 相关工具包
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# 2 加载数据并进行降维
data = load_iris()
y = data.target
x = data.data
pca = PCA(n_components = 2)
reduced_x = pca.fit_transform(x)
# 3 按类别对降维后的数据进行保存
red_x,red_y = [],[]
blue_x,blue_y = [],[]
green_x,green_y = [],[]
for i in range(len(reduced_x)):if y[i] == 0:red_x.append(reduced_x[i][0])red_y.append(reduced_x[i][1])elif y[i] == 1:blue_x.append(reduced_x[i][0])blue_y.append(reduced_x[i][1])else:green_x.append(reduced_x[i][0])green_y.append(reduced_x[i][1])
# 4 降维后数据可视化
plt.scatter(red_x,red_y, c = 'r',marker = 'x')
plt.scatter(blue_x,blue_y, c = 'b',marker = 'D')
plt.scatter(green_x,green_y, c = 'g',marker = '.')
plt.show()

(2)部分代码解析:
1)加载数据集并进行降维操作
其中y为数据集中的标签,x为属性数据
指定主成分个数n_components 为2
对原始数据降维后保存于reduced_x中

data = load_iris()
y = data.target
x = data.data
pca = PCA(n_components = 2)
reduced_x = pca.fit_transform(x)

2)按类别对降维后数据保存
先用红蓝绿三种颜色分别表示数据;
用for in 循环按标签y分明类别0,1或其他,
将不同数据保存在不同列表中

red_x,red_y = [],[]
blue_x,blue_y = [],[]
green_x,green_y = [],[]
for i in range(len(reduced_x)):if y[i] == 0:red_x.append(reduced_x[i][0])red_y.append(reduced_x[i][1])elif y[i] == 1:blue_x.append(reduced_x[i][0])blue_y.append(reduced_x[i][1])else:green_x.append(reduced_x[i][0])green_y.append(reduced_x[i][1])

3)将降维后的数据可视化,用plt.scatter(数据,标签,颜色,标记类型)
处理分类图,plt.show()绘出图形

plt.scatter(red_x,red_y, c = 'r',marker = 'x')
plt.scatter(blue_x,blue_y, c = 'b',marker = 'D')
plt.scatter(green_x,green_y, c = 'g',marker = '.')
plt.show()
  1. 由此代码绘出的图形如下:

    5)对代码存在的疑问:
    sklearn中的iris数据集如何下载到本地?
    若要读取本地数据进行上述操作该怎样做?

参考文献
[1]林海明,杜子芳. 主成分分析综合评价应该注意的问题[J]. 统计研究,2013,30(08):25-31

小白一枚,求赐教

PCA实现高维数据可视化相关推荐

  1. python高维数据_t-SNE高维数据可视化(python)

    t-SNE实践--sklearn教程 t-SNE是一种集降维与可视化于一体的技术,它是基于SNE可视化的改进,解决了SNE在可视化后样本分布拥挤.边界不明显的特点,是目前最好的降维可视化手段. 关于t ...

  2. R使用tsne进行高维数据可视化实战:二维可视化、三维可视化

    R使用tsne进行高维数据可视化实战:二维可视化.三维可视化 t-SNE是一种非常强大的技术,可以用于多维数据中的可视化分析(寻找模式).它对复杂多维数据的可视化能力是显而易见的,它以无监督的方式对数 ...

  3. Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化

    Python使用tsne进行高维数据可视化实战:二维可视化.三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_mi ...

  4. 【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)

    需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一 ...

  5. PCA降维+SVR+数据可视化 实战记录

    基于SVR算法对四姑娘山景区2019年下半年客流量进行预测 文章目录 基于SVR算法对四姑娘山景区2019年下半年客流量进行预测 1.整理用机器学习进行回归分析的过程和原理(入门)10 回归分析过程 ...

  6. 文件可视化编辑_高维数据可视化必备图形平行坐标图

    作者:科研猫 | 小飞鼠 责编:科研猫 | 依米 如果我们想比较某个数值在不同分组之间的变化差异.或者随着时间序列的变化趋势,往往会用到折线图.折线图是在我们的科研绘图当中最为常用的图形之一. 正如在 ...

  7. matlab利用t-SNE实现高维数据可视化(tsne函数用法实例)

    tsne用法 tsne - t-Distributed Stochastic Neighbor Embedding This MATLAB function returns a matrix of t ...

  8. 180512 tensorboard高维数据可视化

    Tensoflow实战Google深度学习框架-第2版-第11章 tensorboard可视化 from tensorflow.contrib.tensorboard.plugins import p ...

  9. 学习笔记 | 用距离之距离(DoD)变换改进高维数据可视化

    文章目录 一.论文关键信息 二.主要内容 三.总结 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一.论文关键信息 论文标题:Improved visualiza ...

  10. 高维数据PCA降维可视化(KNN分类)

    在做机器学习的时候,经常会遇到三个特征以上的数据,这类数据通常被称为高维数据.数据做好类别分类后,通过二维图或者三维图进行可视化,对于高维数据可以通过PCA(Principal Component A ...

最新文章

  1. Linux下用C获取当前系统时间
  2. HDU1506 / POJ2339 Largest Rectangle in a Histogram 单调递减栈
  3. 关于WEB三层架构的思考
  4. 动态规划(Dynamic Programming)例题步骤详解
  5. C++vector容器-互换容器
  6. html5 loaded,How do you check if a HTML5 audio element is loaded?
  7. leetcode38. 外观数列
  8. 高级代码编辑器:sublime text 4 for Mac
  9. Java笔记-模拟QQ三方登录(单点登录2.0)
  10. SQL Server外连接、内连接、交叉连接
  11. mac苹果ping不通网络
  12. Elasticsearch--入门-_cat命令查看节点相关信息---全文检索引擎ElasticSearch工作笔记004
  13. Futter基础第6篇: 实现网格布局【GridView、GridView.count、GridView.builder】
  14. 圆形刻度盘 进度 展示
  15. 查看程序用运时占用的内存
  16. python 有限元分析_用python实现简单的有限元方法(一)
  17. excel 将科学计数法的格式换成文本
  18. ajax 传参的三种方式:
  19. mysql入库字段编码导致报错 Incorrect string value: ‘\xF0\x9F\x91\xBD\xF0\x9F...‘ for column ‘content‘
  20. 90个外国英文网站强力推荐!!!

热门文章

  1. 330425-01-00本特利内华达加速度计
  2. 利用ant自动从vss下载代码并编译到自动发布
  3. java运行环境安装及配置教程
  4. 图解通信原理与案例分析-34:车联网中的系统架构与主要的通信技术
  5. 电子海图的航线多尺度生成方法
  6. 在进行ISO14001认证审核之前,需要注意什么?
  7. 企业如何选择固定资产管理系统?
  8. UTC时间转北京时间原理与matlab代码
  9. Multisim高频电子线路4.7振荡器仿真
  10. 批处理批量卸载微软补丁