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

如何在Python中为机器学习模型绘制散点图上的回归直线?

如何在散点图上绘制梯度提升回归模型的拟合直线

首先先修正你代码里的一个明显错误:train_test_split的返回值写错了,最后一个应该是y_test,不是重复的y_train。

接下来按以下步骤操作就能画出你要的回归直线:

  • 第一步:修正数据划分并完成模型训练
    先把数据划分的代码改对,然后单独训练模型,方便后续调用:

    from sklearn.ensemble import GradientBoostingRegressor
    from sklearn.model_selection import train_test_split
    import matplotlib.pyplot as plt
    
    # 修正返回值错误
    X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.25, random_state=42)
    # 实例化并训练模型
    model = GradientBoostingRegressor()
    model.fit(X_train, y_train)
    # 获取训练集和测试集的预测结果
    y_train_pred = model.predict(X_train)
    y_test_pred = model.predict(X_test)
    
  • 第二步:绘制散点图与回归拟合线
    从你的散点图来看是单特征回归(两个变量的关系),可以先把特征按顺序排序,让拟合线更平滑:

    # 对训练集特征排序,保证拟合线连贯
    sorted_indices = X_train.flatten().argsort()
    X_train_sorted = X_train.flatten()[sorted_indices]
    y_train_pred_sorted = y_train_pred[sorted_indices]
    
    # 绘制原始散点图(训练集+测试集)
    plt.scatter(X_train, y_train, label='训练集数据', alpha=0.6)
    plt.scatter(X_test, y_test, label='测试集数据', alpha=0.6)
    
    # 绘制拟合直线
    plt.plot(X_train_sorted, y_train_pred_sorted, color='red', linewidth=2, label='回归拟合线')
    
    # 添加图例和标签
    plt.xlabel('特征变量')
    plt.ylabel('目标变量')
    plt.legend()
    plt.show()
    

说明:如果你的features已经是一维数组,直接用X_train.argsort()替代X_train.flatten().argsort()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:05:06