调用SVM的predict_proba处理HOG特征时报期望二维数组错误求助
问题解决方案
报错原因
scikit-learn 0.20+版本对预测接口的输入维度做了强制校验,所有predict、predict_proba等方法都要求输入为二维数组,结构为[样本数量, 特征维度]。你当前提取的单张测试图片HOG特征为一维数组,结构为(特征维度,),不符合输入规范触发报错。
修复方法
修改predict_proba调用行,将一维特征转换为单样本二维数组即可:
# 原报错行 # prob=clf.predict_proba(fdPred) # 修改为 prob=clf.predict_proba(fdPred.reshape(1, -1))
这里reshape(1, -1)的含义:
- 第一个参数
1表示当前输入只有1个测试样本 - 第二个参数
-1表示自动计算特征维度,无需手动匹配HOG输出的特征长度
附加注意点
你提供的训练代码存在两处笔误,若实际运行也存在该问题请同步修正:
- 实例化SVC的语法错误,应为
clf = svm.SVC(kernel='linear', probability=True) - 参数名拼写错误:
kernal改为kernel
内容的提问来源于stack exchange,提问作者thiirane
相关产品推荐
相关产品推荐

