小编nve*_*gos的帖子

是否可以将 TransformedTargetRegressor 添加到 scikit-learn 管道中?

我正在对一些数据建立一个预测分析管道,我正在选择模型。我的目标变量是偏斜的,所以我想对它进行对数变换以提高我的线性回归估计器的性能。我遇到了相对较新TransformedTargetRegressor的 scikit-learn,我想我可以将它用作管道的一部分。我附上我的代码

我最初的尝试是y_train在调用之前进行转换gs.fit(),将其转换为np.log1p(y_train). 这行得通,我可以执行嵌套的交叉验证并返回所有估算器感兴趣的指标。但是,我希望能够在以前看不见的数据(验证集)上获得训练模型的 R^2 和 RMSE,我明白为了做到这一点,我需要使用(例如)r2_score函数y_val, preds,其中预测需要已经转换回真实值,即,preds = np.expm1(gs.predict(X_val))

### Create a pipeline
pipe = Pipeline([
    # the transformer stage is populated by the param_grid
    ('transformer', TransformedTargetRegressor(func=np.log1p, inverse_func=np.expm1)),
    ('reg', DummyEstimator())  # Placeholder Estimator
])

### Candidate learning algorithms and their hyperparameters
alphas = [0.001, 0.01, 0.1, 1, 10, 100]
param_grid = [  
                {'transformer__regressor': Lasso(),
                 'reg': [Lasso()], # Actual Estimator
                 'reg__alpha': alphas},
                {'transformer__regressor': LassoLars(),
                 'reg': [LassoLars()], # …
Run Code Online (Sandbox Code Playgroud)

python machine-learning linear-regression scikit-learn

6
推荐指数
1
解决办法
2780
查看次数