首页 文章

sklearn - 对类的子集进行精确评分的交叉验证

提问于
浏览
7

我有一个分类数据集,有3个类标签 [0,1,2] .

我想运行交叉验证并尝试几个估算器,但我对只有1级和2级精度的评分感兴趣 . 我不关心0级的精度,我不希望它的得分甩开CV优化 . 我也不关心任何课程的召回 . 换句话说,我想确保无论何时预测1或2,它都具有很高的置信度 .

所以问题是,如何运行 cross_val_score 并告诉其评分函数忽略0级的精度?

UPDATE :根据接受的答案,这是一个示例答案代码:

def custom_precision_score(y_true,y_pred):
  precision_tuple, recall_tuple, fscore_tuple, support_tuple = metrics.precision_recall_fscore_support(y_true, y_pred)
  precision_tuple = precision_tuple[1:]
  support_tuple = support_tuple[1:]
  weighted_precision = np.average(precision_tuple, weights=support_tuple)
  return weighted_precision

custom_scorer = metrics.make_scorer(custom_precision_score)

scores = cross_validation.cross_val_score(clf, featuresArray, targetArray, cv=10, scoring=custom_scorer)

1 回答

  • 4

    cross_val_score 包含scorer callable object,使用 make_scorer 可以set with your own test strategy . 并且您可以在自定义分数函数 score_func(y, y_pred, **kwargs) 中设置要测试的组,该函数由 make_scorer 调用 .

相关问题