【问题标题】:What is the difference between pipeline and make_pipeline in scikit?scikit 中的 pipeline 和 make_pipeline 有什么区别?
【发布时间】:2017-04-04 03:13:21
【问题描述】:

我是从 sklearn 网页得到的:

  • 管道:带有最终估计器的转换管道

  • Make_pipeline:从给定的估算器构造管道。这是 Pipeline 构造函数的简写。

但我仍然不明白什么时候必须使用每个。谁能举个例子?

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    唯一的区别是make_pipeline 自动为步骤生成名称。

    需要步骤名称,例如如果您想使用带有模型选择实用程序(例如 GridSearchCV)的管道。使用网格搜索,您需要为管道的各个步骤指定参数:

    pipe = Pipeline([('vec', CountVectorizer()), ('clf', LogisticRegression()])
    param_grid = [{'clf__C': [1, 10, 100, 1000]}
    gs = GridSearchCV(pipe, param_grid)
    gs.fit(X, y)
    

    与 make_pipeline 比较:

    pipe = make_pipeline(CountVectorizer(), LogisticRegression())     
    param_grid = [{'logisticregression__C': [1, 10, 100, 1000]}
    gs = GridSearchCV(pipe, param_grid)
    gs.fit(X, y)
    

    所以,Pipeline:

    • 名称是明确的,如果需要,您不必弄清楚;
    • 如果您更改步骤中使用的估计器/变压器,名称不会改变,例如如果您将 LogisticRegression() 替换为 LinearSVC(),您仍然可以使用 clf__C

    make_pipeline:

    • 更短且可读性更强的符号;
    • 名称是使用简单的规则(估算器的小写名称)自动生成的。

    何时使用它们取决于您 :) 我更喜欢 make_pipeline 用于快速实验,而 Pipeline 用于更稳定的代码;经验法则:IPython Notebook -> make_pipeline;较大项目中的 Python 模块 -> 管道。但在模块中使用 make_pipeline 或在短脚本或笔记本中使用 Pipeline 肯定不是什么大问题。

    【讨论】:

    • 你能告诉我LogisticRegression()的估计器名称是logisticregression吗?我必须为OneVsRestClassifier(LinearSVC()) 设置网格搜索,但我不知道它的名称是什么。
    • @KubiK888 记录在scikit-learn.org/stable/modules/generated/… - “他们的名字将自动设置为他们类型的小写”
    • 但是OneVsRestClassifier(LinearSVC())呢,我已经尝试了以下所有方法:'onevsrestclassifier_linearsvc__C', onevsrestclassifier_linearsvc_estimator__C', 'onevsrestclassifier__C', 'linearsvc__C', 'onevsrestclassifier__linearsvc__C', 'onevsrestclassifier-linearsvc__C', 'onevsrestclassifier_linearsvc_estimator__C', 'estimator__C',他们都给了我Check the list of available parameters with "estimator.get_params().keys()"
    • 没我的,刚刚发现这是正确的命名格式onevsrestclassifier__estimator__C
    • @KubiK888 你在哪里找到正确的命名格式?某处有清单吗?
    猜你喜欢
    • 2020-02-22
    • 2017-03-14
    • 2018-06-09
    • 2016-08-01
    • 2015-03-10
    • 2017-08-06
    • 2018-03-18
    • 2018-07-02
    • 2020-07-13
    相关资源
    最近更新 更多