Reputation: 185
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
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