sklearn Pipeline缩放后预测值还原为原始尺度的实现方法
预测值逆变换实现方案
你Pipeline中定义的StandardScaler仅作用于输入特征X,不会对目标变量y产生缩放影响,从你变量名y_pred_log可以判断你训练模型时应该对原始目标值做了对数变换,绝大多数共享单车需求预测场景下用的是np.log1p()做的对数变换,对应的逆变换步骤如下:
核心实现代码
import numpy as np # 逆对数变换 -> 过滤负数 -> 转整数 y_pred = np.expm1(y_pred_log).clip(min=0).astype(int)
代码说明
np.expm1()和训练时的np.log1p()是配对的对数逆变换操作,对小数值的计算精度更高,同时适配目标变量存在0值的场景.clip(min=0)用于过滤负预测值,符合租赁量不可能为负的业务逻辑.astype(int)直接将浮点型预测结果转为整数类型
如果你是对目标变量单独做了标准化而非对数变换,可使用对应scaler的逆变换方法实现:
# 需替换为你自己拟合的y值scaler变量名 y_pred = y_scaler.inverse_transform(y_pred_log.reshape(-1, 1)).flatten().clip(min=0).astype(int)
内容的提问来源于stack exchange,提问作者ShridharK
相关产品推荐
相关产品推荐

