title: Can RandomizedSearchCV run on multiple CPU?
body: <p>I'm trying to use RandomizedSearchCV to learn hypeparameters of logistic regression. Here the code:</p>
  
  <pre><code>random_searcher = RandomizedSearchCV(
    estimator = MyLogRegClassifier(),
    param_distributions = {'penalty': ['l2', 'l1'], 
                           'class_weight': [None, 'auto'],
                           'C': logspace(-20, 20, 10000), 
                           'intercept_scaling': logspace(-20, 20, 10000)},
    cv = 4,
    scoring = make_scorer(f1_score, average='samples'),
    n_iter = 100,
    n_jobs = -1,
    pre_dispatch = 10,
    refit = False
  )
  random_searcher.fit(X_tr, y_tr)
  </code></pre>
  
  <p>However, it couldn't use multiple CPU, it runs always on one. But when I switching to <code>GridSearchCV</code> it spawns multiple processes and loads all CPUs.</p>
  
  <pre><code>grid_searcher = GridSearchCV(
    estimator = MyLogRegClassifier(),
    param_grid = {'penalty': ['l2', 'l1'], 
                  'class_weight': [None, 'auto'],
                  'C': logspace(-20, 20, 10000), 
                  'intercept_scaling': logspace(-20, 20, 10000)},
    cv = 4,
    scoring = make_scorer(f1_score, average='samples'),
    n_jobs = -1,
    pre_dispatch = 10,
    refit = False
  )
  grid_searcher.fit(X_tr, y_tr)
  </code></pre>
  
  <p>X_tr is sparse matrix with shape (6700, 25640), y_tr is dense matrix with shape (6700, 83)
  <code>MyLogRegClassifier</code> is essentially <code>OneVsRestClassifier(LogisticRegression())</code>.</p>
  
  <pre><code>class MyLogRegClassifier(BaseEstimator, ClassifierMixin):
      def __init__(self, C=1.0, penalty='l2', 
                   intercept_scaling=1, class_weight=None, n_jobs=1):
          self.C = C
          self.n_jobs = n_jobs
          self.penalty = penalty
          self.intercept_scaling = intercept_scaling
          self.class_weight = class_weight
  
      def fit(self, X, y):
          self.clf = OneVsRestClassifier(LogisticRegression(
              C=self.C, penalty=self.penalty,
              intercept_scaling=self.intercept_scaling, 
              class_weight=self.class_weight),
                                         n_jobs=self.n_jobs)
          self.clf.fit(X, y)
          return self
  
      def predict(self, X):
          return self.clf.predict(X)
  </code></pre>
  
  <p>Am I missing something?</p>