17

使用 python scikit svm,在运行 clf.fit(X, Y) 之后,你会得到你的支持向量。实例化 svm.SVC 对象时,我可以直接加载这些支持向量(将它们作为参数传递)吗?这意味着我不需要每次都运行 fit() 方法来进行预测

4

2 回答 2

22

来自 scikit 手册:http ://scikit-learn.org/stable/modules/model_persistence.html

1.2.4 模型持久化 使用Python内置的持久化模型pickle可以将模型保存在scikit中。

>>> from sklearn import svm
>>> from sklearn import datasets
>>> clf = svm.SVC()
>>> iris = datasets.load_iris()
>>> X, y = iris.data, iris.target
>>> clf.fit(X, y)
SVC(kernel=’rbf’, C=1.0, probability=False, degree=3, coef0=0.0, eps=0.001,
cache_size=100.0, shrinking=True, gamma=0.00666666666667)
>>> import pickle
>>> s = pickle.dumps(clf)
>>> clf2 = pickle.loads(s)
>>> clf2.predict(X[0])
array([ 0.])
>>> y[0]
0

在 scikit 的特定情况下,使用 joblib 替换 pickle 可能更有趣,这在大数据上效率更高,但只能 pickle 到磁盘而不是字符串:

>>> from sklearn.externals import joblib
>>> joblib.dump(clf, ’filename.pkl’)
于 2013-08-26T13:52:35.663 回答
3

您可以保存模型以便以后使用。我编写了下面的代码,以便在存在我之前安装和保存的模型时使用该模型。

from sklearn.externals import joblib
svm_linear_estimator = svm.SVC(kernel='linear', probability=False, C=1)
try:
    estimator = joblib.load("/my_models/%s.pkl"%dataset_name)
    print "using trained model"
except:
    print "building new model"
    estimator.fit(data_train, class_train)
    joblib.dump(estimator,"/my_models/%s.pkl"%dataset_name)
于 2013-05-10T13:55:14.137 回答