Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sklearn-交叉验证与类子集的精确评分_Python_Machine Learning_Cross Validation_Scikit Learn - Fatal编程技术网

Python sklearn-交叉验证与类子集的精确评分

Python sklearn-交叉验证与类子集的精确评分,python,machine-learning,cross-validation,scikit-learn,Python,Machine Learning,Cross Validation,Scikit Learn,我有一个用于分类的数据集,有3个类标签[0,1,2] 我想运行交叉验证并尝试几种估算方法,但我感兴趣的是只对第1类和第2类的精度进行评分。我不关心0类的精度,也不希望它的得分偏离CV优化。我也不关心任何课程的召回。换句话说,我想确保无论何时预测1或2,它都是非常有信心的 所以问题是,我如何运行cross\u val\u score并告诉它的评分函数忽略0类的精度 更新:根据接受的答案,下面是一个示例答案代码: def custom_precision_score(y_true,y_pred):

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

我想运行交叉验证并尝试几种估算方法,但我感兴趣的是只对第1类和第2类的精度进行评分。我不关心0类的精度,也不希望它的得分偏离CV优化。我也不关心任何课程的召回。换句话说,我想确保无论何时预测1或2,它都是非常有信心的

所以问题是,我如何运行
cross\u val\u 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)

cross\u val\u score
包括一个可以使用
make\u scorer
。你可以在自定义的评分函数中设置你要测试的组
score\u func(y,y\u pred,**kwargs)
,该函数由
make\u scorer

cross\u val\u score
调用一个scorer可调用的对象来定义你的评分。很好,我用示例答案代码更新了这个问题。我认为会有一个更短的方法,例如
precision\u score
本身实现的东西,但这个方法同样有效:)