【发布时间】: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