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

matplotlib绘制LinearRegression时绘图报错、多图合并及数值缩放问题求解

问题解决方案

1. 线性回归回归线显示异常、删除散点代码报错的问题

原因

你的x_test是包含多特征的二维数组(删除指定列后剩余特征数>1),直接调用plt.plot(x_test, y_pred)时,matplotlib会把x_test的每一列当作独立的X序列和一维的y_pred匹配,删除散点代码后该尺寸不匹配问题会直接触发报错;同时因为多特征输入,回归线会出现多条杂乱线段的异常显示。

修复代码

只保留你要绘制的第一个特征(人均GDP)的对应维度,排序后再绘制回归线即可:

# 提取测试集中的人均GDP特征(第一列)
x_test_gdp = x_test[:, 0]
# 按GDP值排序,避免回归线混乱
sort_idx = np.argsort(x_test_gdp)
x_sorted = x_test_gdp[sort_idx]
y_pred_sorted = y_pred[sort_idx]

plt.scatter(x_test_gdp, y_test, label='实际值')
plt.plot(x_sorted, y_pred_sorted, color='green', linewidth=1, label='回归线')
plt.legend()
plt.show()

2. Population列数值过大导致其他列显示异常的问题

解决方案

绘图时对人口列的坐标轴使用对数刻度即可,不需要修改原始数据,就能把十亿级别的数值压缩到合理的显示范围:
如果是单独绘制人口散点图,在绘图后添加一行plt.xscale('log')即可;如果是合并子图的场景,直接对子图的X轴设置对数刻度。

3. 三张散点图合并到同一张画布的问题

解决方案

提前创建matplotlib子图对象,把每个散点图指定绘制到对应子图即可,示例代码如下:

# 创建1行3列的画布,可根据需要调整figsize调整画布大小
fig, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(18, 5))

# 分别指定ax参数绘制到对应子图
dataset.plot(x="GDP ($ per capita)", y="Infant mortality ", style="o", ax=ax1, title="人均GDP与婴儿死亡率关系")
dataset.plot(x="Literacy (%)", y="Infant mortality ", style="o", ax=ax2, title="识字率与婴儿死亡率关系")
dataset.plot(x="Population", y="Infant mortality ", style="o", ax=ax3, title="人口与婴儿死亡率关系")
# 给人口子图设置对数X轴,解决数值过大显示问题
ax3.set_xscale("log")

plt.tight_layout()
plt.show()

你可以把原代码中单独绘制三个散点图的代码替换为以上代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:24:03