我想制作一个自定义评分函数,涉及分类概率如下:
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)
此方法的好处是您可以轻松地将任何其他参数传递给您的分数函数。