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

求助:使用决策树模型时图表仍显示线性回归样式的问题解决

问题解决:决策树回归预测的可视化适配

问题原因

你使用seaborn.jointplot(kind='reg')时,该参数会强制拟合线性回归线,无论预测值来自何种模型,都会呈现线性趋势,完全掩盖了决策树回归的分段常数特性(同一叶子节点的样本会得到相同预测值)。

修正后的可视化代码

1. 实际值vs预测值散点图(替代线性拟合图)

DT.fit(x_train,y_train)
y_dtpred = DT.predict(x_test)
print(y_dtpred)

# 构建对比数据集
lidata = pd.DataFrame({'Actual':y_test,'Predict':y_dtpred})

# 绘制散点图,添加y=x理想预测参考线
g = sns.jointplot(x='Actual', y='Predict', data=lidata, kind='scatter')
g.ax_joint.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--', lw=2)
plt.show()

此图会清晰展示决策树的预测特征:大量预测点集中在若干水平线上,体现其分段常数的输出特性。

2. 实际值vs预测值折线图(优化展示)

fig = plt.figure(figsize=(16,8))
lidata = pd.DataFrame({'Actual':y_test,'Predict':y_dtpred}).reset_index(drop=True)
# 分别绘制两条折线,突出决策树的阶梯状预测
plt.plot(lidata[:50]['Actual'], label='Actual')
plt.plot(lidata[:50]['Predict'], label='Predict')
plt.legend()
plt.show()

决策树的预测线会呈现明显的阶梯形态,直观反映其同一区间输出固定值的特性。

额外优化:展示决策树的分段逻辑

如果想更直观体现决策树对输入特征的划分规则,可以结合输入特征绘制:

# 按输入特征排序,展示分段预测规律
sorted_data = pd.DataFrame({'Income': x_test['median_income'], 'Predict': y_dtpred}).sort_values(by='Income')
plt.figure(figsize=(16,8))
plt.scatter(sorted_data['Income'], sorted_data['Predict'])
plt.xlabel('Median Income')
plt.ylabel('Predicted House Value')
plt.title('Decision Tree Regression Predictions by Income')
plt.show()

该图会清晰显示决策树将收入划分为多个区间,每个区间对应一个固定预测值,完美呈现决策树回归的核心特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:41:15