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

如何用Matplotlib绘制最优拟合平面?线性回归是否适用?

问题解答:Matplotlib绘制最优拟合平面与线性回归适用性分析

一、线性回归是否适用你的数据集

从你描述的数据分布(整体平滑仅少量异常点)来看,线性回归是适用的。线性回归适合近似线性关系的数据集,少量异常点如果对整体趋势影响不大,直接用普通最小二乘线性回归即可;如果异常点干扰较强,可以考虑使用sklearn中的RANSACRegressor(稳健回归)来自动剔除异常值的影响。

二、如何用Matplotlib绘制最优拟合平面

你已经通过线性回归得到了参数a1、a2、c,拟合平面的公式为:Z_fit = a1 * X + a2 * Y + c。只需基于这个公式生成拟合的Z值矩阵,再用plot_surface绘制即可。以下是修改后的完整代码:

from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt
from sklearn import linear_model
import numpy as np  # 补充原代码缺失的numpy导入
plt.style.use('seaborn-poster')

x = np.array([12.5, 10, 9.5, 7.5, 6])
y = np.array([30, 45, 50, 55, 60, 65])
z = np.array([
    [62.13, 55.41, 54.49, 46.46, 42.13],
    [67.11, 59.43, 56.39, 52.64, 41.89],
    [82.89, 61.13, 57.30, 50.75, 43.02],
    [73.31, 60.57, 57.17, 52.64, 41.73],
    [78.11, 62.92, 63.40, 58.08, 48.69],
    [83.96, 65.19, 60.22, 53.57, 44.22]
])

# 生成网格数据
X, Y = np.meshgrid(x, y)
Z = z

# 扁平化数据用于回归计算
x1, y1, z1 = X.flatten(), Y.flatten(), Z.flatten()
X_data = np.array([x1, y1]).reshape((-1, 2))
Y_data = z1

# 执行线性回归拟合
reg = linear_model.LinearRegression().fit(X_data, Y_data)
a1, a2, c = float(reg.coef_[0]), float(reg.coef_[1]), float(reg.intercept_)

# 计算拟合平面的Z值矩阵
Z_fit = a1 * X + a2 * Y + c

# 绘制3D图
fig = plt.figure(figsize=(9,9))
ax = plt.axes(projection='3d')
ax.grid()

# 绘制拟合平面(设置透明度避免遮挡散点)
ax.plot_surface(X, Y, Z_fit, alpha=0.5, cmap='coolwarm', label='Fitted Plane')
# 绘制原始数据散点
ax.scatter(X, Y, Z, c='r', s=50, label='Original Data')

ax.set_title('Figure 1.21 - Plot of Final results')
ax.set_xlabel('Radius of Ball (mm)', labelpad=20)
ax.set_ylabel('Height from which ball was dropped (cm)', labelpad=20)
ax.set_zlabel('Diameter of ripple (mm)', labelpad=20)
ax.legend()  # 添加图例区分拟合平面与原始数据

plt.show()

关键修改说明:

  1. 补充了原代码缺失的numpy导入,否则无法运行数组相关操作
  2. 新增Z_fit = a1 * X + a2 * Y + c生成拟合平面的数值矩阵
  3. 绘制拟合平面时设置alpha=0.5(半透明),避免遮挡原始数据点
  4. 添加图例,清晰区分拟合平面和原始数据

内容的提问来源于stack exchange,提问作者AG-88301

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:25:19