我正在交叉验证一个sklearn分类器模型,并希望快速获得精度、召回率和f-score的平均值。我如何获得这些值?
我不想自己编码交叉验证,而是使用函数cross_validation.cross_val_score。是否有可能通过提供适当的评分函数,使用该函数来获得每个标签的预期平均值?
您可以考虑使用sklearn中的所有方法。标准包。
我认为这个方法可以达到你所期望的效果。它为您提供了一个2D数组,其中一行用于每个目标唯一值,几列用于精度、召回率、fscore和支持。
对于快速日志,您也可以使用classification_report。
对于精度和召回,在度量包中有一个称为precision_recall_curve的函数,它应该执行您正在寻找的操作。
假设你有一个训练好的分类器clf
,测试样本X
和测试目标Y
,那么你需要通过目标和预测类概率。下面的例子将为一个两类问题找到精度和召回率。
probs = clf.predict_proba(X)[:,1]
precision, recall, thresholds = precision_recall_curve(Y, probs)
可以使用度量包中的另一个函数f1_score找到f分数。这以类似的方式使用,但需要预测的类成员资格作为参数,而不是成员资格的概率。