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

多项式回归迭代中,如何为每个拟合曲线生成独立绘图?

为各阶多项式拟合生成独立绘图的解决方案

你的问题出在循环中没有创建新的绘图实例,所有拟合曲线都绘制在了同一个画布上。只需在每次迭代时创建新的绘图窗口,并添加原始数据对比,就能实现每个拟合结果单独显示的需求。

修改后的完整代码

import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_squared_error

error_list=[]
bias_list=[]
variance_list=[]
degrees=[1,3,7,11,16,20]
    
for degree in degrees:
    # 每次循环创建新的绘图画布
    plt.figure(figsize=(8, 6))
    
    polybig_features = PolynomialFeatures(degree=degree, include_bias=False)
    lin_regressor = LinearRegression()
    polynomial_regression  = Pipeline([("poly_features", polybig_features),("lin_regressor", lin_regressor)])
    
    polynomial_regression.fit(X, y)
     
    y_predict= polynomial_regression.predict(X)
    
    error = mean_squared_error(y, y_predict)
    error_list.append(error)
    
    bias_list.append(abs(((mean_squared_error(y, y_predict))-(np.var(y_predict)))))
    variance_list.append(np.var(y_predict))
    
    # 绘制原始数据散点图
    plt.scatter(X, y, label='原始数据', alpha=0.6)
    # 绘制拟合曲线
    plt.plot(X, y_predict, color='r', label=f'{degree}阶拟合曲线')
    
    # 添加图表标注
    plt.title(f'{degree}阶多项式拟合结果')
    plt.xlabel('X')
    plt.ylabel('y')
    plt.legend()
    plt.tight_layout()
    # 显示当前绘图(若要批量保存可替换为plt.savefig())
    plt.show()

关键修改说明

  • plt.figure():在每次循环开头创建新的绘图对象,确保每个拟合结果在独立窗口展示
  • plt.scatter(X, y):添加原始数据点,直观对比拟合效果
  • 标题、坐标轴标签与图例:明确当前图对应的拟合阶数,提升可读性
  • plt.tight_layout():自动调整图表元素位置,避免标签重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:35:19