4

나는 분류 작업을 위해 python에서 libsvm (svmutils)을 사용하고 있습니다. 분류자는 정확합니다. 그러나 다음과 같이 출력됩니다 :libsvm (python)의 출력 억제

* 
optimization finished, #iter = 75 
nu = 0.000021 
obj = -0.024330, rho = 0.563710 
nSV = 26, nBSV = 0 
Total nSV = 26 
* 
optimization finished, #iter = 66 
nu = 0.000030 
obj = -0.035536, rho = -0.500676 
nSV = 21, nBSV = 0 
Total nSV = 21 
* 
optimization finished, #iter = 78 
nu = 0.000029 
obj = -0.033921, rho = -0.543311 
nSV = 23, nBSV = 0 
Total nSV = 23 
* 
optimization finished, #iter = 90 
nu = 0.000030 
obj = -0.035333, rho = -0.634721 
nSV = 23, nBSV = 0 
Total nSV = 23 
Accuracy = 0% (0/1) (classification) 
Accuracy = 0% (0/1) (classification) 
Accuracy = 0% (0/1) (classification) 
Accuracy = 0% (0/1) (classification) 

이 대화 상자를 표시하지 않을 수있는 방법이 있습니까? 분류기는 완벽하게 훌륭하게 작동합니다. 나는 단지 호기심입니다. 또한 "Accuracy"은 무엇을 의미합니까? 그리고 왜 내 경우에는 이것이 0 %입니까? (데이터는 80 차원 겹치지 인 합계 4 개 클래스 I는 적절하게 정규화 하였다...)

답변

4

교육 및 예측 출력 모두를 억제하기

import svmutil 
param = svmutil.svm_parameter('-q') 
... 

또는

import svmutil 
x = [[0.2, 0.1], [0.7, 0.6]] 
y = [0, 1] 
svmutil.svm_train(y, x, '-q') 
1

이 작동 할 수

또한
import sys 
from StringIO import StringIO 

# back up your standard output 
bkp_stdout = sys.stdout 

# replace standard output with dummy stream 
sys.stdout = StringIO() 
print 1 # here you should put you call (classification) 

#restore standard output for further use 
sys.stdout = bkp_stdout 
print 2 

은 분류 문제에서, 정확도는 부분 (백분율)는 훈련 된 모델을 사용하여 테스트/교차 유효성 검증 세트에서 정확하게 예측 된 항목을 표시합니다.

+0

을, 나는 약간의 훈련 데이터가 4에 속하는이 각 클래스는 80 차원의 특징 벡터와 하나의 테스트 대를 테스트하기위한 4 개의 1 대 1 분류자를 갖는다. 이 경우 정확도를 계산하는 것입니다. "테스트 포인트가 이미 교육 중에 레이블로 표시되고 교차 유효성 검사가 성공하고 정확도가 100 %이면 교차 유효성 검사가 실패하고 정확도가 0입니다 (0 또는 100 만됩니다. 테스트 데이터가 단일 포인트 인 경우에만이 접근법에서 %) ?? 내가 제대로하고 있니? 감사합니다. 그 대답이 도움이되었습니다. –

1

-q 매개 변수 옵션을 사용하여, 당신은 (훈련 출력을 억제) has2k1에서 제공하는 솔루션을 결합해야합니다 및 vonPetrushev (예측 출력을 억제하기 위해). 때문에 다음과 같은 오류를 얻을 것이다 현재 파이썬 인터페이스

# Test matrix built, execute prediction. 
paramString = "" if useVerbosity else " -q " 
predLabels, predAccuracy, predDiscriminants = \ 
svmutil.svm_predict(targetLabels, testData, svModel.representation, paramString) 

:

불행하게도, 당신은 다음과 같은 일을 할 수없는 사실

File "/home/jbbrown/local_bin/pyLibSVM/pyLibSVM/svmutil.py", line 193, in svm_predict 
    raise ValueError("Wrong options") 
    ValueError: Wrong options