【问题标题】:How can I save a LibSVM python object instance?如何保存 LibSVM python 对象实例?
【发布时间】:2012-07-11 13:29:15
【问题描述】:

我想在其他计算机上使用这个分类器,而不必再次训练它。 我曾经用 cPickle 从 scikit 中保存一些分类器。 对 LIBSVM 做同样的事情,它给了我一个“ ValueError: ctypes objects contains pointers cannot be 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

【问题讨论】:

    标签: python svm libsvm pickle


    【解决方案1】:

    只需使用 libsvm 的加载和保存功能

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

    这是来自 libsvm 包的 python 目录中的 README 文件。它似乎比网站对功能的描述要好得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      相关资源
      最近更新 更多