实验目标
本实验通过主成分分析(PCA)技术对鸢尾花数据集进行降维,旨在:使用PCA将原始4维数据降到2维,并进行可视化。分析降维前后数据的分布和类别区分情况。评估PCA对数据方差解释率的贡献,以便在最少维度中保留最多信息。
实验环境
o Python 3.x
o Scikit-learn、NumPy和Pandas库
o Jupyter Notebook
o Matplotlib
实验数据集
本实验使用的是鸢尾花数据集(Iris dataset),它是一个经典的多分类数据集,包含150个样本,4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),以及3个目标类别(Setosa、Versicolor、Virginica)。
实验步骤
一、导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib # 设置中文字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # SimHei 是常用的中文黑体字体
matplotlib.rcParams['axes.unicode_minus'] = False # 显示负号
二、加载数据集
iris = load_iris()
X = iris.data
y = iris.target
target_names = iris.target_names
三、数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
四、原始数据的前两个特征可视化
plt.figure(figsize=(8, 6))
for i, color in zip(range(3), ['red', 'green', 'blue']):
plt.scatter(X[y == i, 0], X[y == i, 1], color=color, label=target_names[i], alpha=0.7)
plt.xlabel('花萼长度 (sepal length)')
plt.ylabel('花萼宽度 (sepal width)')
plt.title('原始数据的前两个特征')
plt.legend()
plt.grid(True)
plt.show()
五、应用PCA将数据降维到2维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
六、降维后的数据可视化
plt.figure(figsize=(8, 6))
for i, color in zip(range(3), ['red', 'green', 'blue']):
plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], color=color, label=target_names[i], alpha=0.7)
plt.xlabel('主成分 1')
plt.ylabel('主成分 2')
plt.title('PCA降维后的数据')
plt.legend()
plt.grid(True)
plt.show()
七、打印决策树的规则
pca_full = PCA(n_components=4)
pca_full.fit(X_scaled)
explained_variance_ratio = pca_full.explained_variance_ratio_
plt.figure(figsize=(8, 6))
plt.plot(np.cumsum(explained_variance_ratio), marker='o', linestyle='--')
plt.xlabel('主成分数量')
plt.ylabel('累计方差解释率')
plt.title('PCA方差解释率')
plt.grid(True)
plt.show()
实验结果展示
1、原始数据的前两个特征图:展示了花萼长度和花萼宽度的分布,可以看到三个类别之间有一定的重叠。
2、降维后的2维数据图:PCA降维后,数据点在二维空间中被更好地分隔,不同类别的样本明显区分。
3、累计方差解释率图:展示了前两个主成分解释了大部分的方差,说明PCA有效地保留了大部分信息。
实验总结
1、PCA能够有效地将4维数据压缩到2维,同时保留了较多信息。从降维后数据的可视化结果可以看出,降维后的二维空间能较好地分隔出不同类别。
2、累计方差解释率图显示,前两个主成分解释了大部分数据的方差,这说明PCA的降维在保留信息的同时简化了数据。
3、PCA可以用于数据的降维和可视化,尤其适用于在高维数据中找到主要信息,并用于探索性数据分析或提高模型计算效率的场景。