GridserachCV,python中的make_scorer,用于类特定的F1



我正在处理一个高度不平衡的数据集(0类中有更多值,1类中很少值(。为了分析分类器的性能,我使用F1度量。我在scikitslearn的F1函数中设置了average=None,这是因为我想分别检查它在类0和1上的性能,而只关心分类器在类1上的表现。value = f1_score(yTest, y_scores, average=None)value[1] gives me the required value

现在,对于使用gridseraccv的超参数调整,我以以下方式创建F1分数f1_scorer = make_scorer(f1_score, average=None)然而,这给出了一个GridSearchCV(svc_clf, param_grid, cv=nfolds, error_score=0.0, scoring=f1_scorer2)不接受的数组如何提取索引1处的值作为评分参数中的度量。这是因为我想把重点放在超参数调整期间分类器在类1上的性能上。我确实尝试了一些写f1_scorer2[1]等的天真方法,但它说"_PredictScorer"对象不可下标

如果您只关心正类的f1分数,那么默认的average='binary'pos_label=1应该没问题。


如果在其他情况下需要,您应该能够定义一个薄包装器函数:

def pos_f1_score(estimator, X, y):
y_pred = estimator.predict(X)
f1s = f1_score(y, y_pred, average=None)
return f1s[1]

最后,许多常见的度量已经被制作成记分器,您可以用scorer的字符串调用这些记分器;请在此处查看列表。

相关内容

  • 没有找到相关文章

最新更新