主成分分析(PCA)在Iris数据集上的应用

主成分分析PCA)是一种常用的数据降维技术,它能够将高维数据转换为低维数据,同时尽可能保留原始数据的信息。本文以著名的Iris数据集为例,展示如何使用PCA将四维特征空间降维到三维空间,并进行可视化展示。Iris数据集包含150个样本,每个样本有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。

加载Iris数据集

Iris数据集可以直接通过scikit-learn库中的load_iris函数加载。加载后,可以得到一个包含数据、目标值、特征名称和目标名称的字典对象。

from sklearn.datasets import load_iris iris = load_iris(as_frame=True) print(iris.keys())

输出结果将显示数据集中包含的键,如'data'、'target'、'frame'等。

Iris数据集特征对的可视化

首先,使用seaborn库的pairplot函数绘制Iris数据集中特征对的散点图。每个散点代表数据集中的一个样本,颜色表示样本的类别(Setosa、Versicolor和Virginica)。从图中可以观察到,Setosa类别的样本在萼片宽度和长度两个维度上与其他两类有明显区分,而Versicolor和Virginica类别在这两个维度上存在一定重叠。

import seaborn as sns iris.frame["target"] = iris.target_names[iris.target] sns.pairplot(iris.frame, hue="target")

从图中的对角线可以看出,花瓣宽度和花瓣长度是区分三类Iris花的最有区分度的特征。

PCA降维与可视化

接下来,对Iris数据集应用PCA降维,将其从四维特征空间转换为三维空间,并使用matplotlib库进行三维可视化。

import matplotlib.pyplot as plt 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([]) legend1 = ax.legend(scatter.legend_elements()[0], iris.target_names.tolist(), loc="upper right", title="Classes") ax.add_artist(legend1) plt.show()

通过PCA降维,得到了三个新的主成分,它们是原始四个特征的线性组合。这种转换最大化了数据的方差。从三维可视化图中可以看出,可以使用第一个主成分(即第一个特征向量)来区分不同的Iris花类别。

脚本运行时间

整个脚本的运行时间大约为2.949秒。

  • LDA与PCA在Iris数据集上的二维投影比较
  • 逻辑回归三类分类器
  • 增量PCA
  • 在Iris数据集上训练的决策树的决策面可视化
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485