高维训练数据怎么可视化?用 PCA 降到二维并查看解释方差

用 PCA 将四维教学数据投影到二维,查看解释方差和散点,区分可视化探索与正式训练评估。

训练表格有多个数值特征时,可以先用 PCA 投影到二维,观察样本位置及可能的离群点。PCA 寻找方差较大的方向,不使用类别标签来保证分类;散点图看着分开,不等于分类模型已经有效。

先对尺度不同的特征做处理

示例使用 scikit-learn 内置 Iris 数据集的四个数值特征,类别仅用于散点着色,不参加 PCA 拟合。需要 Python、scikit-learn 和 matplotlib。它是公开教学数据,不是客户案例,也不代表你的训练集分布。

高维训练数据怎么可视化?用 PCA 降到二维并查看解释方差

python -m pip install scikit-learn matplotlib

投影到两维并输出解释方差

from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

data = load_iris()
X = data.data
scaled = StandardScaler().fit_transform(X)
pca = PCA(n_components=2, svd_solver="full")
points = pca.fit_transform(scaled)
print("投影尺寸", points.shape)
print("各主成分解释比例", pca.explained_variance_ratio_)
print("二维合计比例", pca.explained_variance_ratio_.sum())
fig, ax = plt.subplots()
for class_id, name in enumerate(data.target_names):
    mask = data.target == class_id
    ax.scatter(points[mask, 0], points[mask, 1], label=name, s=18)
ax.set_xlabel("PC1")
ax.set_ylabel("PC2")
ax.legend()
fig.tight_layout()
fig.savefig("pca_iris.png", dpi=160)
plt.close(fig)
assert points.shape == (len(X), 2)

保存为 plot_pca.py,运行 python plot_pca.py。StandardScaler 使各特征尺度接近,PCA 本身不会自动替你完成这种标准化;是否需要标准化应按特征单位与任务决定。

图与数字一起核对

验证时检查投影行数仍为原样本数、列数为 2,再看两个 explained_variance_ratio 的合计。合计小于 1 说明二维表示丢掉部分方差信息,不能把图中距离当成原始所有特征的距离。

主成分符号可能在不同计算环境改变,使图沿坐标轴镜像,但不必然改变所代表的子空间。不要因为点位置左右翻转就认定数据不同;比较配置、方差比例及可回查样本。

从探索图进入训练时

下一步用样本 ID 回查图中的离群点,确认是录入错误还是有效少数样本,再决定清洗。不能只因某点离群就删除,也不能看图后把测试集困难样本移到训练集。

本例对完整教学数据做可视化探索,不计算泛化成绩。若 PCA 成为正式模型预处理,StandardScaler 与 PCA 都只在训练集拟合,验证和线上数据使用同一变换;重新拟合会改变坐标。

PCA 只用于数值特征的线性投影,缺失值、类别字段和极端异常值要先按规则处理。投影会丢信息,二维分组不等同于聚类结果,更不是准确率保证。

资料与适用版本

以下官方资料核对于 2026 年 10 月 1 日;安装和界面以实际使用版本为准。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30713.html

赞 (0)
AI小管家的头像AI小管家
音频怎么画梅尔频谱?用 librosa 核对采样率、时间轴与频率范围
上一篇 8小时前
预测结果怎样给出范围?用 QuantileRegressor 训练分位数并核对覆盖率
下一篇 8小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部