HomeBlogGuestbookLab 

JDM's Blog

온갖 테스트 결과가 기록되는 이곳은 JDM's Blog입니다. :3

libsvm 설치 및 예제

이 포스팅은 Support vector machine(SVMs)에서 파생되었습니다. 실제로 SVMs 알고리즘이 적용된 libsvm이라는 라이브러리를 실제로 사용해 봅시다.

libsvm 다운로드

libsvm은 LIBSVM -- A Library for Support Vector Machines에서 다운로드가 가능합니다.

libsvm 사용법

piaip's Using (lib)SVM Tutorial - Using SVM부분을 참조하시기 바랍니다.

실사용 예제

이제 실제로 사용을 해봅시다.

데이터 파일 구성
4		●		○
3	●	●
2				○
1	●		○	○
0	1	2	3	4

2차원 평면을 하나 그리고 좌표를 설정해서 검은 동그라미와 하얀 동그라미 두 종류의 집합을 구성했습니다. 이제 이걸 데이터화 시킵니다. 검은색 동그라미를 0번 셋, 하얀색 동그라미를 1번 셋으로 지정하겠습니다. 아래는 완성된 데이터 파일 내용입니다.

0 0:1 1:1
0 0:1 1:3
0 0:2 1:3
0 0:2 1:4
1 0:3 1:1
1 0:4 1:1
1 0:4 1:2
1 0:4 1:4

이 파일을 test.txt라는 이름으로 저장해둡니다.

자바 프로그램

내려 받은 libsvm 압축 파일에서 java라는 이름의 서브 디렉토리를 보면 여러가지 .java 파일이 있습니다. 이중 svm_train.java를 컴파일 하고 test.txt 파일을 인자값으로 넣어봅시다.

svm_train [option] traing_set_file [model_file]

위와 같은 커맨드를 입력하라고 되어 있네요. 전 다음처럼 실행했습니다.

$ java svm_train test.txt

그러면 다음처럼 결과가 나옵니다.

optimization finished, #iter = 13
nu = 0.7322007856176246
obj = -2.9301174504464926, rho = 4.1906232038923066E-4
nSV = 8, nBSV = 1
Total nSV = 8

그리고 실행했던 위치의 디렉토리를 다시 살펴보면 test.txt.model이라는 파일이 있습니다. 이 파일을 이용해 svm_predict 프로그램을 실행시켜 봅시다. 물론, 실행 전에 컴파일 해주는 것은 잊지 말아요.

svm_predict [options] test_file model_file output_file

위와 같은 방법으로 사용하게끔 되어 있네요. 전 아래와 같은 커맨드로 실행했습니다. 물론 test_file에 넣을 파일은 기존 것 그대로 사용합니다.

$ java svm_predict test.txt test.txt.model test.txt.out

결과는 아래처럼 나왔습니다.

Accuracy = 100.0% (8/8) (classification)

그러면 이제 test.txt.out 파일을 열어봅시다.

0.0
0.0
0.0
0.0
1.0
1.0
1.0
1.0

잘 분할된 것 같네요. (당연히 테스트 파일하고 모델을 만든 파일하고 같으니까...?) 기본적인 사용법은 이정도면 될 것 같습니다.