问题描述
当前,我可以通过使用make_column_transformer
和make_pipeline
来构建模型,该模型类似于:
from sklearn.compose import make_column_transformer
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import OneHotEncoder
from sklearn.tree import DecisionTreeClassifier
from sklearn.pipeline import make_pipeline
[in]: dtc = DecisionTreeClassifier()
[in]: column_trans = make_column_transformer(
(OneHotEncoder(handle_unkNown='ignore'),['var1','var2','var3','var4','var5','var6'
]),remainder='passthrough')
[in]: column_trans.fit_transform(X)
[in] pipe = make_pipeline(column_trans,dtc)
[in]: cross_val_score(pipe,X_train,y_train,cv=5,scoring='accuracy').mean()
[out]: ... prediction
我已经阅读了文档,似乎找不到任何有关将流程简化为gridsearchcv的内容
解决方法
以下是scikit-learn上的示例,其中在管道中使用GridSearchCV:https://scikit-learn.org/stable/tutorial/statistical_inference/putting_together.html
您提到的make_pipeline
方法是“管道构造函数的简写”(Reference),它仅返回管道对象。因此,最后,直接使用管道构造函数将得到相同的结果,并且您可以根据他们的示例来定位自己。
我假设您要在GridSearchCV
方法调用之前执行cross_val_score()
,以识别最佳参数。
因此,您可以将代码调整为与其相似:
search = GridSearchCV(pipe,your_param_grid)
search.fit(X_train,y_train)
print(search.best_params_)