回归模型预测新数据:是否需用RobustScaler与OneHotEncoder及逆变换?
回归任务新数据预测的预处理与结果还原问题
问题1:预测前是否需要对新数据应用RobustScaler和OneHotEncoder?
是,必须用训练阶段拟合好的同一个RobustScaler和OneHotEncoder实例对新数据做转换,绝对不能重新初始化新实例来拟合新数据:
- 数值特征(示例里的15、1)要通过训练时拟合过的
RobustScaler执行transform操作,保证新数据的缩放规则和训练数据完全一致 - 类别特征(示例里的red、BK)要通过训练时拟合过的
OneHotEncoder执行transform操作,用训练数据中学到的类别映射生成编码,否则模型无法识别不符合训练规则的特征格式
模型是基于处理后的特征训练的,新数据的特征格式、分布必须和训练数据严格对齐,否则预测结果毫无参考价值。
问题2:是否需要使用RobustScaler().inverse_transform将预测值还原为原始数值?
取决于训练阶段的操作细节:
- 如果训练时只对输入的数值特征做了RobustScaler处理,预测目标(标签)没有做任何缩放,那预测值本身就是原始数值范围,不需要逆变换
- 如果训练时对预测目标也用了RobustScaler做了缩放(比如为了提升模型训练稳定性),那必须用训练时拟合标签的那个RobustScaler实例执行
inverse_transform,才能把预测值还原到原始数值范围
注意:绝对不能直接用RobustScaler()新建实例做逆变换,必须复用训练时保存的、拟合过对应数据的实例,否则还原结果会完全错误。
内容的提问来源于stack exchange,提问作者Chubiblan
相关产品推荐
相关产品推荐

