Я хотел бы реализовать пользовательскую функцию оценки для GridsearchCV. Я попытался взглянуть на этот пример https://stats.stackexchange.com/questions/110599/how-to-get-both-mse-and-r2-from-a-sklearn-gridsearchcv,, но мой код заканчивается бесконечным циклом, он продолжает работать без каких-либо результатов ... Вот код, который я использую:
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.metrics.scorer import make_scorer
def my_custom_loss_func(y_true, y_pred):
ps = precision_score(y_true, y_pred)
perc_bet = np.count_nonzero(y_pred)/len(y_pred)
result = (ps + perc_bet) / (1/ps)
return result
scorer = make_scorer(my_custom_loss_func, greater_is_better=True)
model = SGDClassifier(random_state=0)
grid_values = {
'tol': [0.0001, 0.005]
}
grid = GridSearchCV(model, param_grid = grid_values, scoring=scorer, n_jobs=-1, return_train_score=False)
grid.fit(X_train_scaled, y_train)
print('Grid best parameter: ', grid.best_params_)
print('Grid best score: ', grid.best_score_)
Я запускаю этот код в блокноте Jupyter.
Заранее спасибо!