运行Lasso回归时出现sklearn NotFittedError错误如何解决
Lasso回归NotFittedError报错排查与解决
报错原因
sklearn.exceptions.NotFittedError: 该Lasso实例尚未拟合,请在使用该评估器前传入合适参数调用'fit'方法。
触发报错的直接原因是代码中存在两处逻辑错误:
- 你初始化了
lasso_reg = Lasso(normalize=True)这个新的Lasso实例后,没有调用fit()方法传入训练数据完成模型拟合,直接调用predict()方法进行预测,触发了sklearn的未拟合校验报错。 - 额外逻辑缺陷:你第一个初始化的
lasso实例拟合时错误传入了测试集X_test和y_test,模型拟合应该使用训练集数据,否则会导致数据泄露,失去模型评估的意义。
修复方案
调整模型拟合顺序,所有模型先使用训练集完成拟合后再进行预测/评分操作,修正后的完整代码如下:
from sklearn import datasets from sklearn.linear_model import Lasso from sklearn.model_selection import train_test_split # 加载波士顿数据集 bh = datasets.load_boston() X = bh.data y = bh.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建Lasso回归实例并拟合训练集 lasso = Lasso(alpha=1.0) lasso.fit(X_train, y_train) # 计算模型得分 print(lasso.score(X_test, y_test), lasso.score(X_train, y_train)) # 初始化带normalize参数的Lasso实例,先拟合再预测 lasso_reg = Lasso(normalize=True) lasso_reg.fit(X_train, y_train) y_pred_lass = lasso_reg.predict(X_test) print(y_pred_lass)
内容的提问来源于stack exchange,提问作者anna
相关产品推荐
相关产品推荐

