我可以像下面这样训练和拟合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),然后将其转换为一维数组。
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”的“默认”数据集时,它看起来像:![enter image description here](https://istack.dev59.com/90MOj.webp)
您可以看到,对于我的图像,非零数相当大。
我不知道为什么。我正在寻求帮助来解决我的问题。谢谢。