支持向量机的Python OpenCV手写识别,改变训练和测试量
在OpenCV给出的示例中,训练集为250,测试量也相同。然而,当测试和训练数字改变时,准确度下降到0支持向量机的Python OpenCV手写识别,改变训练和测试量,python,opencv,ocr,svm,handwriting-recognition,Python,Opencv,Ocr,Svm,Handwriting Recognition,在OpenCV给出的示例中,训练集为250,测试量也相同。然而,当测试和训练数字改变时,准确度下降到0 # First half is trainData, remaining is testData train_cells = [ i[:40] for i in cells ] test_cells = [ i[40:] for i in cells] train_amt = 200 responses = np.float32(np.repeat(np.arange(10),train_
# First half is trainData, remaining is testData
train_cells = [ i[:40] for i in cells ]
test_cells = [ i[40:] for i in cells]
train_amt = 200
responses = np.float32(np.repeat(np.arange(10),train_amt)[:,np.newaxis])
我已经从原始代码更改了上面几行中的值。我做错了什么?那么x应该是什么呢
OpenCV提供的培训和测试数据:您的数据拆分是正确的。它为您提供
0.0
精度的原因是您测量它的方式
通过以下方式进行精度检查:
mask = result==responses
correct = np.count_nonzero(mask)
print correct*100.0/result.size
通过新的分离列车/测试,这不再正确。首先,结果
和响应
的长度不同,因此掩码
只是假
因此,现在要测量精度,需要根据测试大小而不是训练来重塑响应。工作代码仅更改200 x 300:
responses = np.float32(np.repeat(np.arange(10),300)[:,np.newaxis])
mask = result==responses
correct = np.count_nonzero(mask)
print correct*100.0/result.size
准确度下降了一点,但并没有下降到0.0
,现在你达到了93.1
,这是正常的,因为你减少了训练的规模,增加了测试的数量。谢谢,解决了这个问题。创建了一个单独的numpy数组用于比较结果。非常感谢!这正是我在你编辑代码前一分钟所做的。