使用 Sklearn 实现PCA降维的最简单代码及调参说明

使用 Sklearn 实现PCA降维的最简单代码及调参说明

1 人赞同了该文章

#废话不多说,直接上代码!

#重要的部分有注释,所有的参数都有参数说明,可以直接运行,适合小白。

#未经许可,禁止转载。

#转自本人知乎https://zhuanlan.zhihu.com/p/279775917

#鸢尾花数据集导入

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from sklearn.datasets import load_iris

from sklearn.decomposition import PCA

iris = load_iris()

x = iris.data #想知道数据到底长什么样子,推荐打印出来仔细观察

y = iris.target

 

#模型实现

pca = PCA(n_components=2) #构建模型 ,n_components=2代表降到2维

pca = pca.fit(x) #拟合模型

X_dr = pca.transform(x) #获取新矩阵

 

#画图

plt.figure()

plt.scatter(X_dr[y==0, 0], X_dr[y==0, 1], c="red", label=iris.target_names[0])

plt.scatter(X_dr[y==1, 0], X_dr[y==1, 1], c="black", label=iris.target_names[1])

plt.scatter(X_dr[y==2, 0], X_dr[y==2, 1], c="orange", label=iris.target_names[2])

plt.legend()

plt.title('PCA of IRIS dataset')

plt.show()

#结果:

使用 Sklearn 实现PCA降维的最简单代码及调参说明

 

-----------------------------------------------------------------------------------------------

#选学:探索降维后的数据

#属性explained_variance_,查看降维后每个新特征向量上所带的信息量大小

print(pca.explained_variance_)

#属性explained_variance_ratio,查看降维后每个新特征向量所占的信息量占原始数据总信息量的百分比,又叫做可解释方差贡献率

print(pca.explained_variance_ratio_)

#计算所有的新特征向量所占的信息量占原始数据总信息量的百分比

print(pca.explained_variance_ratio_.sum())