如何使用Matplotlib为线性回归程序添加散点图和最佳拟合线
多变量线性回归模型添加散点图与拟合线方案
你当前使用的是多输入特征的线性回归模型,无法直接在二维平面绘制所有特征对应的拟合关系,以下提供两种常用的绘图实现方案:
前置补全
首先需要补全你原有代码顶部缺失的导入语句:
import pandas as pd import numpy as np from sklearn import linear_model, model_selection from matplotlib import pyplot as plt
方案1:单个输入特征与目标值的拟合图
以和目标值G3相关性最高的G1特征为例,控制其他输入特征为测试集均值,绘制单特征与目标值的散点+拟合线:
# 以下代码添加到原有代码末尾即可 # 选取G1特征作为x轴(对应x_test的第0列),可自行替换为其他特征的列索引 feature_x = x_test[:, 0] # 绘制测试集实际值散点 plt.scatter(feature_x, y_test, color='steelblue', label='实际G3值') # 生成拟合线的x取值范围 x_line = np.linspace(feature_x.min(), feature_x.max(), 100) # 构造拟合线的输入特征数组:固定其他特征为测试集均值,仅变化G1的值 other_features_mean = x_test[:, 1:].mean(axis=0) x_line_full = np.array([[x, *other_features_mean] for x in x_line]) # 预测拟合线对应的y值 y_line = linear.predict(x_line_full) # 绘制最佳拟合线 plt.plot(x_line, y_line, color='tomato', linewidth=2, label='最佳拟合线') # 配置图表信息 plt.xlabel('G1成绩') plt.ylabel('G3最终成绩') plt.title('G1成绩与最终成绩的拟合关系') plt.legend() plt.show()
如果要绘制其他特征和G3的拟合关系,只需修改feature_x = x_test[:, 0]里的列索引即可,索引对应关系如下:
- 0:G1
- 1:G2
- 2:studytime
- 3:failures
- 4:absences
方案2:预测值与实际值的整体拟合效果
如果不需要关联单个输入特征,只想直观查看模型整体预测效果,可以直接绘制预测值和真实值的散点+参考拟合线:
# 以下代码添加到原有代码末尾即可 # 绘制实际值和预测值的散点 plt.scatter(y_test, predictions, color='steelblue', label='预测值 vs 实际值') # 绘制完美拟合的参考线(y=x) plt.plot([y.min(), y.max()], [y.min(), y.max()], color='tomato', linewidth=2, label='完美拟合参考线') plt.xlabel('实际G3值') plt.ylabel('预测G3值') plt.title('模型预测效果拟合图') plt.legend() plt.show()
内容的提问来源于stack exchange,提问作者thunderOP
相关产品推荐
相关产品推荐

