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

How to load existing coefficients into sklearn SVM classifier?

我使用 sklearn.svm.SVC 训练了一个 SVM 分类器,并存储了权重(系数)。然后我加载它们并尝试将它们注入到 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

它给出了输出:

"Exception has occurred: AttributeError
can't set attribute"

而不是加载权重,正如@Mechanic在评论中指出的那样,这是不可能的。您可以尝试保存模型并加载模型。请参考this link.