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

Python保存不同阶数多项式回归模型时所有模型均为15阶问题排查

问题原因
  • 重复使用同一个线性回归实例:你在循环外仅初始化了一次LinearRegression实例,sklearn估计器的fit方法是原地修改实例的训练参数(系数、截距等),你往列表里添加的都是同一个实例的引用,所有元素最终会和最后一次训练的15阶模型参数完全一致。
  • append调用逻辑错误:你写的model.append(models)是完全错误的语法,LinearRegression实例没有append方法,你应该调用列表的append方法将训练好的模型加入列表,正确写法为models.append(model)。
修正后代码
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error as MSE

df = pd.read_csv("kc_house_train_data(1).csv")

X = df['sqft_living'].values
Y = df['price'].values

def Poly(X, degree):
    poly = PolynomialFeatures(degree = degree)
    poly_X = poly.fit_transform(X.reshape(-1,1))
    return poly_X

models = []

for i in range(15):
    poly_X = Poly(X, i+1)
    # 每次循环都初始化新的线性回归实例,避免参数覆盖
    lm = LinearRegression()
    model = lm.fit(poly_X, Y)
    # 正确把模型加入列表
    models.append(model)
补充说明

如果需要后续对应不同阶数的模型,可以把列表改成字典,key存阶数,value存模型,调用时更方便:

models = {}
for i in range(15):
    degree = i+1
    poly_X = Poly(X, degree)
    lm = LinearRegression()
    models[degree] = lm.fit(poly_X, Y)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:06:02