Iris数据集的主成分分析(PCA)#

此示例展示了一种众所周知的分解技术,称为主成分分析(PCA) Iris dataset .

该数据集由4个特征组成:花瓣长度、花瓣宽度、花瓣长度、花瓣宽度。我们使用PCA将这个4个特征空间投影到3维空间中。

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

加载Iris数据集#

Iris数据集可作为scikit-learn的一部分直接获取。它可以使用 load_iris 功能使用默认参数, Bunch 返回对象,其中包含数据、目标值、特征名称和目标名称。

from sklearn.datasets import load_iris

iris = load_iris(as_frame=True)
print(iris.keys())
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])

Iris数据集的要素对图#

让我们首先绘制Iris数据集的特征对。

import seaborn as sns

# Rename classes using the iris target names
iris.frame["target"] = iris.target_names[iris.target]
_ = sns.pairplot(iris.frame, hue="target")
plot pca iris

每个散点图上的每个数据点指的是数据集中150种鸢尾花中的一种,颜色表示它们各自的类型(Setosa,Versicolor和Virginica)。

您已经可以看到有关Setosa类型的图案,根据其短而宽的花饰,可以很容易识别。仅考虑这两个维度,即花饰宽度和长度,Versicolor和Virginica类型之间仍然存在重叠。

图的对角线显示了每个特征的分布。我们观察到花瓣宽度和花瓣长度是这三种类型最具区分性的特征。

绘制PCA表示#

让我们对虹膜数据集应用主成分分析(PCA),然后在前三个PCA维度上绘制虹膜。这将使我们能够更好地区分这三种类型!

import matplotlib.pyplot as plt

# unused but required import for doing 3d projections with matplotlib < 3.2
import mpl_toolkits.mplot3d  # noqa: F401

from sklearn.decomposition import PCA

fig = plt.figure(1, figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d", elev=-150, azim=110)

X_reduced = PCA(n_components=3).fit_transform(iris.data)
scatter = ax.scatter(
    X_reduced[:, 0],
    X_reduced[:, 1],
    X_reduced[:, 2],
    c=iris.target,
    s=40,
)

ax.set(
    title="First three PCA dimensions",
    xlabel="1st Eigenvector",
    ylabel="2nd Eigenvector",
    zlabel="3rd Eigenvector",
)
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])

# Add a legend
legend1 = ax.legend(
    scatter.legend_elements()[0],
    iris.target_names.tolist(),
    loc="upper right",
    title="Classes",
)
ax.add_artist(legend1)

plt.show()
First three PCA dimensions

PCA将创建3个新特征,它们是4个原始特征的线性组合。此外,该变换使方差最大化。通过这种转换,我们可以看到,我们可以只使用第一个特征来识别每个物种(即,第一特征向量)。

Total running time of the script: (0 minutes 1.571 seconds)

相关实例

Iris数据集LDA和PCA 2D投影的比较

Comparison of LDA and PCA 2D projection of Iris dataset

增量PCA

Incremental PCA

绘制在虹膜数据集上训练的决策树的决策面

Plot the decision surface of decision trees trained on the iris dataset

在iris数据集上绘制多类新元

Plot multi-class SGD on the iris dataset

Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io> _