我想制作一个程序到识别图像中的数字。我遵循scikit learn的教程。Scikit-learn SVM数字识别
我可以列车和适合svm分类器如下所示。
首先,我导入库和数据集
from sklearn import datasets, svm, metrics
digits = datasets.load_digits()
n_samples = len(digits.images)
data = digits.images.reshape((n_samples, -1))
其次,我创建了SVM模型和数据集训练它。
classifier = svm.SVC(gamma = 0.001)
classifier.fit(data[:n_samples], digits.target[:n_samples])
然后,我尝试阅读我自己的图像并使用函数predict()
来识别数字。
我重塑图像划分成(8,8),然后将其转换为1D阵列。
img = misc.imread("w1.jpg")
img = misc.imresize(img, (8, 8))
img = img[:, :, 0]
最后,当我打印出预测,它返回[1]
predicted = classifier.predict(img.reshape((1,img.shape[0]*img.shape[1])))
print predicted
无论我用户他人图像时,它仍返回[1]
我的形象数字 “9”:
你可以看到非零数字是相当大的我的形象。
我不知道为什么。我正在寻求帮助来解决我的问题。由于
谢谢你的回复。我试过你的方法,它不起作用。我发现我的图像的数组元素比训练数据集要大得多。我已更新 – VICTOR
这个问题啊,看起来你必须将它们缩放到0-16范围内:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn。 datasets.load_digits –
@CLWONG - 这是否解决了您的问题? –