Используя Scikit Learn, модель была оптимизирована для точности с помощью refit, но отзыв намного выше - PullRequest
0 голосов
/ 15 апреля 2020

Работая над набором данных пациентов с индийской печенью из UCI (http://archive.ics.uci.edu/ml/datasets/ILPD+%28Indian+Liver+Patient+Dataset%29), я обучил 2 модели, RF и SVM, чтобы предсказать двоичную метку.

Я пытался оптимизировать его в обоих случаях для точности как метри c, используя refit в RandomizedSearchCV, но каждый раз отзыв был намного выше (для RF 76,5 против 97%, для SVM 78% против 100%). Мне интересно, если я что-то сделал не так, или вы иногда просто не можете улучшить определенные показатели выше определенного уровня.

    def randomized_search_wrapper(pipeline, ranking=0, iterations=100, cores=-1, refit_score='precision_score'):
    """
    Fits a RandomizedSearchCV classifier using refit_score for
    optimization, prints classifier performance metrics"""

    randomized_search = RandomizedSearchCV(pipeline, param_grid, cv=10,  
                               refit=refit_score, scoring=scorers, return_train_score=True, 
                               n_iter=iterations, random_state=42, verbose=0, n_jobs=cores)

    randomized_search.fit(X_train, y_train)


    print(f'Best params for {refit_score}')
    print(randomized_search.best_params_)


    return randomized_search

Используемые счетчики:

scorers = {
    'accuracy_score': make_scorer(accuracy_score),
    'precision_score': make_scorer(precision_score),
    'recall_score': make_scorer(recall_score),
    'f1_score': make_scorer(f1_score),
    'roc_auc_score': make_scorer(roc_auc_score)
}
...