2012-07-11 74 views
3

我想在其他計算機上使用此分類器,而無需再次進行訓練。 我曾經用cPickle從scikit保存一些分類器。 與LIBSVM一樣,它給了我一個「ValueError:包含指針的ctypes對象不能被醃製」。如何保存LibSVM python對象實例?

我正在使用LibSVM 3.1和Python 2.7.3。

感謝

from libsvm.svm import * 
from libsvm.svmutil import * 
import cPickle 

x = [[1, 0, 1], [-1, 0, -1]] 
y = [1, -1] 
prob = svm_problem(y, x) 
param = svm_parameter() 
param.kernel_type = LINEAR 
param.C = 10 
m = svm_train(prob, param) 
labels_pred, acc, probs = svm_predict([-1, 1], [[1, 1, 1], [0, 0, 1]], m) 
print labels_pred, acc, probs 

import ipdb; ipdb.set_trace() 

filename='libsvm-classif.pkl' 

fid = open(filename, 'wb') 
cPickle.dump(m, fid) 
fid.close() 

fid = open(filename, 'rb') 
m = cPickle.load(fid) 
labels_pred, acc, probs = svm_predict([-1, 1], [[1, 1, 1], [0, 0, 1]], m) 

print labels_pred, acc, probs 

回答

9

只要使用LIBSVM的加載和保存功能

svm_save_model('libsvm.model', m) 
m = svm_load_model('libsvm.model') 

這是包含在LIBSVM包的蟒蛇目錄中的README文件。它似乎比網站有更好的功能描述。

+0

謝謝。工作很好。 =) – 2012-08-13 14:21:55