Python sklearn库实现PCA教程(以鸢尾花分类为例)


Posted in Python onFebruary 24, 2020

PCA简介

主成分分析(Principal Component Analysis,PCA)是最常用的一种降维方法,通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等。矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。

基本步骤:

Python sklearn库实现PCA教程(以鸢尾花分类为例)

具体实现

我们通过Python的sklearn库来实现鸢尾花数据进行降维,数据本身是4维的降维后变成2维,可以在平面中画出样本点的分布。样本数据结构如下图:

Python sklearn库实现PCA教程(以鸢尾花分类为例)

其中样本总数为150,鸢尾花的类别有三种,分别标记为0,1,2

代码

import matplotlib.pyplot as plt     #加载matplotlib用于数据的可视化
from sklearn.decomposition import PCA   #加载PCA算法包
from sklearn.datasets import load_iris


data=load_iris()
y=data.target
x=data.data
pca=PCA(n_components=2)  #加载PCA算法,设置降维后主成分数目为2
reduced_x=pca.fit_transform(x)#对样本进行降维

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])

#可视化
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()

结果图

Python sklearn库实现PCA教程(以鸢尾花分类为例)

知识拓展:python sklearn PCA 实例代码-主成分分析

python sklearn decomposition PCA 主成分分析

主成分分析(PCA)

1、主成分分析(Principal Component Analysis,PCA)是最常用的一种降维方法,

通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理

2、PCA可以把具有相关性的高维变量合成为线性无关的低维变量,称为主成分。

主成分能够尽可能保留原始数据的信息

3、概念

方差:用来度量一组数据的分散程度

协方差:用来度量两个变量之间的线性相关性程度,若两个变量的协议差为0,二者线性无关

协方差矩阵:矩阵的特征向量是描述数据集结构的非零向量,?? ⃗=?? ⃗

特征向量和特征值:? ⃗ 特征向量,?是特征值

4、提取:

矩阵的主成分是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分

5、原理:

1、对所有样本进行中心化:xi-(x1+x2…xm)/m
2、计算样本的协方差矩阵X(X.T)
3、对协方差矩阵X(X.T)做特征值分解
4、取最大的d个特征值所对应的特征向量w1,w2…wd

输出投影矩阵W=(w1,w2,…,wd)

6、参数说明

sklearn.decomposition.PCA(n_components=None,copy=True,whithen=False,svd_solver=‘auto',tol=0.0,

iterated_power=‘auto',random_state=None)

n_components:指定主成分的个数,即降维后数据的维度

svd_slover:设置特征值分解的方法:‘full',‘arpack',‘randomized'

PCA实现高维度数据可视化 实例

目标:

已知鸢尾花数据是4维的,共三类样本,使用PCA实现对鸢尾花数据进行降维,实现在二维平面上的可视化

实例程序编写

import matplotlib.pyplot as plt
import sklearn.decomposition as dp
from sklearn.datasets.base import load_iris

x,y=load_iris(return_X_y=True) #加载数据,x表示数据集中的属性数据,y表示数据标签
pca=dp.PCA(n_components=2) #加载pca算法,设置降维后主成分数目为2
reduced_x=pca.fit_transform(x) #对原始数据进行降维,保存在reduced_x中
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])
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()

以上这篇Python sklearn库实现PCA教程(以鸢尾花分类为例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 Python
Python全局变量用法实例分析
Jul 19 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
Python处理XML格式数据的方法详解
Mar 21 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
python+opencv实现阈值分割
Dec 26 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
python的等深分箱实例
Nov 22 Python
Python如何设置指定窗口为前台活动窗口
Aug 12 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
详解非极大值抑制算法之Python实现
Jun 28 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 #Python
最小二乘法及其python实现详解
Feb 24 #Python
在Python 的线程中运行协程的方法
Feb 24 #Python
Python 爬取必应壁纸的实例讲解
Feb 24 #Python
Python unittest工作原理和使用过程解析
Feb 24 #Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 #Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 #Python
You might like
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
js日期联动示例
2014/05/02 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
Python求离散序列导数的示例
2019/07/10 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
如何基于python实现不邻接植花
2020/05/01 Python
Python接收手机短信的代码整理
2020/08/02 Python
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
优秀广告词大全
2014/03/19 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
护士节慰问信
2015/02/15 职场文书
代码解析React中setState同步和异步问题
2021/06/03 Javascript
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python
浅谈Python协程asyncio
2021/06/20 Python
golang中的struct操作
2021/11/11 Golang