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

多元线性回归实践:合成数据样本的Matplotlib可视化咨询

嘿,针对你这个线性回归合成数据的可视化需求,我给你整理了几个实用的方案,既能直观展示单个特征和y的关联,也能呈现多特征与y的整体关系,直接上代码和解释:

先补全你的数据生成代码(方便衔接)

首先假设你是用NumPy生成的数据,先把这部分代码列出来(如果你的代码不一样,替换成自己的就行):

import numpy as np
import matplotlib.pyplot as plt

# 生成数据
np.random.seed(42)  # 固定随机种子保证可复现
x_data = np.random.randn(2000, 3)  # 2000个样本,3个特征
w_real = np.array([2.5, -1.2, 0.8])  # 真实权重
b_real = 3.0  # 真实偏置
noise = np.random.randn(2000) * 0.5  # 高斯噪声
y_data = x_data @ w_real + b_real + noise  # 生成真实标签
方案1:单个特征与y的关系(子图形式)

因为你有3个特征,最直观的方式是把每个特征和y的散点图放在同一个画布的子图里,这样能清晰看到每个特征和y的线性趋势:

fig, axes = plt.subplots(1, 3, figsize=(15, 4))  # 1行3列的子图

# 循环遍历每个特征,绘制散点图
for idx, ax in enumerate(axes):
    ax.scatter(x_data[:, idx], y_data, alpha=0.3, s=10)  # alpha设置透明度避免点重叠
    ax.set_title(f"Feature {idx+1} vs y")
    ax.set_xlabel(f"Feature {idx+1}")
    ax.set_ylabel("y")
    # 可以加上真实的拟合线,更直观
    x_line = np.linspace(x_data[:, idx].min(), x_data[:, idx].max(), 100)
    y_line = w_real[idx] * x_line + b_real  # 单个特征的权重+偏置(近似趋势)
    ax.plot(x_line, y_line, color='red', linewidth=2, label='True Trend')
    ax.legend()

plt.tight_layout()  # 自动调整子图间距
plt.show()

这个方案的好处是简单易懂,能快速看到每个特征和y的线性相关性,适合初步探索数据。

方案2:三维特征与y的关系(三维散点图)

如果想同时展示三个特征和y的关系,可以用三维散点图,把三个特征作为坐标轴,y值用颜色来区分:

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

# 绘制三维散点,c=y_data表示用y的数值来着色
scatter = ax.scatter(x_data[:, 0], x_data[:, 1], x_data[:, 2], c=y_data, cmap='viridis', alpha=0.5, s=15)

ax.set_xlabel("Feature 1")
ax.set_ylabel("Feature 2")
ax.set_zlabel("Feature 3")
ax.set_title("3 Features vs y (colored by y value)")

# 添加颜色条,解释颜色对应的y值
plt.colorbar(scatter, label='y value')

plt.show()

这个方案能让你看到三个特征组合起来和y的整体分布,不过三维图建议在交互模式下拖动视角,能更清楚地观察数据规律。

方案3:真实y与预测y的对比(训练后用)

等你训练完线性回归模型得到预测值y_pred后,还可以画真实值和预测值的散点图,加上y=x的参考线,直观评估拟合效果:

# 假设你已经训练得到y_pred
# y_pred = model.predict(x_data)

plt.figure(figsize=(8, 8))
plt.scatter(y_data, y_pred, alpha=0.3, s=10)
plt.plot([y_data.min(), y_data.max()], [y_data.min(), y_data.max()], color='red', linewidth=2, label='Perfect Prediction')
plt.xlabel("True y")
plt.ylabel("Predicted y")
plt.title("True y vs Predicted y")
plt.legend()
plt.grid(True)
plt.show()

如果点越靠近红色的y=x线,说明你的模型拟合效果越好。

以上这几个方案基本能覆盖你从数据探索到模型评估的可视化需求,你可以根据自己的需求选择使用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:54:36