For the same dataset and parameters, I get different accuracy for implementing LibSVM and scikit-learn SVM, although scikit-learn also uses LibSVM internally .
What did I miss?
LibSVM command line version:
me@my-compyter :~/Libraries/libsvm-3.16$ ./svm-train -c 1 -g 0.07 heart_scale heart_scale.model optimization finished,
Scikit-learn NuSVC Version:
In [1]: from sklearn.datasets import load_svmlight_file In [2]: X_train, y_train = load_svmlight_file('heart_scale') In [3]: from sklearn import svm In [4]: clf = svm.NuSVC(gamma=0.07,verbose=True) In [5]: clf.fit(X_train,y_train) [LibSVM]* optimization finished,
Scikit-learn SVC Version:
In [1]: from sklearn.datasets import load_svmlight_file In [2]: X_train, y_train = load_svmlight_file('heart_scale') In [3]: from sklearn import svm In [4]: clf = svm.SVC(gamma=0.07,C=1, verbose=True) In [5]: clf.fit(X_train,y_train) [LibSVM]* optimization finished,
Update
Update1: updated scikit-learn example from SVR to NuSVC, see ogrisel answer
Update2: added output for verbose=True
Update3: added version of SVC scikit-learn
So it looks like my problem is resolved. If I use SVC with C=1 and not NuSVC, I get the same results as libsvm, but can someone explain why NuSVC and SVC (C = 1) give different results, although they should do the same (see ogrisel answer)?