Извлечение коэффициентов / весов из файла модели libsvm

Я использую libsvm для создания классификатора 2 классов. Я хочу извлечь коэффициент / вес каждой функции, используемой моделью, сгенерированной ./svm-train training.training model.model

model.model файл выглядит так:

svm_type c_svc
kernel_type rbf
gamma 8
nr_class 2
total_sv 442
rho 21
label 1 -1
nr_sv 188 254
SV
7080.357768871263 0:0 1:0.00643 2:0.01046 3:0.00963 4:0.02777 5:0.04338 19:0.04468 
528.7111702760092 0:0 1:0.00058 3:0.00086 6:0.01158 7:0.0028 9:0.08991 13:0.0096 
...
391.7649705739246 0:0 1:0.00055 3:0.00082 5:0.04615 7:0.06374 21:0.00374 31:0.00339 33:0.00395 38:0.16343 
...
-564.1329424321915 0:0 1:0.00709 2:0.00384 3:0.00709 5:0.00399 9:0.01457 10:0.01244 11:0.0206 17:0.02124 20:0.00565 23:0.00846 27:0.04692 33:0.04271 35:0.02389 36:0.00859 39:0.02014 

Как мне узнать, какие коэффициенты / веса будут использоваться svm-predict [options] test.test model.model out.out? Те из последней строки?

Спасибо, М.

1 ответ

Решение

Файл модели, сгенерированный LIBSVM Согласно официальной записи FAQ, состоит из следующей информации:

В файле модели после параметров и другой информации, такой как метки, каждая строка представляет опорный вектор. Векторы поддержки перечислены в порядке "меток", показанных ранее. (то есть те из первого класса в списке "меток" сгруппированы первыми и т. д.) Если k - общее количество классов, перед опорным вектором в классе j есть k-1 коэффициенты y* альфа, где альфа - двойное решение следующих двух классовых задач: 1 против j, 2 против j, ..., j-1 против j, j против j+1, j против j+2, ..., j против k и y=1 в первых коэффициентах j-1, y=-1 в оставшихся коэффициентах kj. Например, если есть 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|                    |
+-+-+-+--------------------+

Существует также пример того, как читать эти данные для того, чтобы вычислить w для двоичного классификатора.

Другие вопросы по тегам