如何使用libsvm中svm_model的'predict'函数?

4
在最近版本的libsvm(v3.17 2013.04.01)中,类'svm_model'中的'method 'predict''已经被移除。替代方法看起来是模块'svmutil'中的'method 'svm_predict''。但是,我不太理解该方法中参数'data(y,x)'的含义。
以下是该方法的示例代码:def svm_predict(y, x, m, options=""):
"""
svm_predict(y, x, m [, options]) -> (p_labels, p_acc, p_vals)

Predict data (y, x) with the SVM model m. 
options: 
    -b probability_estimates: whether to predict probability estimates, 
        0 or 1 (default 0); for one-class SVM only 0 is supported.
    -q : quiet mode (no outputs).

The return tuple contains
p_labels: a list of predicted labels
p_acc: a tuple including  accuracy (for classification), mean-squared 
       error, and squared correlation coefficient (for regression).
p_vals: a list of decision values or probability estimates (if '-b 1' 
        is specified). If k is the number of classes, for decision values,
        each element includes results of predicting k(k-1)/2 binary-class
        SVMs. For probabilities, each element contains k values indicating
        the probability that the testing instance is in each class.
        Note that the order of classes here is the same as 'model.label'
        field in the model structure.
"""

1个回答

5

"y"是标签,对应于"x"中的数据点。

这是我上个月做的一个示例:

#!/usr/bin/python
from svmutil import *

model = svm_load_model("train_yesterday.model")

values=[{1:1.37599, 2:1.37597, 3:1.37597, 4:1.37587, 5:1.37586}]
newcurve = []

for j in range(1,121):
    a,b,val = svm_predict([1],values,model)
    newval = val[0][0]

    for i in range(1,5):
        values[0][i] = values[0][i+1]
    values[0][5] = newval

如果我们想要预测“X”中点的分类,为什么要输入相应的“y”呢?这不是我们正在尝试找到的吗? - mxdg
@mxdg 如果你想获得模型的精度,这是可选的,否则你可以忽略它们。 - Pedrom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接