通过sklearn.metrics.make_scorer将估算器传递到自定义得分函数



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

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)

有什么方法可以通过与给定的数据和参数拟合的估计器传递给我的自定义评分函数?然后我可以使用estimator.classes_

来解释概率

例如:

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

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

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)

这避免了使用sklearn.metrics.make_scorer

根据make_scorer文档,它接收 ** kwargs:附加参数作为将传递给Score_Func的其他参数。

因此,您可以将得分函数写为:

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

然后使用make_scorer作为:

my_scorer = make_scorer(custom_score, needs_proba=True, clf=clf_you_want)

此方法的好处是您可以轻松地将任何其他参数传递给您的分数函数。

相关内容

  • 没有找到相关文章

最新更新