Scikit学习:交叉验证和置信区间

时间:2019-02-10 16:53:30

标签: python scikit-learn

我正在尝试使用scikit-learn中的DecisionTreeClassifier计算分类模型的置信区间。

阅读有关交叉验证和置信区间(https://scikit-learn.org/dev/modules/cross_validation.html)的scikit-learn文档,我发现下面的代码,它看起来很简单。但是,我不明白为什么上限大于1,如何才能使精度高于100%?

from sklearn.model_selection import cross_val_score
clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, iris.data, iris.target, cv=5)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
Accuracy: 0.98 (+/- 0.03)

2 个答案:

答案 0 :(得分:1)

它不能明显大于1。

此代码中的基本假设是,scores中计算出的分数是根据正态分布进行分布的。然后,mean+/- 2*std给出95%的置信区间。

在大多数情况下,它会给出明智的结果,但是在您的情况下,它的含义不明确,因为平均准确度已经非常接近1。我知道这不是一个很好的解决方案,但是也许您可以降低信心间隔达到68%?然后,您只需要删除std前面的因子2,上限将为99.5%。

答案 1 :(得分:0)

正如前面提到的 here,截断置信区间可能是一个更好的主意。