降维算法应用——PCA算法

之前总结了聚类算法,然后我们这一课来简单学习一下降维算法,常用的降维算法有PCA算法。

主成分分析

Principal Component Analysis,简称PCA,通常用于高位数据集的降维和可视化,还可以用数据压缩和数据降维等,可用于数据压缩和预处理。

相关术语:

1.方差:是各个样本和样本均值的差的平方和的均值,用来度量一组
数据的分散程度。
2.协方差:用于度量两个变量之间的线性相关性程度,若两个变量的
协方差为0,则可认为二者线性无关。
3.协方差矩阵:由变量的协方差值构成的矩阵
4.特征向量和特征值:矩阵的特征向量是描述数据集结构的非零向量,并满足如下公式:Av = λv,A是方阵, v是特征向量,λ是特征值。

原理:

矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。
算法过程:


image.png

目标:

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

具体算法:

#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt#加载matplotlib用于数据的可视化
from sklearn.decomposition import  PCA#加载PCA算法包
from sklearn.datasets import load_iris#加载鸢尾花数据集导入函数
data=load_iris()#以字典形式加载鸢尾花数据集
x=data.data#使用X表示数据集中的属性数据
y=data.target#使用y表示数据集中的标签
pca=PCA(n_components=2)#加载PCA算法,设置降维后主成分数目为2
reduce_x=pca.fit_transform(x)#对原始数据进行降维,保存在reduced_X中
red_x,red_y=[],[]                      #第一类数据点
blue_x,blue_y=[],[]                        #第二类数据点
green_x,green_y=[],[]                                 #第三类数据点
# print(reduce_x[:][:])
for i in range(len(reduce_x)):
    if y[i]==0:
        red_x.append(reduce_x[i][0])                   #将分类后的鸢尾花数据加入到不同的列表中
        red_y.append(reduce_x[i][1])
    elif y[i]==1:
        blue_x.append(reduce_x[i][0])
        blue_y.append(reduce_x[i][1])
    else:
        green_x.append(reduce_x[i][0])
        green_y.append(reduce_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()

输出结果:

Figure_1.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容