【问题标题】:Maintaining a python file as a jupyter notebook and a python file simultaneously将 python 文件同时维护为 jupyter notebook 和 python 文件
【发布时间】:2021-06-22 01:45:15
【问题描述】:

所以 - 我喜欢 jupyter-lab ...您可以逐步处理大型复杂过程,这很棒。

但是 - 一旦你让它工作,我发现我总是必须要么

  • 添加和解析参数
  • 把它放在一个循环中

因为我几乎总是一步一步地让它与一个示例一起工作,但我可能需要针对一百万个实例运行它 - 或者让它成为你可以说的工具 - 将它指向数据库或目录或其他任何东西。

虽然您可以将其导出为 python 文件,但将其全部放在一个函数中,然后添加您的参数解析或循环 - 突然间您丢失了它的 notebook 元素 - 您不能轻易返回。

我只是想知道是否有人提出了某种技术来基本上实现两者 - 即有一个大笔记本分成几个步骤,然后以某种方式用不同的参数集运行整个事情,可能数百万次 -理想情况下不会丢失 jupyter-lab。即 - 有点像在整个事情上放置一个 for 循环,或者有某种“转到单元格”之类的东西......

或者只是以我从未想过的完全不同的方式解决根本问题。

【问题讨论】:

  • 我会编写脚本,从笔记本文件中读取所有代码并生成 norma .py 文件。在笔记本文件中,我会放置一些带有额外信息的 cmets/docstrings,这些信息将在生成器中使用。 IE。第一个单元格可以对函数名称和参数进行推荐 - 即。 def main(filename): - 然后生成器可以将所有代码放入函数 def main(filename): 等。也许它也可以使用 cmets 类似于 FlaskDjango 中的模板来创建循环 - {% for .... %} ... 带有代码的单元格。 ...{% end for %}
  • 使用谷歌我找到了Best practices for turning jupyter notebooks into python scripts,其中一个答案链接到NotebookScripter,它可以加载笔记本,你可以将它作为函数运行——所以它可以部分解决问题,因为你可以循环运行它用于不同的值。
  • 只是为了确定:你试过jupytextpapermill吗?
  • 将调查所有这些,谢谢

标签: python jupyter-notebook jupyter-lab


【解决方案1】:

您实际上是在描述Ploomber 中的grid 功能:)

它可以将.ipynb.py 作为输入和注入参数,本质上为您提供了一个大的 for 循环,其中每组参数都会生成一个输出笔记本(以及任何其他额外文件),您甚至可以运行任务在平行下。这是一个给你一个想法的例子:

executor: parallel

tasks:
  - source: scripts/fit.py
    name: fit-
    static_analysis: false
    # running this generates report-0.ipynb, report-1.ipynb...
    product: products/report.ipynb
    grid:
      - model: sklearn.ensemble.RandomForestClassifier
        n_estimators: [10, 20]
        criterion: [gini, entropy]
        params_names: [[n_estimators, criterion]]
      - model: sklearn.ensemble.AdaBoostClassifier
        n_estimators: [10, 20]
        learning_rate: [0.5, 1.0]
        params_names: [[n_estimators, learning_rate]]

【讨论】:

  • 会看看 - 谢谢
猜你喜欢
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 2021-10-27
  • 2023-01-05
  • 2018-05-22
  • 1970-01-01
  • 2019-03-23
相关资源
最近更新 更多