我想在OpenCV 2.4.9中使用SVM,并且遇到了实现功能缩放的问题。我跑在本教程功能的源代码“介绍支持向量机”:opencv支持SVM无法使用缩放功能
http://docs.opencv.org/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html
当我只是复制粘贴代码并运行它,它工作得很好,这显示:
然后我试图通过使2个修改来归一化特征为[0,1]:
在训练SVM之前加入
trainingDataMat /= 512.f;
(因此规范化训练数据)修改预测步骤为
float response = SVM.predict(sampleMat/512.f);
(因此规范化测试数据)。
这样做了以后,它预测的所有值是同一类,生产这种形象:
我缺少什么?是否有一些额外的步骤来实现我不知道的功能规范化?
是否所有的列/功能都是从0到512? – carlosdc 2015-01-10 00:31:51
告诉你什么,不关心这个问题,OpenCV的支持向量机不是很好。 – 2015-01-10 11:24:13
而且,这不是功能规范化(通常)。虽然,我不明白常数的简单缩放应该如何对分类产生任何影响。你是否用数字检查了预测反应? – 2015-01-10 11:27:47