【发布时间】:2018-12-17 06:24:37
【问题描述】:
我一直在阅读有关 k-fold 交叉验证技术的信息,我通过 this example 找到了:
>>> clf = svm.SVC(kernel='linear', C=1)
>>> scores = cross_validation.cross_val_score(
... clf, iris.data, iris.target, cv=5)
...
>>> scores
array([ 0.96..., 1. ..., 0.96..., 0.96..., 1. ])
分数估计的平均分和标准差由下式给出:
>>>
>>> print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
Accuracy: 0.98 (+/- 0.03)
根据this source它说
当您执行 k-fold CV 时,您会得到 k 个不同的估计值 模型的错误——比如 e_1、e_2、e_3、...、e_k。因为每个 e_i 都是一个错误 估计,理想情况下应该为零。
要检查模型的偏差,请找出所有 e_i 的平均值。如果 这个值很低,它基本上意味着你的模型给出的错误很低 平均而言——间接确保你的模型关于 数据足够准确。
根据 iris 数据集的 SVM 的例子,它给出的平均值是 0.98,那么这是否意味着我们的模型不够灵活?
【问题讨论】:
-
0.98 表示 98% 的准确率,也就是 2% 的误差,听起来一点也不差。
标签: python scikit-learn cross-validation