我写了这段代码:
# Import datasets, classifiers and performance metrics
from sklearn import datasets, svm, metrics
import matplotlib.image as mpimg
imgs=[[mpimg.imread('sci/img/1.jpg'),mpimg.imread('sci/img/2.jpg')],[mpimg.imread('sci/img/3.jpg'),mpimg.imread('sci/img/4.jpg')]]
targ=[1,2]
# To apply a classifier on this data, we need to flatten the image, to
# turn the data in a (samples, feature) matrix:
n_samples = len(imgs)
data = imgs.reshape((n_samples, -1))
# Create a classifier: a support vector classifier
classifier = svm.SVC(gamma=0.001)
# We learn the digits on the first half of the digits
classifier.fit(data, targ)
# Now predict the value of the digit on the second half:
expected = targ
predicted = classifier.predict(data)
print("Classification report for classifier %s:\n%s\n"
% (classifier, metrics.classification_report(expected, predicted)))
print("Confusion matrix:\n%s" % metrics.confusion_matrix(expected, predicted))
我读了这个错误:
AttributeError:' list'对象没有属性'重塑'
我认为构建图像数组是错误的,因为它解决了?
答案 0 :(得分:0)
data = imgs.reshape((n_samples, -1))
在这里,您尝试在Python列表中应用方法reshape
。
但是,imgs
应该是numpy array
。因此,您应该替换
imgs = [[mpimg.imread('sci/img/1.jpg'), mpimg.imread('sci/img/2.jpg')],[mpimg.imread('sci/img/3.jpg'), mpimg.imread('sci/img/4.jpg')]]
带
import numpy as np
imgs = np.array([[mpimg.imread('sci/img/1.jpg'), mpimg.imread('sci/img/2.jpg')], [mpimg.imread('sci/img/3.jpg'), mpimg.imread('sci/img/4.jpg')]])