This is an old revision of the document!
Let's use a One-vs-the-rest classifier on the iris dataset. The data has four features that describe features of three types of iris flowers.
In [1]: import numpy as np In [2]: from sklearn import datasets In [3]: from sklearn.multiclass import OneVsRestClassifier,OneVsOneClassifier In [4]: from sklearn.svm import LinearSVC,SVC In [5]: from sklearn import cross_validation In [6]: iris = datasets.load_iris() In [7]: X, y = iris.data, iris.target In [8]: classifier = OneVsRestClassifier(LinearSVC()) In [9]: print np.mean(cross_validation.cross_val_score(classifier, X, y, cv=5)) 0.966666666667 In [10]: classifier = OneVsOneClassifier(LinearSVC()) In [11]: print np.mean(cross_validation.cross_val_score(classifier, X, y, cv=5))0.98 In [12]: # does this mean that oneVsOne is better? not necessarily... In [13]: classifier = OneVsRestClassifier(SVC(C=1, kernel='rbf', gamma=0.5)) In [14]: print np.mean(cross_validation.cross_val_score(classifier, X, y, cv=5))0.98
And here's the code without the python prompts to get in the way:
import numpy as np from sklearn import datasets from sklearn.multiclass import OneVsRestClassifier,OneVsOneClassifier from sklearn.svm import LinearSVC,SVC from sklearn import cross_validation iris = datasets.load_iris() X, y = iris.data, iris.target classifier = OneVsRestClassifier(LinearSVC()) print np.mean(cross_validation.cross_val_score(classifier, X, y, cv=5)) classifier = OneVsOneClassifier(LinearSVC()) print np.mean(cross_validation.cross_val_score(classifier, X, y, cv=5)) # does this mean that oneVsOne is better? not necessarily... classifier = OneVsRestClassifier(SVC(C=1, kernel='rbf', gamma=0.5)) print np.mean(cross_validation.cross_val_score(classifier, X, y, cv=5))