title: Sklearn pass fit() parameters to xgboost in pipeline
body: <p>Similar to <a href="https://stackoverflow.com/questions/35632634/how-to-pass-a-parameter-to-only-one-part-of-a-pipeline-object-in-scikit-learn">How to pass a parameter to only one part of a pipeline object in scikit learn?</a> I want to pass parameters to only one part of a pipeline. Usually, it should work fine like:</p>
  
  <pre><code>estimator = XGBClassifier()
  pipeline = Pipeline([
          ('clf', estimator)
      ])
  </code></pre>
  
  <p>and executed like</p>
  
  <pre><code>pipeline.fit(X_train, y_train, clf__early_stopping_rounds=20)
  </code></pre>
  
  <p>but it fails with:</p>
  
  <pre><code>    /usr/local/lib/python3.5/site-packages/sklearn/pipeline.py in fit(self, X, y, **fit_params)
          114         """
          115         Xt, yt, fit_params = self._pre_transform(X, y, **fit_params)
      --&gt; 116         self.steps[-1][-1].fit(Xt, yt, **fit_params)
          117         return self
          118 
  
      /usr/local/lib/python3.5/site-packages/xgboost-0.6-py3.5.egg/xgboost/sklearn.py in fit(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose)
          443                               early_stopping_rounds=early_stopping_rounds,
          444                               evals_result=evals_result, obj=obj, feval=feval,
      --&gt; 445                               verbose_eval=verbose)
          446 
          447         self.objective = xgb_options["objective"]
  
      /usr/local/lib/python3.5/site-packages/xgboost-0.6-py3.5.egg/xgboost/training.py in train(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, learning_rates, xgb_model, callbacks)
          201                            evals=evals,
          202                            obj=obj, feval=feval,
      --&gt; 203                            xgb_model=xgb_model, callbacks=callbacks)
          204 
          205 
  
      /usr/local/lib/python3.5/site-packages/xgboost-0.6-py3.5.egg/xgboost/training.py in _train_internal(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)
           97                                end_iteration=num_boost_round,
           98                                rank=rank,
      ---&gt; 99                                evaluation_result_list=evaluation_result_list))
          100         except EarlyStopException:
          101             break
  
      /usr/local/lib/python3.5/site-packages/xgboost-0.6-py3.5.egg/xgboost/callback.py in callback(env)
          196     def callback(env):
          197         """internal function"""
      --&gt; 198         score = env.evaluation_result_list[-1][1]
          199         if len(state) == 0:
          200             init(env)
  
      IndexError: list index out of range
  </code></pre>
  
  <p>Whereas a </p>
  
  <pre><code>estimator.fit(X_train, y_train, early_stopping_rounds=20)
  </code></pre>
  
  <p>works just fine.</p>