鸢尾花数据集降维后高维数据可视化

重要参数n_components

鸢尾花数据集是一个四维变量,为实现其可视化,可以降维到二维。使用sklearn中的PCA实现。
代码实现:

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA

iris = load_iris()
y = iris.target
X = iris.data

X_dr = PCA(2).fit_transform(X)

colors = ['red', 'black', 'orange']

plt.figure()
for i in [0, 1, 2]:
    plt.scatter(X_dr[y == i, 0]
                , X_dr[y == i, 1]
                , alpha=.7
                , c=colors[i]
                , label=iris.target_names[i]
                )
plt.legend()
plt.title('PCA of IRIS dataset')
plt.show()

在这里插入图片描述
鸢尾花的分布被展现在我们眼前了,明显这是一个分簇的分布,并且每个簇之间的分布相对比较明显,也许 versicolor和virginia这两种花之间会有一些分类错误,但setosa肯定不会被分错。这样的数据很容易分类,可以遇见,KNN,随机森林,神经网络,朴素贝叶斯,Adaboost这些分类器在鸢尾花数据集上,未调整的时候都可以有 95%上下的准确率。

探索降维后的数据

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA

iris = load_iris()
y = iris.target
X = iris.data

pca = PCA(2)
X_dr = pca.fit_transform(X)

# 属性explained_variance,查看降维后每个新特征向量上所带的信息量大小(可解释性方差的大小)
print(pca.explained_variance_)

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

# 大部分信息都被有效地集中在了第一个特征上
print(pca.explained_variance_ratio_.sum())

选择最好的n_components:累积可解释方差贡献率曲线

当参数components中不填写任何值,则默认返回min(X.shape)个特征,一般来说,样本量都会大于特征数目,所 以什么都不填就相当于转换了新特征空间,但没有减少特征的个数。一般来说,不会使用这种输入方式。但我们却 可以使用这种输入方式来画出累计可解释方差贡献率曲线,以此选择好的n_components的整数取值。
累积可解释方差贡献率曲线是一条以降维后保留的特征个数为横坐标,降维后新特征矩阵捕捉到的可解释方差贡献 率为纵坐标的曲线,能够帮助我们决定n_components好的取值。
代码实现:

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
pca_line=PCA().fit(X)
plt.plot([1,2,3,4],np.cumsum(pca_line.explained_variance_ratio_))
plt.xticks([1,2,3,4]) #这是为了限制坐标轴显示为整数
plt.xlabel("number of components after dimension reduction")
plt.ylabel("cumulative explained variance")
plt.show()

绘制出的图像:
在这里插入图片描述
在有一个特征的时候,累计可解释方差贡献率已经达到了0.92多, 我们选择的特征数量为让我们的累积性方差突然变得平滑的转折点,本图2、3都可以。

发布了90 篇原创文章 · 获赞 15 · 访问量 3172

猜你喜欢

转载自blog.csdn.net/qq_43656233/article/details/104026111