Sklearn中LinearRegression训练后是否需再次调用fit()?代码优化咨询
关于LinearRegression拟合步骤的疑问解答
1. 能不能省略lm.fit(X, y)这一行?
这得看你的最终预测目标来判断:
- 如果你的目的是用所有可用的X和y数据训练模型,再对X_real做预测,那这一行绝对不能省略!你之前的
lm.fit(X_train, y_train)只用了20%的数据(因为test_size=0.8,训练集仅占总量的20%),重新用全量数据拟合能让模型学到更全面的信息,预测效果通常会更好。 - 如果你只是想用之前基于X_train训练好的模型来预测X_real,那可以省略这行,但要注意:此时模型仅基于小部分数据训练,预测性能大概率不如全量数据训练的模型。
简单总结:如果要得到基于全量数据的最优预测模型,必须保留;如果只是用训练集模型做临时预测,才可以省略。
2. 无需计算精度时,更优的方法是什么?
当然有更简洁高效的方案!你原来的train_test_split、lm.predict(X_test)、lm.score(X_test, y_test)都是为了评估模型精度。如果不需要做精度评估,完全可以跳过这些步骤,直接用全量数据拟合后预测即可——这样既节省计算资源,又能让模型利用所有可用信息:
lm = LinearRegression() # 直接用全部数据训练模型 lm.fit(X, y) # 对新特征做预测 pred = lm.predict(X_real)
这个流程去掉了不必要的评估环节,是不需要精度验证时的最优选择。
内容的提问来源于stack exchange,提问作者Khun
相关产品推荐
相关产品推荐

