title: Does scikit-learn use One-Vs-Rest by default in multi-class classification?
body: <p>I am dealing with a multi-class problem (4 classes) and I am trying to solve it with scikit-learn in Python.</p>
  
  <p>I saw that I have three options:</p>
  
  <ol>
  <li><p>I simply instantiate a classifier, then I fit with train and evaluate with test;</p>
  
  <pre><code>classifier = sv.LinearSVC(random_state=123)
  classifier.fit(Xtrain, ytrain)
  classifier.score(Xtest, ytest)
  </code></pre></li>
  <li><p>I "encapsulate" the instantiated classifier in a OneVsRest object, generating a new classifier that I use for train and test;</p>
  
  <pre><code>classifier = OneVsRestClassifier(svm.LinearSVC(random_state=123))
  classifier.fit(Xtrain, ytrain)
  classifier.score(Xtest, ytest)
  </code></pre></li>
  <li><p>I "encapsulate" the instantiated classifier in a OneVsOne object, generating a new classifier that I use for train and test.</p>
  
  <pre><code>classifier = OneVsOneClassifier(svm.LinearSVC(random_state=123))
  classifier.fit(Xtrain, ytrain)
  classifier.score(Xtest, ytest)
  </code></pre></li>
  </ol>
  
  <p>I understand the difference between OneVsRest and OneVsOne, but I cannot understand what I am doing in the first scenario where I do not explicitly pick up any of these two options. What does scikit-learn do in that case? Does it implicitly use OneVsRest?</p>
  
  <p>Any clarification on the matter would be highly appreciated.</p>
  
  <p>Best, 
  MR</p>
  
  <p><strong>Edit</strong>:
  Just to make things clear, I am not specifically interested in the case of SVMs. For example, what about RandomForest?</p>