通过Sklearn中的stdin设置决策函数的权重

时间:2014-04-02 15:02:17

标签: python scikit-learn svm

是否有方法可以在我的脚本中将系数输入到SVC的clf,然后应用clf.score()clf.predict()函数进行进一步测试?

目前我正在使用joblib.dump(clf,'file.plk')保存经过培训的clf的所有信息。但这涉及磁盘写入/读取。如果我可以定义一个clf,其中两个数组代表支持向量(clf.support_vectors_),权重(clf.coef_ / clf.dual_coef_)和偏差(对于{分别为clf.intercept_)。

2 个答案:

答案 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中的默认分数。

这当然是一种有些欠佳的做事方式,但在这种特殊情况下,如果不可能(我没有经常检查)设置系数,那么进入代码并查看其功能并提取相关部分肯定是一种选择。