Я пытаюсь создать пользовательскую функцию оценки для реализации в 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)
Заранее спасибо!