我试图将图像的类别预测为0或1。这些特征存储在global_feature中:
# resize the image
image = cv2.resize(image, fixed_size)
####################################
# Global Feature extraction
####################################
fv_hu_moments = fd_hu_moments(image)
fv_haralick = fd_haralick(image)
fv_histogram = fd_histogram(image)
###################################
# Concatenate global features
###################################
global_feature = np.hstack([fv_histogram, fv_haralick, fv_hu_moments])
print (global_feature.shape)
# predict label of test image
prediction = clf.predict(global_feature.reshape(1,-1))[0]
# show predicted label on image
cv2.putText(image, train_labels[prediction],(20,30),cv2.FONT_HERSHEY_SIMPLEX,1.0, (0,255,255), 3)
# display the output image
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()
我收到此错误:
ValueError: Number of features of the model must match the input. Model n_features is 533 and input n_features is 532
我试图重塑预测,但它似乎不起作用。关于此的任何帮助将不胜感激。预先感谢。
答案 0 :(得分:0)
这里的错误非常清楚:模型期望矢量为533个特征,但您给它的矢量为532个特征。如果我给您532项内容,则“预测这533项内容的结果”是不可能的。因此,在某个地方,您要么丢失要么添加了额外的索引。重塑无济于事,因为它会改变向量/矩阵的尺寸,但不会改变其中包含的项数。
进行以下操作可能会有所帮助:
弄清楚模型的训练输入是什么样的,即确切地应该有多少个项目。如果数字是532,那么您在训练中就搞砸了。
如果数字为533,则说明您已经正确地进行了训练,但在预测中却搞砸了。准确检查一下您的预测输入是什么样子,并找出丢失物品的位置(从模型预期的533到给出的532)。