9

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

我想运行交叉验证并尝试几个估计器,但我对仅以 1 类和 2 类的精度评分感兴趣。我不关心 0 类的精度,我不希望它的评分摆脱简历优化。我也不关心任何课程的召回。换句话说,我想确保无论何时预测 1 或 2,它都具有很高的置信度。

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

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

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)
4

1 回答 1

5

cross_val_score包括一个记分器可调用对象,可以使用您自己的测试策略设置make_scorer该对象。您可以在自定义评分函数中设置您要测试的组,该函数score_func(y, y_pred, **kwargs)由 调用make_scorer

于 2013-12-25T15:48:11.933 回答