我一直在阅读有关k倍交叉验证的技术,并且我通过了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)
执行k倍CV时,您会得到k个不同的估算值 模型的错误-例如e_1,e_2,e_3,...,e_k。由于每个e_i都是错误 估计,理想情况下应该为零。
要查看模型的偏差,请找出所有e_i的平均值。如果 该值很低,这基本上意味着您的模型给出的误差很小 平均而言–间接确保您的模型对 数据足够准确。
根据带有虹膜数据集的SVM的示例,其平均值为0.98,这是否意味着我们的模型不够灵活?
答案 0 :(得分:0)
所以,我认为您的问题是对k折的误解。以为我会解释几件事。
它在机器学习中用于当样本量较小且需要能够测试其准确性时。 K折将您的数据分为k个不同的测试。可以这么说,它是5,其20%用于测试,80%用于培训,而其中20%用于测试,则切换到每个测试,而80%用于培训。当您担心由于数据量太少而产生偏差时,此功能很有用。
您获得的准确度是在k个测试中它平均能够识别出您要寻找的内容的准确度,在这种情况下,可以正确识别出哪个虹膜。
0.98% is quite a decent number so your model is fine. Thats an error rate of 0.02
which is close to the 0 of the goal, as it is unlikely to ever hit 0.
答案 1 :(得分:0)
accuracy
,因此,较高的值对您更有利。 Accuracy: 0.98 (+/- 0.03)
您的结果表明您有95%的置信度,平均准确度将在0.95和1之间。