我遇到了 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 gamma= 0.0078125
所以grid.py
给我的少了!!!精度高于使用默认值的 svm 训练的精度。所以我有两个问题。
- 这怎么可能??
- svm train 使用
c
的默认值是什么?gamma
(我无法在文档中清楚地找到这一点。是 gamma 1/特征数和 c = 1?)为什么比我使用grid.py
?
easy.py
也给了我比默认值更差的结果。我能做些什么?