我正在尝试使用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)
答案 0 :(得分:1)
它不能明显大于1。
此代码中的基本假设是,scores
中计算出的分数是根据正态分布进行分布的。然后,mean+/- 2*std
给出95%的置信区间。
在大多数情况下,它会给出明智的结果,但是在您的情况下,它的含义不明确,因为平均准确度已经非常接近1。我知道这不是一个很好的解决方案,但是也许您可以降低信心间隔达到68%?然后,您只需要删除std
前面的因子2,上限将为99.5%。
答案 1 :(得分:0)
正如前面提到的 here,截断置信区间可能是一个更好的主意。