我正在使用scikit-learn库,并且不确定是否需要在gs.best_estimator_.predict(x_?)上使用X_test或X_test_transformed。
假设通过定义一个带有standardScaler()和一个MLPclassifier的转换器的管道,我已经适合我的gs(网格搜索对象)(gs = gs.fit(X_train,Y_train))实例。 在一个秘密的例子中,我看到的是:
clf = gs.best_estimator_
clf.fit(X_train, y_train)
y_predicted = clf.predict(X_test)
很明显,X_test将通过我定义的管道,因为最好的估计器来自那里,但是我如何确保在X_test上将在最后一步进行分类之前应用transform方法?因此,我的疑问是:
申请gs.best_estimator_.predict(???)
之前需要先转换X_test吗?
谢谢
只需回答@bakka:
在我的代码下面:
pipeline =make_pipeline(StandardScaler(),MLPClassifier(hidden_layer_sizes=(24,),activation="logistic",solver='lbgfs',alpha=1e-01,random_state=42,tol=1e-4,max_iter=10000))
hidden_layer_size_range = [24,25,26]
activation_range = ['identity','logistic','tanh','relu']
solver_range = ['lbfgs','sgd','adam']
alpha_range = [1e-1,1e-2,1e-3,1e-4,1e-5,1e-6,1e-7]
learning_rate_range = ['constant','adaptive']
param_grid = {'mlpclassifier__hidden_layer_sizes': hidden_layer_size_range, 'mlpclassifier__activation': activation_range,'mlpclassifier__solver': solver_range,'mlpclassifier__alpha': alpha_range,'mlpclassifier__learning_rate': learning_rate_range}
gs = GridSearchCV(pipeline,param_grid,scoring='accuracy',n_jobs=-1,cv=5)
gs = gs.fit(X_train,Y_train)