预测新数据集时:scaler.fit_transform与transform该如何选择?
关于Lasso模型部署时标准化方法的选择
核心结论
必须使用 scaler.transform(new_dataset),绝对不能用 fit_transform
为什么两者结果不同?
fit_transform会针对新数据集重新计算均值、标准差等统计量,再用这些新统计量做标准化。但你的Lasso模型是基于训练数据的统计量训练出来的,新数据用自己的统计量会导致数据分布和训练时完全脱节,预测结果毫无意义。transform是直接复用训练阶段已经计算好的统计量来处理新数据,这样新数据的分布和训练数据保持一致,模型的预测逻辑才能正常工作。
额外修正:你的多项式转换代码也有问题
处理新数据时,你用了 loaded_converter.fit_transform(campaign),这也是错误的。正确做法是用 loaded_converter.transform(campaign)——多项式转换器的特征生成规则是基于训练数据确定的,重新fit新数据会生成和训练时不匹配的特征,模型根本无法正确处理。
修正后的预测代码:
campaign = [[149,22,12]] transformed_data = loaded_converter.transform(campaign) # 替换为transform scaled_data = loaded_scaler.transform(transformed_data) loaded_model.predict(scaled_data)
内容的提问来源于stack exchange,提问作者shubham kawde
相关产品推荐
相关产品推荐

