支持向量机的Python OpenCV手写识别,改变训练和测试量

支持向量机的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_

在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_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数组用于比较结果。非常感谢!这正是我在你编辑代码前一分钟所做的。