C parameter error in pipeline I'm trying to build a classifier for my dataset and I'm having an issue with using my gridsearchCV and pipeline together. Here is my code:

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import Imputer, StandardScaler
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, classification_report

imp = Imputer()
scaler = StandardScaler()
clf = LogisticRegression(multi_class='multinomial')

Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, test_size=0.3, random_state=42)

pipeline = make_pipeline(imp, scaler, clf)

param_grid = {'penalty':["l1","l2"], 'C':np.arange(0.001, 1, 0.01),
                  'solver': ['newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga']}

search = GridSearchCV(estimator=pipeline, param_grid=param_grid, cv=5)


Once I call the method on search, I get the following error. 

search.fit(Xtrain, ytrain)

ValueError: Invalid parameter C for estimator Pipeline(memory=None,
 steps=[('imputer', Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)), ('standardscaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('logisticregression', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
      intercept_scaling=1, max_iter=100, multi_class='multinomial',
      n_jobs=1, penalty='l2', random_state=None, solver='liblinear',
      tol=0.0001, verbose=0, warm_start=False))]). Check the list of available parameters with `estimator.get_params().keys()`.


I'm not sure how my C parameters are invalid. Does anyone know what I'm doing wrong?
I have already posted it here:

https://stackoverflow.com/questions/43366561/use-sklearns-gridsearchcv-with-a-pipeline-preprocessing-just-once/55401454#55401454

Suppose you have this pipeline:

classifier = Pipeline([
    ('vectorizer', CountVectorizer(max_features=100000, ngram_range=(1, 3))),
    ('clf', RandomForestClassifier(n_estimators=10, random_state=SEED, n_jobs=-1))])


Then, when specifying parameters you need to include this 'clf_' name that you used for your estimator. So the parameters grid is going to be:

params={'clf__max_features':[0.3, 0.5, 0.7],
        'clf__min_samples_leaf':[1, 2, 3],
        'clf__max_depth':[None]
        }