如何在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
相关产品推荐
相关产品推荐

