@@ -65,7 +65,7 @@ def transformer(y, func=None):
65
65
66
66
def model_action (model , X_train , y_train , X_test ,
67
67
sample_weight = None , action = None ,
68
- transform = None ):
68
+ transform = None , ** fit_args ):
69
69
"""Performs model action.
70
70
This wrapper gives us ability to choose action dynamically
71
71
(e.g. predict or predict_proba).
@@ -78,9 +78,9 @@ def model_action(model, X_train, y_train, X_test,
78
78
# We use following condition, because some models (e.g. Lars) may not have
79
79
# 'sample_weight' parameter of fit method
80
80
if sample_weight is not None :
81
- return model .fit (X_train , transformer (y_train , func = transform ), sample_weight = sample_weight )
81
+ return model .fit (X_train , transformer (y_train , func = transform ), sample_weight = sample_weight , ** fit_args )
82
82
else :
83
- return model .fit (X_train , transformer (y_train , func = transform ))
83
+ return model .fit (X_train , transformer (y_train , func = transform ), ** fit_args )
84
84
elif 'predict' == action :
85
85
return transformer (model .predict (X_test ), func = transform )
86
86
elif 'predict_proba' == action :
@@ -127,7 +127,7 @@ def stacking(models, X_train, y_train, X_test,
127
127
transform_target = None , transform_pred = None ,
128
128
mode = 'oof_pred_bag' , needs_proba = False , save_dir = None ,
129
129
metric = None , n_folds = 4 , stratified = False ,
130
- shuffle = False , random_state = 0 , verbose = 0 ):
130
+ shuffle = False , random_state = 0 , verbose = 0 , ** fit_args ):
131
131
"""Function 'stacking' takes train data, test data and list of 1-st level
132
132
models, and returns stacking features, which can be used with 2-nd level model.
133
133
@@ -565,7 +565,7 @@ def your_metric(y_true, y_pred):
565
565
566
566
# Fit 1-st level model
567
567
if mode in ['pred_bag' , 'oof' , 'oof_pred' , 'oof_pred_bag' ]:
568
- _ = model_action (model , X_tr , y_tr , None , sample_weight = sample_weight_tr , action = 'fit' , transform = transform_target )
568
+ _ = model_action (model , X_tr , y_tr , None , sample_weight = sample_weight_tr , action = 'fit' , transform = transform_target , ** fit_args )
569
569
570
570
# Predict out-of-fold part of train set
571
571
if mode in ['oof' , 'oof_pred' , 'oof_pred_bag' ]:
@@ -625,7 +625,7 @@ def your_metric(y_true, y_pred):
625
625
if mode in ['pred' , 'oof_pred' ]:
626
626
if verbose > 0 :
627
627
print (' Fitting on full train set...\n ' )
628
- _ = model_action (model , X_train , y_train , None , sample_weight = sample_weight , action = 'fit' , transform = transform_target )
628
+ _ = model_action (model , X_train , y_train , None , sample_weight = sample_weight , action = 'fit' , transform = transform_target , ** fit_args )
629
629
if 'predict_proba' == action :
630
630
col_slice_model = slice (model_counter * n_classes , model_counter * n_classes + n_classes )
631
631
else :
0 commit comments