相关疑难解决方法(0)

Scikit学习SVC decision_function并做出预测

我试图理解decision_function和predict之间的关系,它们是SVC的实例方法(http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html).到目前为止,我已经收集到决策函数返回类之间的成对分数.我的印象是预测选择最大化其成对分数的类,但我测试了它并得到了不同的结果.这是我用来尝试理解两者之间关系的代码.首先我生成了成对分数矩阵,然后我打印出了具有最大配对分数的类,该分数与clf.predict预测的类不同.

        result = clf.decision_function(vector)[0]
        counter = 0
        num_classes = len(clf.classes_)
        pairwise_scores = np.zeros((num_classes, num_classes))
        for r in xrange(num_classes):
            for j in xrange(r + 1, num_classes):
                pairwise_scores[r][j] = result[counter]
                pairwise_scores[j][r] = -result[counter]
                counter += 1

        index = np.argmax(pairwise_scores)
        class = index_star / num_classes
        print class
        print clf.predict(vector)[0]
Run Code Online (Sandbox Code Playgroud)

有谁知道这些预测和决策功能之间的关系?

python numpy svm scikit-learn

54
推荐指数
4
解决办法
6万
查看次数

反向支持向量机:计算预测

我想知道,考虑到 svm 回归模型的回归系数,是否可以“手动”计算该模型所做的预测。更准确地说,假设:

svc = SVR(kernel='rbf', epsilon=0.3, gamma=0.7, C=64)
svc.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

那么你可以通过使用非常容易地获得预测

y_pred = svc.predict(X_test)
Run Code Online (Sandbox Code Playgroud)

我想知道如何直接计算得到这个结果。从决策函数开始, RBF核的决策函数 其中K是 RBF 核函数,b是截距,α 是对偶系数。

因为我使用 RBF 内核,所以我是这样开始的:

def RBF(x,z,gamma,axis=None):
    return np.exp((-gamma*np.linalg.norm(x-z, axis=axis)**2))


for i in len(svc.support_):
    A[i] = RBF(X_train[i], X_test[0], 0.7)
Run Code Online (Sandbox Code Playgroud)

然后我计算了

np.sum(svc._dual_coef_*A)+svc.intercept_
Run Code Online (Sandbox Code Playgroud)

但是,此计算的结果与 的第一项不同y_pred。我怀疑我的推理并不完全正确和/或我的代码不应该是这样,所以如果这不是正确的提问板,我深表歉意。在过去的两个小时里我一直盯着这个问题,所以任何帮助将不胜感激!

更新

经过更多研究,我发现了以下帖子:Replication of scikit.svm.SRV.predict(X)Calculated Decision Function of SVM Manual。在第一篇文章中,他们讨论了回归,在第二篇文章中讨论了分类,但想法保持不变。在这两种情况下,操作员基本上都在问同样的事情,但是当我尝试实现他们的代码时,我总是在步骤中遇到错误

diff = sup_vecs - X_test
Run Code Online (Sandbox Code Playgroud)

形式的

ValueError: operands could not be broadcast together with shapes 

(number equal to amount of …
Run Code Online (Sandbox Code Playgroud)

python regression svm scikit-learn

5
推荐指数
1
解决办法
1724
查看次数

标签 统计

python ×2

scikit-learn ×2

svm ×2

numpy ×1

regression ×1