2014-07-18 3 views
1

Matlab 용 LIBSVM 도구 상자를 사용하고 있습니다. 내 문제는 레이블이 1 (True) 및 0 (False) 인 이진 분류 문제입니다.MATLAB LIBSVM의 확률 출력

svmstruct = svmtrain(TrainTargets, TrainInputs,['-t 2 ' '-g ' SIGMA ' -c ' P ' -q' ' -b 1']); 

을하고이 기능을 내 테스트의 정확성을 테스트 : :이 기능을 내 시스템을 훈련 할 때

[TestOutputs, ~, ~] = svmpredict(TestTargets, TestInputs, svmstruct,'-b 1 -q'); 

는 이제 밖으로 샘플 데이터에 대한 DESINED SVM 모델을 사용합니다. 첫 훈련 모델에 대한

[OUT, ~, Prob_Out] = svmpredict(zeros(size(Outsample_DATA,1),1), Outsample_DATA, svmstruct,'-q -b 1'); 

(나는 다른 매개 변수를 SVM 모델을 훈련했다) 나는 (두 경우 모두 동일한 샘플 데이터 세트 아웃)이 출력이 : [Prob_Out OUT]

그래서 나는이 기능을 사용

0.4240 0.5760   0 
0.4090 0.5910   0 
0.7601 0.2399 1.0000 
0.5000 0.5000 1.0000 
0.4646 0.5354   0 
0.4589 0.5411   0 

나는이 확률로 1 등급을 찾을한다고 가정 : 두 번째에 대한

0.8807 0.1193   0 
0.8717 0.1283   0 
0.0860 0.9140 1.0000 
0.7846 0.2154   0 
0.7685 0.2315   0 
0.7916 0.2084   0 
0.0326 0.9674 1.0000 
0.7315 0.2685   0 
0.3550 0.6450 1.0000 

난이 있습니다. 제 1 열의 데이터가 열 1보다 큰 경우이 샘플은 클래스 1에 속하지만 제 1 열이 열 2보다 클 경우 샘플은 클래스 1에 속한다.

이 두 샘플 데이터의 구조 동일합니다. 문제가 무엇입니까?

감사합니다.

추신. 모델을 모델링 한 후 SVMstruct 매개 변수를 확인하면 레이블이 [0; 1]이고 다른 레이블은 [1; 0]입니다!

답변

1

이미 알고 계시 겠지만, 차이점은 라벨의 다른 매핑 때문입니다.

LIBSVM은 자체 레이블을 내부적으로 사용하므로 내부 레이블과 사용자가 제공 한 레이블 간의 매핑이 필요합니다.

이 매핑의 레이블은 교육 데이터에 레이블이 나타나는 순서를 사용하여 생성됩니다. 따라서 학습 데이터의 첫 번째 요소의 레이블이 변경되면 레이블 매핑도 변경됩니다.

+0

감사합니다. 그래서 나는 그것을 원하는 레이블로 수동으로 변환해야합니다. – user2991243