鸢尾花数据集#

该数据集由3种不同类型的鸢尾花(山鸢尾、杂色鸢尾和维吉尼亚鸢尾)的花瓣和花萼长度组成,存储在一个150x4的numpy.ndarray中。

行表示样本,列表示:花萼长度、花萼宽度、花瓣长度和花瓣宽度。

下面的图使用了前两个特征。 有关此数据集的更多信息,请参见 这里

# 代码来源:Gaël Varoquaux
# 由Jaques Grobler修改用于文档
# SPDX许可证标识符:BSD-3-Clause

加载鸢尾花数据集#

from sklearn import datasets

iris = datasets.load_iris()

鸢尾花数据集的散点图#

import matplotlib.pyplot as plt

_, ax = plt.subplots()
scatter = ax.scatter(iris.data[:, 0], iris.data[:, 1], c=iris.target)
ax.set(xlabel=iris.feature_names[0], ylabel=iris.feature_names[1])
_ = ax.legend(
    scatter.legend_elements()[0], iris.target_names, loc="lower right", title="Classes"
)
plot iris dataset

散点图中的每个点代表数据集中150朵鸢尾花中的一朵,颜色表示它们各自的类型(Setosa、Versicolour 和 Virginica)。你可以看到关于Setosa类型的一个模式,它基于其短而宽的萼片很容易识别。仅考虑这两个维度,萼片宽度和长度,Versicolor和Virginica类型之间仍然存在重叠。

绘制PCA表示#

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

# 未使用但需要导入以使用低于3.2版本的matplotlib进行3D投影
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)
ax.scatter(
    X_reduced[:, 0],
    X_reduced[:, 1],
    X_reduced[:, 2],
    c=iris.target,
    s=40,
)

ax.set_title("First three PCA dimensions")
ax.set_xlabel("1st Eigenvector")
ax.xaxis.set_ticklabels([])
ax.set_ylabel("2nd Eigenvector")
ax.yaxis.set_ticklabels([])
ax.set_zlabel("3rd Eigenvector")
ax.zaxis.set_ticklabels([])

plt.show()
First three PCA dimensions

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

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

Related examples

使用鸢尾花数据集的PCA示例

使用鸢尾花数据集的PCA示例

增量PCA

增量PCA

LDA和PCA在鸢尾花数据集上的二维投影比较

LDA和PCA在鸢尾花数据集上的二维投影比较

绘制在鸢尾花数据集上训练的决策树的决策边界

绘制在鸢尾花数据集上训练的决策树的决策边界

Gallery generated by Sphinx-Gallery