title: Why doesn't fit_transform work in this sklearn Pipeline example?
body: <p>I an new to sklearn Pipeline and following a sample code. I saw in other examples that we can do <code>pipeline.fit_transform(train_X)</code>, so I tried the same thing on the pipeline here <code>pipeline.fit_transform(X)</code>, but it gave me an error </p>
  
  <p>"    return self.fit(X, **fit_params).transform(X)</p>
  
  <p>TypeError: fit() takes exactly 3 arguments (2 given)"</p>
  
  <p>If I remove the svm part and defined the pipeline as <code>pipeline = Pipeline([("features", combined_features)])</code>, I still saw the error. </p>
  
  <p>Does anyone know why <code>fit_transform</code> doesn't work here?</p>
  
  <pre><code>from sklearn.pipeline import Pipeline, FeatureUnion
  from sklearn.grid_search import GridSearchCV
  
  from sklearn.svm import SVC
  from sklearn.datasets import load_iris
  from sklearn.decomposition import PCA
  from sklearn.feature_selection import SelectKBest
  
  iris = load_iris()
  
  X, y = iris.data, iris.target
  
  # This dataset is way to high-dimensional. Better do PCA:
  pca = PCA(n_components=2)
  
  # Maybe some original features where good, too?
  selection = SelectKBest(k=1)
  
  # Build estimator from PCA and Univariate selection:
  
  combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])
  
  # Use combined features to transform dataset:
  X_features = combined_features.fit(X, y).transform(X)
  
  svm = SVC(kernel="linear")
  
  # Do grid search over k, n_components and C:
  
  pipeline = Pipeline([("features", combined_features), ("svm", svm)])
  
  param_grid = dict(features__pca__n_components=[1, 2, 3],
                    features__univ_select__k=[1, 2],
                    svm__C=[0.1, 1, 10])
  
  grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=10)
  grid_search.fit(X, y)
  print(grid_search.best_estimator_)
  </code></pre>