title: Scikit Pipeline Parameters - fit() got an unexpected keyword argument 'gamma'
body: <p><strong>Minimum viable example included ;)</strong></p>
  
  <p>Want I want to to is simply to <em>use the parameters from GridSearchCV to use a Pipeline</em>.</p>
  
  <pre><code>#I want to create a SVM using a Pipeline, and validate the model (measure the accuracy)
  #import libraries
  from sklearn.svm import SVC
  from sklearn.model_selection import GridSearchCV
  from sklearn.preprocessing import StandardScaler
  from sklearn.pipeline import Pipeline
  from sklearn.datasets import load_iris
  from sklearn.model_selection import train_test_split
  import pandas as pd
  
  #load test data
  data = load_iris()
  X_trainset, X_testset, y_trainset, y_testset = train_test_split(data['data'], data['target'], test_size=0.2)
  
  #And here we prepare the pipeline
  pipeline = Pipeline([('scaler', StandardScaler()), ('SVM', SVC())])
  grid = GridSearchCV(pipeline, param_grid={'SVM__gamma':[0.1,0.01]}, cv=5)
  grid.fit(X_trainset, y_trainset) 
  # (Done! Now I can print the accuracy and other metrics)
  
  #Now I want to put together training set and validation set, to train the model before deployment
  #Of course, I want to use the best parameters found by GridSearchCV
  big_x = np.concatenate([X_trainset,X_testset])
  big_y = np.concatenate([y_trainset,y_testset])
  </code></pre>
  
  <p>Up to here, it works with no problem. Then, I write this line:</p>
  
  <pre><code>model2 = pipeline.fit(big_x,big_y, grid.best_params_)
  </code></pre>
  
  <p>Error!</p>
  
  <pre><code>TypeError: fit() takes from 2 to 3 positional arguments but 4 were given
  </code></pre>
  
  <p>Then I tried to be more explicit:</p>
  
  <pre><code>model2 = pipeline.fit(big_x,big_y,fit_params=grid.best_params_)
  </code></pre>
  
  <p>Error again!</p>
  
  <pre><code>ValueError: Pipeline.fit does not accept the fit_params parameter. You can pass parameters to specific steps of your pipeline using the stepname__parameter format, e.g. `Pipeline.fit(X, y, logisticregression__sample_weight=sample_weight)`.
  </code></pre>
  
  <p>Then I tried (out of curiosity) to insert manually the parameter:</p>
  
  <pre><code>pipeline.fit(big_x,big_y, SVM__gamma= 0.01) #Note: I may need to insert many parameters, not just one
  </code></pre>
  
  <p>Error again :(</p>
  
  <pre><code>TypeError: fit() got an unexpected keyword argument 'gamma'
  </code></pre>
  
  <p>I cannot understand why it does not find gamma. I decided to print pipeline.get_params() to have an idea.</p>
  
  <pre><code>In [11]: print(pipeline.get_params())
  Out [11]: 
  {'memory': None, 
   'steps': [('scaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('SVM', SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0, decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf', max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False))], 
   'verbose': False, 
   'scaler': StandardScaler(copy=True, with_mean=True, with_std=True), 
   'SVM': SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0, decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf', max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False), 
  'scaler__copy': True, 'scaler__with_mean': True, 'scaler__with_std': True, 'SVM__C': 1.0, 'SVM__break_ties': False, 'SVM__cache_size': 200, 'SVM__class_weight': None, 'SVM__coef0': 0.0, 'SVM__decision_function_shape': 'ovr', 'SVM__degree': 3, 'SVM__gamma': 'scale', 'SVM__kernel': 'rbf', 'SVM__max_iter': -1, 'SVM__probability': False, 'SVM__random_state': None, 'SVM__shrinking': True, 'SVM__tol': 0.001, 'SVM__verbose': False}
  </code></pre>
  
  <p>I can find SVM__gamma in the list! So why is there an error?</p>
  
  <p>Version of Scikit: 0.22.1</p>
  
  <p>Version of python: 3.7.6</p>