用于构建scikit学习网格搜索的参数网格的帮助程序

searchgrid的Python项目详细描述


帮助构建scikit学习网格搜索的参数网格 <;scikit learn:grid_search>;

Latest version on PyPilicencePython versions supported

Issue trackerTravis CI build statusDocumentation StatusTest coverage

为中的sklearn.model\u selection.gridSearchCv<;gridSearchCv>;指定参数网格 scikit learn可能很烦人,特别是在以下情况下:

  • 您可以更改代码,将一些估计器包装在^{tt1}中$ 然后需要使用大量 __s
  • 您正在多个网格上搜索(即您的param_grid是 列表)并希望对所有这些网格进行更改

SearchGrid允许您定义(和更改)网格以及 esimator,减少工作量,有时还编写代码。 它存储要在每个特定估计器上搜索的参数 反对。这使得 指定复杂的参数网格,意味着您不需要更新 网格当你改变你的复合估计器的结构。

它提供两个主要功能:

  • searchgrid.set_grid用于指定要 搜索估计器或gp核。
  • search grid.make_grid_search用于构造 GridSearchCV使用参数空间的对象估计器被注释 和。

其他用于构建搜索空间的实用程序包括:

  • 搜索网格.构建参数网格
  • 搜索网格.make_pipeline
  • 搜索网格。合并

快速启动

如果安装了scikit learn,则在终端中:

pip install searchgrid

在python中使用:

from search_grid import set_grid, make_grid_search
estimator = set_grid(MyEstimator(), param=[value1, value2, value3])
search = make_grid_search(estimator, cv=..., scoring=...)
search.fit(X, y)

或者在多个不同的估计器/管道中搜索最佳值:

search = make_grid_search([estimator1, estimator2], cv=..., scoring=...)
search.fit(X, y)

激励示例

让我们看看那些乱七八糟的零钱箱。我们会从 方法。

>>> from sklearn.pipeline import Pipeline
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.feature_selection import SelectKBest
>>> from sklearn.decomposition import PCA
>>> from searchgrid import set_grid, make_grid_search
>>> from sklearn.model_selection import GridSearchCV
在管道中包装估计器。

您有一个在参数上搜索分类器的代码。 现在要在管道中搜索该分类器。 使用普通的旧scikit learn,您必须插入__s并更改:

>>> gs = GridSearchCV(LogisticRegression(), {'C': [.1, 1, 10]})

收件人:

>>> gs = GridSearchCV(Pipeline([('reduce', SelectKBest()),
...                             ('clf', LogisticRegression())]),
...                   {'clf__C': [.1, 1, 10]})

使用searchgrid,我们只需将分类器包装在管道中,并且 无需更改参数网格,只需添加clf__前缀。发件人:

>>> lr = set_grid(LogisticRegression(), C=[.1, 1, 10])
>>> gs = make_grid_search(lr)

收件人:

>>> lr = set_grid(LogisticRegression(), C=[.1, 1, 10])
>>> gs = make_grid_search(Pipeline([('reduce', SelectKBest()),
...                                 ('clf', lr)]))
要更改正在管道中搜索的估计器。

使用scikit learn,要使用pca而不是selectkbest,请更改:

>>> pipe = Pipeline([('reduce', SelectKBest()),
...                  ('clf', LogisticRegression())])
>>> gs = GridSearchCV(pipe,
...                   {'reduce__k': [5, 10, 20],
...                    'clf__C': [.1, 1, 10]})

收件人:

>>> pipe = Pipeline([('reduce', PCA()),
...                  ('clf', LogisticRegression())])
>>> gs = GridSearchCV(pipe,
...                   {'reduce__n_components': [5, 10, 20],
...                    'clf__C': [.1, 1, 10]})

注意reduce__k变成了reduce__n_components

使用searchgrid更容易,因为您可以更改估计器和 相同位置的参数:

>>> reduce = set_grid(SelectKBest(), k=[5, 10, 20])
>>> lr = set_grid(LogisticRegression(), C=[.1, 1, 10])
>>> pipe = Pipeline([('reduce', reduce),
...                  ('clf', lr)])
>>> gs = make_grid_search(pipe)

变成:

>>> reduce = set_grid(PCA(), n_components=[5, 10, 20])
>>> lr = set_grid(LogisticRegression(), C=[.1, 1, 10])
>>> pipe = Pipeline([('reduce', reduce),
...                  ('clf', lr)])
>>> gs = make_grid_search(pipe)
在多个网格上搜索。

您想从上一个示例中获取代码,但要搜索 同一搜索中的过特征选择与pca约简。

不带搜索网格:

>>> pipe = Pipeline([('reduce', None),
...                  ('clf', LogisticRegression())])
>>> gs = GridSearchCV(pipe, [{'reduce': [SelectKBest()],
...                           'reduce__k': [5, 10, 20],
...                           'clf__C': [.1, 1, 10]},
...                          {'reduce': [PCA()],
...                           'reduce__n_components': [5, 10, 20],
...                           'clf__C': [.1, 1, 10]}])

使用搜索网格:

>>> kbest = set_grid(SelectKBest(), k=[5, 10, 20])
>>> pca = set_grid(PCA(), n_components=[5, 10, 20])
>>> lr = set_grid(LogisticRegression(), C=[.1, 1, 10])
>>> pipe = set_grid(Pipeline([('reduce', None),
...                           ('clf', lr)]),
...                 reduce=[kbest, pca])
>>> gs = make_grid_search(pipe)

既然你不再关心步骤名了,就用 searchgrid.make_pipeline更简单地表示替代步骤:

>>> from searchgrid import make_pipeline
>>> kbest = set_grid(SelectKBest(), k=[5, 10, 20])
>>> pca = set_grid(PCA(), n_components=[5, 10, 20])
>>> lr = set_grid(LogisticRegression(), C=[.1, 1, 10])
>>> pipe = make_pipeline([kbest, pca], lr)
>>> gs = make_grid_search(pipe)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JMF替换   java从apache网站导入库   如何在cmd/sudo中输入参数并在运行时使用它们?(爪哇)   java如何在page zk framework中触发任何选定的手动事件时保存textbox值   java如何在安卓应用程序中读取弹出窗口中的文本?   java my jsonarray不显示在我的arraylist中   java Spring如何用环境变量替换${}?   JavaRxJava2:迭代项并获得与条件匹配的项   java My mavenearplugin不尊重bundleFileName吗?   java Dropwizard V2端点   java修复语法或拼写错误?   java Netty 4.0 HTTP块内存泄漏?   链表Java结构(泛型)   java在Windows下的Eclipse SWT中使用64位XulRunner