是否有方法可以在我的脚本中将系数输入到SVC的clf
,然后应用clf.score()
或clf.predict()
函数进行进一步测试?
目前我正在使用joblib.dump(clf,'file.plk')
保存经过培训的clf
的所有信息。但这涉及磁盘写入/读取。如果我可以定义一个clf
,其中两个数组代表支持向量(clf.support_vectors_
),权重(clf.coef_
/ clf.dual_coef_
)和偏差(对于{分别为clf.intercept_
)。
答案 0 :(得分:1)
使用简洁的尝试查看 sklearn 模型的内存使用量this blog post,看它是否适用。
如果其他位置无法访问 sklearn 套餐,则需要创建自己的分数并预测功能。 clf.score()
和clf.predict()
要求 clf 成为 sklearn 对象。
答案 1 :(得分:1)
This line从libsvm调用预测函数。它看起来像这样(但请看一下整个函数_dense_predict
):
libsvm.predict(
X, self.support_, self.support_vectors_, self.n_support_,
self.dual_coef_, self._intercept_,
self.probA_, self.probB_, svm_type=svm_type, kernel=kernel,
degree=self.degree, coef0=self.coef0, gamma=self._gamma,
cache_size=self.cache_size)
您可以使用此行直接提供所有相关信息,并获得原始预测。为此,您必须导入libsvm from sklearn.svm import libsvm
。如果您的初始拟合分类器被称为svc
,那么您可以通过将所有self
个关键字替换为svc
并保留值来从中获取所有相关信息。如果svc._impl
为您提供"c_svc"
,则您设置svm_type=0
。
请注意,在_dense_predict
函数的开头,您有X = self._compute_kernel(X)
。如果您的数据为X
,那么您需要执行K = svc._compute_kernel(X)
转换,并使用libsvm.predict
作为第一个参数调用K
函数
得分与所有这些无关。请查看sklearn.metrics
,您可以在accuracy_score
,这是SVM中的默认分数。
这当然是一种有些欠佳的做事方式,但在这种特殊情况下,如果不可能(我没有经常检查)设置系数,那么进入代码并查看其功能并提取相关部分肯定是一种选择。