我想在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