TypeError grid seach

Eu costumava criar loop para encontrar os melhores parâmetros para o meu modelo, o que aumentava meus erros na codificação, então decidi usarGridSearchCV.
Estou tentando descobrir os melhores parâmetros para o PCA para o meu modelo (o único parâmetro em que quero pesquisar na grade).
Nesse modelo, após a normalização, desejo combinar os recursos originais com os recursos reduzidos do PCA e aplicar o SVM linear.
Em seguida, salvei o modelo inteiro para prever minha entrada.

Estou com um erro na linha em que tento ajustar os dados para poder usarbest_estimator_ ebest_params_ funções.
O erro diz:TypeError: The score function should be a callable, all (<type 'str'>) was passed. Eu não usei nenhum parâmetro para o qual eu possa precisar fornecer uma stringGridSearchCVentão não sei por que tenho esse erro

Eu também quero saber se a linhaprint("shape after model",X.shape) antes de salvar meu modelo, deve imprimir(150, 7) and (150, 5) ambos com base em todos os parâmetros possíveis?

from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest
from sklearn.preprocessing import StandardScaler
from sklearn.externals import joblib
from numpy import array

iris = load_iris()
X, y = iris.data, iris.target

print(X.shape) #prints (150, 4)
print (y)

#cretae models and piplline them
combined_features = FeatureUnion([("pca", PCA()), ("univ_select", SelectKBest(k='all'))])
svm = SVC(kernel="linear")

pipeline = Pipeline([("scale", StandardScaler()),("features", combined_features), ("svm", svm)])

# Do grid search over n_components:
param_grid = dict(features__pca__n_components=[1,3])

grid_search = GridSearchCV(pipeline, param_grid=param_grid, cv=5, verbose=10)
grid_search.fit(X, y)
print("best parameters", grid_search.best_params_)

print("shape after model",X.shape) #should this print (150, 7) or (150, 5) based on best parameter?

#save the model
joblib.dump(grid_search.best_estimator_, 'model.pkl', compress = 1)

#new data to predict
Input=[ 2.9 , 4.  ,1.2  ,0.2]
Input= array(Input)

#use the saved model to predict the new data
modeltrain="model.pkl"
modeltrain_saved = joblib.load(modeltrain) 
model_predictions = modeltrain_saved.predict(Input.reshape(1, -1))
print(model_predictions)

Eu atualizei o código com base nas respostas

questionAnswers(1)

yourAnswerToTheQuestion