LeafiWan
LeafiWan

Reputation: 185

How to use the function 'predict' of svm_model in libsvm?

In recent version of libsvm(v3.17 2013.04.01), the method 'predict' in class 'svm_model' has been removed.

The alternative method seems to be method 'svm_predict' in module 'svmutil'. But I can't understand the parameter data(y,x) of this method.

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.
"""

Upvotes: 4

Views: 8069

Answers (1)

Pedrom
Pedrom

Reputation: 3823

"y" are the labels and correspond with the datapoint in "x"

Here is an example of something I did last month:

#!/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

Upvotes: 5

Related Questions