【问题标题】:Is it possible to perform hyper parameter tuning using gridsearchCV with make_pipeline from sklearn是否可以使用 gridsearchCV 和 sklearn 的 make_pipeline 执行超参数调整
【发布时间】:2020-12-29 16:17:59
【问题描述】:

目前,我可以通过使用make_column_transformermake_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 的内容

【问题讨论】:

    标签: python-3.x pandas machine-learning scikit-learn gridsearchcv


    【解决方案1】:

    这是一个关于 scikit-learn 的示例,其中 GridSearchCV 在管道中使用:https://scikit-learn.org/stable/tutorial/statistical_inference/putting_together.html

    您提到的make_pipelinemethod 是“管道构造函数的简写”(Reference),它只返回管道对象。所以最后直接使用管道构造函数会得到同样的结果,你可以用他们的例子来定位自己。

    我假设,您想在调用cross_val_score() 方法之前执行GridSearchCV,以确定最佳参数。

    因此,您可以像他们的一样调整您的代码:

    search = GridSearchCV(pipe, your_param_grid)
    search.fit(X_train, y_train)
    print(search.best_params_)
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2021-08-11
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 2017-11-28
      • 2014-11-14
      • 1970-01-01
      相关资源
      最近更新 更多