Python 实现主成分分析
主成分分析(Principal Component Analysis,PCA)是最常用的一种降维方法,通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等。
矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。
上代码:
# -*- coding:utf-8 -*- import sys import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.datasets import load_iris reload(sys) sys.setdefaultencoding("utf8") # 加载数据 data = load_iris() y = data.target x = data.data # 加载PCA算法,设置降维后主成分数目为2 pca = PCA(n_components=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()
把降维后的数据聚类、可视化,来看降维的效果: