如何将现有系数加载到sklearn SVM分类器中?

时间:2019-05-15 13:12:56

标签: python scikit-learn svm

我使用 ArrayList<String> parts = smsManager.divideMessage(msg); final int numParts = parts.size() sentIntent.putExtra(EXTRA_NUMBER, number); sentIntent.putExtra(EXTRA_MESSAGE, msg); smsManager.sendMultipartTextMessage(number, null, parts, sentIntents, delIntents); 训练了SVM分类器,并存储了权重(系数)。然后,我加载了它们,并尝试将它们注入到sklearn.svm.SVC的新实例中,但是由于似乎属性sklearn.svm.SVC是只读的而无法执行。

coef_

我希望有一个模型,该模型具有作为新系数加载的权重,但是我得到以下消息:

from sklearn import svm
import pickle

modelSVM = svm.SVC(kernel='linear')
weights = pickle.load(open(weights_path, 'rb'))

modelSVM.coef_ = weights

这可能是由于AttributeError: 'SVC' object has no attribute 'dual_coef_' 不是分类器唯一需要的字段。所以我尝试训练然后在注入权重之前克隆分类器:

coef_

它给出输出:

modelSVM.fit(X, labels)
modelSVM = clone(modelSVM)
modelSVM.coef_ = weights

1 个答案:

答案 0 :(得分:0)

而不是加载权重,这是 @Mechanic 在评论中指出的。您可以尝试保存模型并重新加载模型。请参阅this link