我对libsvm和预计算内核的使用有一个奇怪的问题。我将数据以字典形式放置以遵循文档(与点ID关联的键0):
from svmutil import *
x=[]
for i in range(N):
x[i] = {0:i, 1:K(i,0), 2:K(i,1), ...}
y[i] = true_labels(i)
)然后,我正在执行以下操作来训练svm并得到我的训练错误:
svm_prob = svm_problem(y,x,isKernel=True)
svm_param = svm_parameter('-t 4')
svm_mod = libsvm.svm_train(svm_prob,svm_param)
svm_pymod = toPyModel(svm_mod)
# Estimating training error
p_labels, p_acc, p_val = svm_predict(y,x,svm_pymod)
但是最终输出是完全不正确的,因为值p_val看起来像:
p_val -> [0.xxx, -1.xxx, -2.xxx, -3.xxx, -4.xxx, ...]
(当然p_labels是[-1,-1,-1,...,])
我的分析:我知道我的内核的值K(i,j)远低于1,所以我认为(0:i)libsvm在某个点(可能是在预测阶段)使用了伪功能作为正常功能(而不是点ID)。 。我尝试了几种变体,但无法解决此问题。
慕森王
相关分类