求助:使用决策树模型时图表仍显示线性回归样式的问题解决
问题解决:决策树回归预测的可视化适配
问题原因
你使用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
相关产品推荐
相关产品推荐

