title: why GridSearchCv behave different in same code
body: <p>i'm trying to call GridSearchCV for best estimators 
  and if i call the parameters like this </p>
  
  <pre><code>clf = DecisionTreeClassifier(random_state=42)
  
  parameters = {'max_depth':[2,3,4,5,6,7,8,9,10],\
  'min_samples_leaf':[2,3,4,5,6,7,8,9,10],\
  'min_samples_split':[2,3,4,5,6,7,8,9,10]}
  
  scorer = make_scorer(f1_score)
  
  grid_obj = GridSearchCV(clf, parameters, scoring=scorer)
  
  grid_fit = grid_obj.fit(X_train, y_train)
  
  best_clf = grid_fit.best_estimator_
  
  best_clf.fit(X_train, y_train)
  
  best_train_predictions = best_clf.predict(X_train)
  best_test_predictions = best_clf.predict(X_test)
  
  print('The training F1 Score is', f1_score(best_train_predictions, y_train))
  print('The testing F1 Score is', f1_score(best_test_predictions, 
  y_test))
  </code></pre>
  
  <p>Result would be </p>
  
  <pre><code>The training F1 Score is 0.784810126582
  The testing F1 Score is 0.72
  </code></pre>
  
  <p>the result would be different from this for the same data 
  i only changed the [2,3,4,5,6,7,8,9,10] to [2,4,6,8,10]</p>
  
  <pre><code>clf = DecisionTreeClassifier(random_state=42)
  
  parameters = {'max_depth':[2,4,6,8,10],'min_samples_leaf':[2,4,6,8,10],\
            'min_samples_split':[2,4,6,8,10] }
  
  scorer = make_scorer(f1_score)
  
  grid_obj = GridSearchCV(clf, parameters, scoring=scorer)
  grid_fit = grid_obj.fit(X_train, y_train)
  best_clf = grid_fit.best_estimator_
  best_clf.fit(X_train, y_train)
  best_train_predictions = best_clf.predict(X_train)
  best_test_predictions = best_clf.predict(X_test)
  
  print('The training F1 Score is', f1_score(best_train_predictions, y_train))
  print('The testing F1 Score is', f1_score(best_test_predictions, y_test))
  </code></pre>
  
  <p>Result</p>
  
  <pre><code>The training F1 Score is 0.814814814815
  The testing F1 Score is 0.8
  </code></pre>
  
  <p>Confused how GridsearchCV exactly works</p>