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

使用Sklearn决策树回归器计算单样本指标时遇样本数不一致错误

解决Sklearn决策树回归器单样本MSE计算的维度不匹配问题

问题根源

你调用mean_squared_error(Y, y_prediction)时,参数维度不匹配:

  • Y是训练集的真实标签(共303行)
  • y_prediction是单个测试样本的预测结果(仅1行)
    MSE要求真实值与预测值的样本数量完全对应,因此触发"Found input variables with inconsistent number of samples"错误。

修复方案

方案1:使用测试样本对应的真实标签计算MSE

如果你的测试集(Heart_test.csv)包含该样本的真实心脏病发作概率标签,直接提取对应标签与预测值计算MSE:

import pandas as pd
from sklearn import tree
from sklearn.metrics import mean_squared_error

# 读取数据
heart = pd.read_csv('heart.csv')
test_data = pd.read_csv('Heart_test.csv')

# 拆分训练集特征与标签(用一维Series避免维度问题)
X_train = heart.iloc[:, 0:13]
Y_train = heart.iloc[:, 13]

# 拆分测试集特征与真实标签
X_test = test_data.iloc[:, 0:13]
Y_test = test_data.iloc[:, 13]  # 假设第14列为测试样本的真实标签

# 训练模型
model = tree.DecisionTreeRegressor()
model.fit(X_train, Y_train)

# 预测并计算MSE
y_pred = model.predict(X_test)
print(mean_squared_error(Y_test, y_pred))

方案2:无真实标签时的处理

如果没有测试样本的真实标签,可直接输出预测结果;若一定要计算MSE,需构造与预测值长度一致的真实值(比如已知的样本真实概率):

import pandas as pd
from sklearn import tree
from sklearn.metrics import mean_squared_error

heart = pd.read_csv('heart.csv')
test = pd.read_csv('Heart_test.csv')

X_train = heart.iloc[:, 0:13]
Y_train = heart.iloc[:, 13]

X_test = test.iloc[:, 0:13]

model = tree.DecisionTreeRegressor()
model.fit(X_train, Y_train)

y_pred = model.predict(X_test)

# 直接输出预测结果
print("单样本预测概率:", y_pred[0])

# 构造真实值计算MSE(替换为实际真实值)
true_value = [0.6]  # 示例:假设该样本真实发作概率为0.6
print("MSE:", mean_squared_error(true_value, y_pred))

关键注意事项

  • 训练模型时,标签建议用一维Series(heart.iloc[:,13])而非二维DataFrame(heart.iloc[:,13:14]),减少维度兼容问题。
  • 所有评估指标(包括MSE)的核心要求:真实值数组与预测值数组的形状、样本数必须完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:39:15