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

使用DecisionTreeRegressor报ValueError:模型与输入特征数量不匹配

问题原因排查

ValueError: Number of features of the model must match the input. Model n_features is 5 and input n_features is 1.
该报错由模型训练特征维度与预测输入特征维度不匹配导致:

  • 训练阶段:你用X = df.drop(columns=['CLASS'])提取训练特征,最终X包含5个特征列,模型学习时默认要求后续所有预测输入的样本都必须携带5个特征
  • 预测阶段:你定义的X_test = [[34],[62],[96],[30],[1]]是5个样本的集合,每个样本仅包含1个特征,和训练要求的5个特征维度不符,触发报错。
解决方案

根据你的实际需求二选一即可:

方案1:仅用单特征训练+预测

如果你本来就是要只用1个特征做模型训练,修改训练阶段的特征提取逻辑即可,示例如下(假设你要用的特征列名为feature_col,替换为你实际的列名即可):

import pandas as pd
from sklearn.tree import DecisionTreeRegressor

df = pd.read_csv("/content/Data.csv")
y = df['CLASS']
# 仅提取指定的1个特征作为训练输入,两层方括号保证输出为二维结构
X = df[['feature_col']]

my_tree = DecisionTreeRegressor()
my_tree.fit(X,y)
# 此时你的X_test结构符合要求,可以正常预测
X_test = [[34],[62],[96],[30],[1]]
y_pred = my_tree.predict(X_test)
print(y_pred)

方案2:预测1个携带5个特征的样本

如果你本来是要预测1个特征值分别为34、62、96、30、1的样本,仅修改X_test的结构即可:

import pandas as pd
from sklearn.tree import DecisionTreeRegressor

df = pd.read_csv("/content/Data.csv")
y = df['CLASS']
X = df.drop(columns=['CLASS'])

my_tree = DecisionTreeRegressor()
my_tree.fit(X,y)
# 调整为1个样本、5个特征的二维结构,和训练维度对齐
X_test = [[34,62,96,30,1]]
y_pred = my_tree.predict(X_test)
print(y_pred)

内容的提问来源于stack exchange,提问作者Ngoc Quy Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:36:03