【发布时间】:2017-04-04 03:13:21
【问题描述】:
我是从 sklearn 网页得到的:
-
管道:带有最终估计器的转换管道
-
Make_pipeline:从给定的估算器构造管道。这是 Pipeline 构造函数的简写。
但我仍然不明白什么时候必须使用每个。谁能举个例子?
【问题讨论】:
标签: python scikit-learn
我是从 sklearn 网页得到的:
管道:带有最终估计器的转换管道
Make_pipeline:从给定的估算器构造管道。这是 Pipeline 构造函数的简写。
但我仍然不明白什么时候必须使用每个。谁能举个例子?
【问题讨论】:
标签: python scikit-learn
唯一的区别是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:
clf__C。make_pipeline:
何时使用它们取决于您 :) 我更喜欢 make_pipeline 用于快速实验,而 Pipeline 用于更稳定的代码;经验法则:IPython Notebook -> make_pipeline;较大项目中的 Python 模块 -> 管道。但在模块中使用 make_pipeline 或在短脚本或笔记本中使用 Pipeline 肯定不是什么大问题。
【讨论】:
LogisticRegression()的估计器名称是logisticregression吗?我必须为OneVsRestClassifier(LinearSVC()) 设置网格搜索,但我不知道它的名称是什么。
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。