我想知道,对于一个支持向量回归模型的回归系数,是否可以手动计算出该模型的预测值。更确切地说,假设:
那么,您可以通过使用以下方法轻松获取预测结果:
我想知道如何通过直接计算来获得此结果。从决策函数开始, 其中
因为我使用RBF核,所以我是这样开始的:
然而,这个计算结果与
更新
经过更多的研究,我发现了以下帖子:scikit.svm.SRV.predict(X)的复制和手动计算SVM的决策函数。在第一篇文章中,他们谈论回归,在第二篇文章中谈论分类,但想法是相同的。在这两种情况下,OP基本上问的是同样的事情,但当我尝试实现他们的代码时,我总是在步骤中遇到错误。
表单的格式
我不明白为什么支持向量的数量应该等于测试数据的数量。据我所知,这几乎从未发生过。因此,有人能否就如何更普遍地解决此问题提供一些指导,即如何改进代码以使其适用于多维数组?
附言:与问题无关,但为了准确起见:7是特征数。
svc = SVR(kernel='rbf', epsilon=0.3, gamma=0.7, C=64)
svc.fit(X_train, y_train)
那么,您可以通过使用以下方法轻松获取预测结果:
y_pred = svc.predict(X_test)
我想知道如何通过直接计算来获得此结果。从决策函数开始, 其中
K
是RBF核函数,b
是截距,alpha是双重系数。因为我使用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)
然后我进行了计算。
np.sum(svc._dual_coef_*A)+svc.intercept_
然而,这个计算结果与
y_pred
的第一个术语不同。我怀疑我的推理不完全正确和/或我的代码不是应该的,所以如果这不是正确的板块,请谅解。我已经盯着这个问题看了两个小时,所以任何帮助都将不胜感激!更新
经过更多的研究,我发现了以下帖子:scikit.svm.SRV.predict(X)的复制和手动计算SVM的决策函数。在第一篇文章中,他们谈论回归,在第二篇文章中谈论分类,但想法是相同的。在这两种情况下,OP基本上问的是同样的事情,但当我尝试实现他们的代码时,我总是在步骤中遇到错误。
diff = sup_vecs - X_test
表单的格式
ValueError: operands could not be broadcast together with shapes
(number equal to amount of support vectors,7) (number equal to len(Xtest),7)
我不明白为什么支持向量的数量应该等于测试数据的数量。据我所知,这几乎从未发生过。因此,有人能否就如何更普遍地解决此问题提供一些指导,即如何改进代码以使其适用于多维数组?
附言:与问题无关,但为了准确起见:7是特征数。