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

使用两个数据集训练测试决策树:报错排查及结果导出求助

错误原因排查与解决

核心错误原因

你遇到的ValueError本质是混淆矩阵计算时输入的真实标签和预测标签样本数不匹配:

  • y_test是通过train_test_split从训练集拆分出的内部测试集,样本数为1500*0.3=450
  • y_predict是用外部的data_test.csv(917个样本)预测得到的结果,样本数为917
    两者长度不一致,无法计算混淆矩阵。

另外,预测时直接传入test_data也存在问题:test_data包含107列(含目标列),而训练时模型接收的是106列特征,虽然这一步没直接报错,但不符合模型输入要求,应该提取前106列特征作为预测输入。

修正后的代码示例

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report,confusion_matrix

# 读取并预处理数据
test_data = pd.read_csv("data_test.csv")
Data = pd.read_csv("data.csv")
Data = Data.fillna(0)
test_data = test_data.fillna(0)

# 处理训练集
X = Data.iloc[:, 0:106]
y = Data["Target (Col 107)"]
X_train, X_test_internal, y_train, y_test_internal = train_test_split(X, y, test_size=.30, random_state=1)

# 训练模型
dTreeR = DecisionTreeClassifier(criterion='gini', max_depth=3, random_state=1)
dTreeR.fit(X_train, y_train)

# 评估内部测试集
print("内部测试集得分:", dTreeR.score(X_test_internal, y_test_internal))

# 处理外部测试集:提取特征和真实标签
X_test_external = test_data.iloc[:, 0:106]
y_test_external = test_data["Target (Col 107)"]

# 外部测试集预测
y_predict = dTreeR.predict(X_test_external)

# 计算外部测试集的混淆矩阵和分类报告
cm = confusion_matrix(y_test_external, y_predict, labels=[0, 1])
print("外部测试集混淆矩阵:\n", cm)
print("外部测试集分类报告:\n", classification_report(y_test_external, y_predict))
导出决策树预测结果到CSV

你可以将预测结果转换为pandas.DataFrame,然后使用to_csv方法导出,提供两种常用方式:

方法1:仅导出预测结果

# 将预测结果转为DataFrame
predict_df = pd.DataFrame(y_predict, columns=["Predicted_Target"])
# 导出到CSV,不保留索引
predict_df.to_csv("prediction_results.csv", index=False)

方法2:导出预测结果+外部测试集的真实标签(可选)

# 合并真实标签和预测结果
result_df = pd.DataFrame({
    "True_Target": y_test_external,
    "Predicted_Target": y_predict
})
# 导出到CSV,不保留索引
result_df.to_csv("prediction_with_true_labels.csv", index=False)

内容的提问来源于stack exchange,提问作者Revanth Kumar Perla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:31:06