如何保存LibSVM python对象实例?

2024-10-05 12:24:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在其他计算机上使用这个分类器,而不必再训练它。 我用cPickle从scikit中保存了一些分类器。 对LIBSVM执行同样的操作时,它会给我一个“ValueError:ctypes对象包含指针不能被pickle”。

我使用的是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

Tags: fromimportlabelsparam分类器filenamepredictacc

热门问题