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

如何为类拟合LinearRegression?解决NotFittedError报错问题

解决NotFittedError:LinearRegression未拟合的问题

问题根源

你调用代码的逻辑存在关键错误——每次执行models()都会生成一个全新的models类实例。第一个models().train_lr(...)确实训练了该实例内的lm模型,但这个实例执行完就被销毁了;第二个models().test_lr(...)是创建了另一个全新的models实例,它的lm从未经过训练,自然触发了未拟合的错误。

解决方案

1. 复用同一个实例(核心修复)

创建一次models实例并保存到变量,之后训练和测试都使用这个变量:

# 创建实例并保存
my_model = models()
# 用同一个实例训练模型
my_model.train_lr(X_train, y_train, 'Base line')
# 用同一个实例测试模型
my_model.test_lr(X_test, y_test, 'Base line')

2. 优化train_lr方法(可选)

原train_lr方法末尾重复执行了self.lm.fit(X, y),完全没必要(已经在开头完成拟合),修改后更高效:

def train_lr(self, X, y, title):
    self.lm.fit(X, y)
    y_hat = pd.DataFrame(self.lm.predict(X))
    mse = metrics.mean_squared_error(y, y_hat)        
    print('{} set'.format(title))
    print('R2 {}:'.format(title), self.lm.score(X, y))
    print('RMSE {}:'.format(title), math.sqrt(mse))
    print('')
    # 返回训练好的模型即可,无需重复拟合
    return self.lm

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:24:28