Я пытаюсь создать пользовательскую функцию оценки для реализации в GridSearchCV для проблемы классификации и не думаю, что вполне понимаю, как она работает (я прочитал документацию). Моя цель состоит в том, чтобы придать различный вес типам ошибочных классификаций. Мой код выглядит следующим образом. good
и excellent
— это два класса, к которым относятся мои образцы. Я думаю, проблема в том, что GridSearchCV
передает истинные и предсказанные значения в score_func
, но я не знаю, как это исправить.
def score_func(y, y_pred):
'''score function for grid search'''
error = 0
for i in range(len(y)):
if y[i] == 'excellent':
if y_pred[i] == 'excellent':
error += 10
elif y_pred[i] == 'good':
error += 5
return error
score_f = make_scorer(score_func, needs_proba=False ,needs_threshold=False)
RF = make_pipeline(
StandardScaler(),
RandomForestClassifier(random_state=101, criterion = 'gini')
)
gs_rf = GridSearchCV(estimator=RF, param_grid=param_grid, scoring=score_f,
cv=KFold(5, True, random_state=1234)).fit(X_data,y_data)
Заранее спасибо!
make_scorer()
? - person Peter Prescott   schedule 13.04.2020make_scorer
— это не функция, это метрика, импортированная из sklearn. Проверьте это здесь. - person Henrique Branco   schedule 13.04.2020