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

预处理基因数据集遇MinMaxScaler特征数量不匹配错误求助

问题解决方法

问题根源

你只对训练集X_train做了特征过滤,但测试集X_test还保留着原始的全部特征,导致两者特征数量不一致。MinMaxScaler是基于X_train的17625个特征训练的,自然无法处理X_test的23146个特征,所以报错。

修正后的代码

# 先基于训练集确定需要保留的特征列
# 第一步:过滤全0特征
keep_cols = X_train.columns[(X_train != 0).any(axis=0)]
X_train = X_train[keep_cols]
# 第二步:过滤0值占比超过25%的特征
keep_cols = X_train.columns[(X_train == 0).mean() < 0.25]

# 同步过滤训练集和测试集的特征(核心:两者必须保留完全相同的列)
X_train = X_train[keep_cols]
X_test = X_test[keep_cols]

# 再执行标准化操作
mm = MinMaxScaler()
X_train_scaled = mm.fit_transform(X_train)
X_test_scaled = mm.transform(X_test)

关键注意点

  • 必须让训练集和测试集保留完全一致的特征列,这是机器学习预处理的基本要求,否则模型训练与预测的输入维度不匹配。
  • 所有特征过滤逻辑必须只基于训练集,绝对不能使用测试集的统计信息(比如不能计算测试集的0值占比来过滤),避免数据泄露,保证模型的泛化能力。

内容的提问来源于stack exchange,提问作者Jasoosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:15:31