【问题标题】:How to load existing coefficients into sklearn SVM classifier?如何将现有系数加载到 sklearn SVM 分类器中?
【发布时间】:2019-10-02 15:39:04
【问题描述】:

我使用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"

【问题讨论】:

  • 根据 scikit learn [documentation][1] coef_ 是一个从 raw_coef_ 派生的只读属性,它遵循 liblinear 的内部存储器布局。所以,恐怕你不能直接设置它。 [1]:scikit-learn.org/stable/modules/generated/…

标签: python scikit-learn svm


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 2018-06-27
    • 2014-06-18
    • 2014-07-30
    • 1970-01-01
    • 2018-09-25
    • 2018-03-15
    • 2015-04-07
    • 2015-04-25
    相关资源
    最近更新 更多