1

私は libsvm で問題に直面しています。あなたが私を助けてくれることを願っています

このようなデフォルトのパラメーターで svm-train.exe を使用すると...

svm-train  dikomou
svm-predict  dikomou.t  dikomou.model   dikomou.t.predict

精度は 84.72% です

スケーリング [-1, 1] を使用すると、このようなトレーニング ファイルとテスト ファイルに同じスケーリングが適用されます....

svm-scale -l -1 -u 1 -s range1 dikomou > dikomou.scale
svm-scale -r range1 dikomou.t > dikomou.t.scale
svm-train dikomou.scale
svm-predict dikomou.t.scale dikomou.scale.model dikomou.t.predict

精度が落ちる 81.94%

0 から 1 のスケーリングを行うと、87.5% の精度が得られます

そのため、0 から 1 のスケーリングを維持します。

grid.pyしかし、このように0から1にスケーリングされたデータで使用すると

grid.py dikomou.scale
.. 
8  0.0078125   84 ,25 

$ ./svm-train -c 8 -g 0.0078125 dikomou.scale
$ ./svm-predict dikomou.t.scale dikomou.scale.model dikomou.t.predict

相互検証率は 84.25% で、合計精度は 79.166% で、c = 8 ガンマ = 0.0078125 が最適です。

だからgrid.py私は少なくなります!!! デフォルトで svm train を使用する場合よりも精度が高くなります。そこで、質問が 2 つあります。

  1. これはどのように可能ですか??
  2. cおよびgammasvm train が使用するデフォルト値は何ですか?? (ドキュメントでこれを明確に見つけることはできません。ガンマ1 /機能の数とc = 1ですか?)そして、なぜ私が使用した場合よりもうまくいくのgrid.pyですか?

easy.pyまた、デフォルトよりも悪い結果が得られます。私に何ができる?

4

0 に答える 0