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

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

  • 基本步骤:web

    这里写图片描述

  • 具体实现
    咱们经过Python的sklearn库来实现鸢尾花数据进行降维,数据自己是4维的降维后变成2维,能够在平面中画出样本点的分布。样本数据结构以下图:
    鸢尾花数据算法

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

代码app

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

结果图svg

结果图

参考
[1] http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA
[2] https://blog.csdn.net/u012162613/article/details/42192293ui