You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PCA(n_components=9)适配手写数字数据集的维度匹配报错解决问询

解决PCA降维后DataFrame维度不匹配问题

错误根源

你设置了PCA(n_components=9),降维后的principalComponents是16800行×9列的数组,但创建DataFrame时指定的columns列表有10个元素(从pc0到pc9),列数不匹配直接触发了ValueError。

修复方法

方法1:手动修正列名列表

直接把列名列表缩减到9个,和降维后的列数对齐:

principalComponents = model_pca.fit_transform(X)

# 列名只保留pc0到pc8,共9个
df_pca = pd.DataFrame(data = principalComponents, 
columns = ['pc0', 'pc1', 'pc2', 'pc3', 'pc4', 'pc5', 'pc6', 'pc7', 'pc8'])

df_pca['targets'] = y_target

方法2:自动生成列名(推荐)

用循环生成对应数量的列名,避免手动计数出错:

principalComponents = model_pca.fit_transform(X)
n_components = model_pca.n_components_  # 直接获取PCA实际使用的成分数,避免硬编码

df_pca = pd.DataFrame(data = principalComponents, 
columns = [f'pc{i}' for i in range(n_components)])

df_pca['targets'] = y_target

额外提示

PCA的n_components不需要和类别数(10个数字)绑定,硬设为9没有理论依据。更合理的做法是根据方差解释率选择,比如设置n_components=0.95,让PCA自动保留能解释95%数据方差的主成分,这样既能降维又能保留足够的特征信息:

model_pca = PCA(n_components=0.95)
principalComponents = model_pca.fit_transform(X)
print(f"自动保留的主成分数:{model_pca.n_components_}")

内容的提问来源于stack exchange,提问作者Data Science Analytics Manager

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:42:39