我使用libsvm进行文档分类。我在我的项目中使用svm.cc和svm.h。然后我打电话给svm_train。我使用svm_save_model将模型保存在文件中。
我有类别。 svm模型文件是:
svm_type c_svc
kernel_type rbf
gamma 0.001002
nr_class 3
total_sv 9
rho -0.000766337 0.00314423 0.00387654
label 0 1 2
nr_sv 3 3 3
SV
1 1 1:0.001 2:0.001 3:0.012521912 5:0.001 15:0.012521912 17:0.012521912 23:0.001
1 1 1:0.001 2:0.014176543 4:0.093235799 6:0.001 7:0.0058630699 9:0.040529628 10:0.001
1 1 11:0.38863495 33:0.08295242 46:0.041749886 58:0.08295242 89:0.08295242 127:0.15338862 -1 1 5:0.001 8:0.0565 10:0.001 13:0.001 18:0.0565 21:0.021483399 34:0.12453384 36:0.001
-1 1 13:0.034959612 34:0.090130132 36:0.034959612 45:0.034959612 47:0.12019824
-1 1 5:0.001 8:0.048037273 13:0.001 18:0.048037273 29:0.14715472 30:0.018360058 36:0.001
-1 -1 9:0.0049328688 12:0.090902344 18:0.1156038 27:0.0049328688 31:0.015144206
矢量值之前的1和-1是否为index:value?
答案 0 :(得分:2)
来自libsvm FAQ:
问:你能解释一下有关模型文件的更多信息吗?在模型文件中 经过参数和其他信息,如标签,每一行 代表一个支持向量。支持向量列在顺序中 "标签"如前所示。 (即那些来自头等舱的人) "标签"列表首先分组,依此类推。)如果k是总数 在类j中的支持向量前面的类,有k-1 系数y * alpha其中alpha是以下的双重解 两个类问题:1 vs j,2 vs j,...,j-1 vs j,j vs j + 1,j vs 在第一个j-1系数中,j + 2,...,j vs k和y = 1,y = -1 剩余的k-j系数。例如,如果有4个类,那么 文件看起来像:
+-+-+-+--------------------+
|1|1|1| |
|v|v|v| SVs from class 1 |
|2|3|4| |
+-+-+-+--------------------+
|1|2|2| |
|v|v|v| SVs from class 2 |
|2|3|4| |
+-+-+-+--------------------+
|1|2|3| |
|v|v|v| SVs from class 3 |
|3|3|4| |
+-+-+-+--------------------+
|1|2|3| |
|v|v|v| SVs from class 4 |
|4|4|4| |
+-+-+-+--------------------+