我想在其他计算机上使用此分类器,而无需再次训练。 我曾经用cPickle从scikit中保存了一些分类器。 对LIBSVM做同样的事情,它给了我一个“ValueError:包含指针的ctypes对象不能被腌制”。
我正在使用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
答案 0 :(得分:9)
只需使用libsvm的加载和保存功能
svm_save_model('libsvm.model', m)
m = svm_load_model('libsvm.model')
这是来自libsvm包的python目录中包含的README文件。它似乎比网站有更好的功能描述。