1.线性模型
分类
线性模型系数解释中的常见缺陷
Pipeline
使用 make_pipeline 函数创建一个 sklearn 中的 Pipeline 对象 model,该 Pipeline 包含:预处理器 preprocessor 和 TransformedTargetRegressor。
model = make_pipeline(
preprocessor,
TransformedTargetRegressor(
regressor=Ridge(alpha=1e-10),
func=np.log10,
inverse_func=sp.special.exp10
)
)
- 预处理器 preprocessor
preprocessor 是一个已经定义好的预处理步骤:
preprocessor = make_column_transformer(
(OneHotEncoder(drop='if_binary'), categorical_columns),
remainder='passthrough'
-
TransformedTargetRegressor
TransformedTargetRegressor 是 sklearn 中的一个包装器类,用于处理回归问题中目标变量(y)的变换。它在训练阶段对目标变量应用一个指定的变换函数(func),在预测阶段使用相应的逆变换函数(inverse_func)恢复原始尺度的目标值。这样可以在回归模型内部处理目标变量的非线性关系或尺度问题,而无需手动对数据进行变换。 -
Regressor: Ridge(alpha=1e-10)
使用岭回归(Ridge Regression)作为内部的回归模型,设置正则化参数 alpha=1e-10。岭回归在最小化残差平方和的同时引入 L2 正则化,有助于防止过拟合并提高模型的泛化能力。 -
Func: np.log10:
将目标变量 y 应用以10为底的对数变换。对数变换常用于处理右偏分布(长尾分布)的目标变量,可以压缩大值范围,使模型对较小的变化更加敏感,尤其是在存在极端值的情况下。 -
Inverse_func:
sp.special.exp10: 设置逆变换函数为以10为底的指数函数(sp.special.exp10 是 scipy.special 模块提供的以10为底的指数函数,等价于 10 ** x)。在模型预测阶段,将对数尺度的预测结果逆变换回原始尺度,以便得到实际意义的目标值。
查看特征
feature_names = (model.named_steps['columntransformer']
.name