Beispiel #1
0
def _fit_random_forest(X_train, y_train, 
                        obj_func_name = "mse",
                        sample_weight = None, 
                        model_params = None,
                        log_target_reg = False):
    if model_params is None:
        model_params = {}

    # checking if obj_func is correct
    _check_obj_func_name(obj_func_name, "random_forest")
    if "criterion" in model_params.keys():
        assert obj_func_name == model_params["criterion"], "use the obj_func_name argument instead of setting criterion in model_params"
    model_params["criterion"] = obj_func_name

    model = RandomForestRegressor(**model_params)
    if log_target_reg:
        model = _log_target_regressor(model)
    model.fit(X = X_train, y = y_train, sample_weight = sample_weight)

    if log_target_reg:
        if hasattr(model.regressor_, "oob_prediction_"):
            oob_pred = model.regressor_.oob_prediction_
            # must convert back to original units
            oob_pred = model.inverse_func(oob_pred) 
        else:
            oob_pred = None
        model.oob_prediction_ = oob_pred
        model.feature_importances_ = model.regressor_.feature_importances_

    return model