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,二者线性无关

协方差矩阵:矩阵的特征向量是描述数据集结构的非零向量,"htmlcode">

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教程(以鸢尾花分类为例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com