2017-02-01 15 views
0

2 클래스 분류 자 ​​생성에 libsvm을 사용하고 있습니다. 나는 무게가 svm-predict [options] test.test model.model out.out에 의해 사용됩니다/계수를 알 어떻게libsvm 모델 파일에서 계수/가중치를 추출하십시오.

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-train training.training model.model

model.model 파일에 의해 생성 된 모델에 사용 된 각 기능의 계수/무게를 추출 할 같이 보인다? 마지막 줄에있는 것들?

감사 LIBSVM 의해 생성 된 모델 파일이 이루어져 M.

답변

2

상기 offical 한 FAQ entry에 따르면, 다음의 정보 : 모델 파일에서

파라미터와 같은 다른 정보 후 레이블, 각 줄은 지원 벡터를 나타냅니다. 지원 벡터는 앞에서 설명한 "레이블"순서로 나열됩니다. (예 : "labels"목록의 의 클래스가 먼저 그룹화됩니다.) k 이 클래스 j의 지원 벡터 앞에있는 클래스의 총 수인 경우 k-1 계수 y * alpha는 다음과 같은 두 가지 클래스 문제 의 이중 해답입니다. 1 vs j, 2 vs j, ..., j-1 vs j, j vs j + 1, j vs j + 2, .. j 번째 k-1 계수에서 y = 1이고, 나머지 k-j 계수는 에서 y = -1이다.

+-+-+-+--------------------+ 
|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를 계산하기 위해이 데이터를 읽는 방법의 example있다 : 4 개 클래스가있는 경우 예를 들어, 파일처럼 보인다.