微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

机器学习 – libsvm模型文件格式

根据 this FAQ,libsvm中的模型格式应该是直截了当的.事实上,当我打电话给svm-train时.例如,a1a数据集的第一个SV是

1 3:1 11:1 14:1 19:1 39:1 42:1 55:1 64:1 67:1 73:1 75:1 76:1 80:1 83:1

另一方面,如果我使用easy.py脚本,我的第一个SV最终会:

512 1:-1 2:-1 3:1 4:-1 5:-1 6:-1 7:-1 8:-1 9:-1 10:-1 11:1 13:-1 14:1 15:-1 16:-1 17:-1 18:-1 19:1 20:-1 21:-1 22:-1 23:-1 24:-1 25:-1 26:-1 27:-1 28:-1 29:-1 30:-1 31:-1 32:-1 33:-1 34:-1 35:-1 36:-1 37:-1 38:-1 39:1 40:-1 41:-1 42:1 43:-1 44:-1 45:-1 46:-1 47:-1 48:-1 49:-1 50:-1 51:-1 52:-1 53:-1 54:-1 55:1 56:-1 57:-1 58:-1 59:-1 61:-1 62:-1 63:-1 64:1 65:-1 66:-1 67:1 68:-1 69:-1 70:-1 71:-1 72:-1 73:1 74:-1 75:1 76:1 77:-1 78:-1 79:-1 80:1 81:-1 82:-1 83:1 84:-1 85:-1 86:-1 87:-1 88:-1 90:-1 91:-1 92:-1 93:-1 94:-1 95:-1 97:-1 98:-1 99:-1 100:-1 101:-1 102:-1 103:-1 104:-1 105:-1 106:-1 107:-1 108:-1 109:-1 110:-1 112:-1 113:-1 114:-1 115:-1 117:-1 118:-1 119:-1

这是我的训练集中根本不存在的实例!事实上,如果我这样做:

$grep "119:" a1a
 -1 1:1 6:1 18:1 22:1 36:1 42:1 49:1 66:1 67:1 73:1 74:1 76:1 80:1 119:1 
 -1 1:1 6:1 18:1 26:1 35:1 43:1 53:1 65:1 67:1 73:1 74:1 76:1 80:1 119:1 
 -1 2:1 6:1 15:1 19:1 39:1 42:1 55:1 62:1 67:1 72:1 74:1 76:1 78:1 119:1 
 -1 4:1 6:1 16:1 21:1 35:1 44:1 49:1 64:1 67:1 72:1 74:1 76:1 78:1 119:1 
 -1 2:1 6:1 14:1 30:1 35:1 42:1 49:1 65:1 67:1 72:1 74:1 76:1 78:1 119:1 
 -1 2:1 6:1 17:1 20:1 37:1 40:1 57:1 63:1 67:1 73:1 74:1 76:1 80:1 119:1 
 -1 5:1 6:1 18:1 22:1 36:1 40:1 54:1 61:1 67:1 72:1 75:1 76:1 80:1 119:1 
 -1 5:1 6:1 17:1 26:1 35:1 42:1 53:1 62:1 67:1 73:1 74:1 76:1 80:1 119:1

没有任何实例有119:-1(即使它只是用-1交换1,也没有任何实例有119:1和118:1 – 缺少属性为零)

如果我这样做source code modification,我清楚地看到在前一种情况下(仅涉及svm列车),第一个SV也是第一个实例.但在后一种情况下(即使用easy.py脚本),应该给我哪个实例是SV的输出被grid.py吃掉了

这里发生了什么?

解决方法

我认为这里的罪魁祸首可能是easy.py对svm-scale的调用,它将每个属性缩放到[-1,1]范围内.发送到svm-train的训练样例与训练文件中的训练样本不同.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐