通过sklearn.metrics.make_scorer将估算工具传递给自定义评分函数

Ale*_*exG 6 python scikit-learn

我想制作一个涉及分类概率的自定义评分函数,如下所示:

def custom_score(y_true, y_pred_proba):
    error = ...
    return error

my_scorer = make_scorer(custom_score, needs_proba=True)

gs = GridSearchCV(estimator=KNeighborsClassifier(),
                  param_grid=[{'n_neighbors': [6]}],
                  cv=5,
                  scoring=my_scorer)
Run Code Online (Sandbox Code Playgroud)

有没有办法将GridSearch与给定的数据和参数一起传递给我的自定义评分函数?然后我可以使用解释概率estimator.classes_

例如:

def custom_score(y_true, y_pred_proba, clf):
    class_labels = clf.classes_
    error = ...
    return error
Run Code Online (Sandbox Code Playgroud)

Ale*_*exG 7

还有另一种方法可以让文档中提到一个得分手.使用此方法,我可以执行以下操作:

def my_scorer(clf, X, y_true):
    class_labels = clf.classes_
    y_pred_proba = clf.predict_proba(X)
    error = ...
    return error

gs = GridSearchCV(estimator=KNeighborsClassifier(),
                  param_grid=[{'n_neighbors': [6]}],
                  cv=5,
                  scoring=my_scorer)
Run Code Online (Sandbox Code Playgroud)

这避免了使用sklearn.metrics.make_scorer.