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類我也歸正確。。。)

回答

4

使用-q參數選項

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個單獨分類器用於測試單個測試點。在這種情況下,它是否通過如下方式計算精度:「如果測試點已在訓練過程中標記過,則交叉驗證成功並且準確性爲100%,否則交叉驗證失敗且準確性爲0」(它將僅爲0或100 %,因爲測試數據只有一個點)?我是否正確?謝謝,答案有所幫助。 –

1

爲了抑制訓練和預測輸出,您將需要由has2k1提供的解決方案相結合(抑制培訓輸出)和vonPetrushev(用於抑制預測輸出)。

不幸的是,你不能做類似如下:

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

由於當前Python接口您將收到以下錯誤:

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