为了账号安全,请及时绑定邮箱和手机立即绑定

ValueError:发现样本数量不一致的输入变量:[218, 30]

ValueError:发现样本数量不一致的输入变量:[218, 30]

慕姐4208626 2023-06-13 10:42:01
我正在使用线性 SVC 进行一些面部识别训练,我的数据集是 870x22。我有 29 个不同的人的 30 帧,我在图像中使用 22 个简单值像素来识别面部图像,说 22 个像素是我的特征。此外,当我调用 train_test_split() 时,它会给我一个大小为 218x22 的 X_test 和大小为 218 的 y_test。一旦我训练了分类器并尝试运行新面孔 (30x22) 矩阵的图像,它就会给我错误:ValueError: Found input variables with inconsistent numbers of samples: [218, 30]这是代码:import sklearnfrom sklearn.model_selection import train_test_splitfrom sklearn import metricsfrom sklearn.svm import SVCfrom sklearn.metrics import confusion_matrixfrom sklearn.metrics import accuracy_score, f1_score    img_amount = 30    target = np.asarray([1]*img_amount + [2]*img_amount + [3]*img_amount + [4]*img_amount + [5]*img_amount + [6]*img_amount + [7]*img_amount + [8]*img_amount + [9]*img_amount + [10]*img_amount + [11]*img_amount + [12]*img_amount + [13]*img_amount + [14]*img_amount + [15]*img_amount + [16]*img_amount + [17]*img_amount + [18]*img_amount + [19]*img_amount + [20]*img_amount + [21]*img_amount + [22]*img_amount + [23]*img_amount + [24]*img_amount + [25]*img_amount + [26]*img_amount + [27]*img_amount + [28]*img_amount + [29]*img_amount)       dataset= dataset[:, 0:22]                svc_1 = SVC(kernel='linear', C=0.00005)        X_train, X_test, y_train, y_test = train_test_split( dataset, target, test_size=0.25, random_state=0)                def train(clf, X_train, X_test, y_train, y_test):                        clf.fit(X_train, y_train)            print ("Accuracy on training set:")            print (clf.score(X_train, y_train))            print ("Accuracy on testing set:")            print (clf.score(X_test, y_test))                        y_pred = clf.predict(X_test)                        print ("Classification Report:")            print (metrics.classification_report(y_test, y_pred))            print ("Confusion Matrix:")            print (metrics.confusion_matrix(y_test, y_pred))
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

这是问题所在:


predictions = svc_1.predict(new_face_image) 

print ("Confusion Matrix:")

print (metrics.confusion_matrix(y_test, predictions))

您正在预测 new_face_image 并使用您的测试数据集对其进行预测。


predictions = svc_1.predict(new_face_image) 

# change this to what you expect but shape=(30,)

expected=np.ones(len(new_face_image))

print ("Confusion Matrix:")

print (metrics.confusion_matrix(expected, predictions))

编辑以使用数据集测试数据进行验证:


predictions = svc_1.predict(x_test) 

print ("Confusion Matrix:")

print (metrics.confusion_matrix(y_test, predictions))


查看完整回答
反对 回复 2023-06-13
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信