Ошибка в пользовательской функции оценки для xgboost, которая будет использоваться в gridsearchcv
Я использую пользовательскую функцию в gridsearchcv. Функция для расчета отзыва в топ2 децилях. Но я получаю ошибку ниже, пока я бегу grid_search.fit()
:
Ошибка типа: my_custom_func() отсутствует 1 обязательный позиционный аргумент: 'y'
Код следующим образом:
xgb_params = [{
'n_estimators':[100],'learning_rate' : [0.1]
}]
xgb_model = xgb.XGBClassifier()
def my_custom_func(estimator, X, y):
pred_probs = estimator.predict_proba(X)[:, 1]
pred_probs_2 = ( pred_probs>np.percentile(pred_probs,80) ).astype(int)
return recall_score(y, pred_probs_2)*100
my_scorer = make_scorer(my_custom_func, greater_is_better=True, needs_proba = True)
grid_search = GridSearchCV(xgb_model,cv=3,param_grid= xgb_params, scoring=my_scorer)
grid_search.fit(x_train_dummy,y_train)