关于人工智能:Notebook在复现数据科学研究成果中的丝滑使用

37次阅读

共计 2792 个字符,预计需要花费 7 分钟才能阅读完成。

对于数据迷信和 AI 科研人员而言,研究成果的复现至关重要。成绩复现既是一种钻研算法的形式,也有助于科研人员找到钻研的新途径。

IDP 中提供自研 notebook 交互式编程环境,它非常适合做数据分析与代码展现,次要性能包含:智能开发、自适配环境、一键运行、一键连贯数据源、各种其余平台工具集成、可视化工作流治理等等。

本文仅以展现可复现性研究成果为指标,来解说如何利用 IDP 书写丑陋的 notebook。

研究成果复现的开发周期通常可分为三个阶段:组织和记录,代码的思维整顿记录和为分享做筹备。上面将对这三阶段进行顺次开展。

一、组织和记录

“组织记录”,顾名思义就是记录残缺的试验过程,其试验依赖该当齐全参照论文内容的明确批示或者自我的实验设计细节。

宽泛总结其余钻研学者的教训,此阶段的 notebook 书写该当遵循以下几点:

1. 内容的故事性

IDP notebook 由代码、文本、SQL、数据可视化四局部组成,咱们要利用好文本甚至多媒体在解释性方面的优良表白,创立一个计算性的叙述,像为观众讲故事一样地介绍主题、排列步骤、解释后果,让这个故事变得更加引人入胜,在此时要对浏览故事的人群有一个预估,他是实验室的非技术共事、另一个实验室的分析师、某一期刊的读者还是公众?这决定了你要讲故事讲成什么样、语言形容的粒度大小。


图 1. IDP Notebook 组成

2. 更加重视过程而不是后果

IDP notebook 有很强的交互性,左边栏的变量管理器弱小的性能进一步加强了这一点,这使得咱们尝试和比照不同办法或参数更加疾速和容易。但便捷的交互和参数治理性能,有时会使咱们疏忽了在执行这些交互式调研时将过程其记录下来(本源在于懒得新建一个 cell)。咱们该当确保记录下所有的摸索,甚至那些导致进入死胡同的摸索!这些将帮忙你记住做了什么和为什么做。不倡议等到剖析完结、失去了牢靠后果后,才增加这样的解释性文字。正确做法是不要等,到那时你可能曾经遗记了为什么抉择某个特定参数值、从哪里复制了一段代码,或者两头后果的乏味之处是什么。如果你没有工夫全面记录你此刻正在做什么或在想什么,那么留下简短的描述性笔记来揭示本人,在能够停下时放松把这些内容增加上。


图 2. IDP 工作区变量管理器

3. 将内容分区

IDP 的自研 notebook 是一个交互式的环境,所以它很容易编写和运行单行单元格,在试验过程中,可能会存在多个别人难以了解的短小代码单元格。这时,咱们能够尝试增加一个有意义的剖析步骤,用以划分单元块,还能够联动左边栏的纲要性能,实现随时跳转,精确定位。

细化来说,就是按单元格模块化代码,并在单元格上方用 markdown 标记。将每个单元格设想为一个段落、领有一个函数或实现一个工作(例如,创立一个绘图)。防止长单元格(任何超过 100 行或一页的内容都太长了)。在代码正文中放入低级文档。应用描述性的 markdown header 将 notebook 分区,使其能够轻松导航和增加目录。将长 notebook 拆分为一系列 notebook,并保留一个 top-level index notebook,其中蕴含指向各个 notebook 的链接。


图 3. IDP 工作区纲要

二、代码的思维整顿记录

到这一步试验曾经根本实现,咱们要让咱们书写的 notebook 变得更加好看、正当,须要在以下几个方面整顿笔记:

1. 遵循规定的重要性

面向对象的思维在代码工程中利用很多,此时也须要简略地遵循规定,以防止反复,在 notebook 中,复制一个单元格、调整几行、将生成的代码粘贴到新单元格或其余 notebook 中并再次运行是特地容易的,所以试验过程中不免留下一些反复代码,此时就该当将其用函数的模式包装起来,简单一点的须要用到类,这取决于本人的判断。

须要留神的是,如果你要在其余我的项目或 notebook 中重用代码,请思考将其转换为模块、包或库,并遵循良好的软件开发实际(如单元测试)。

2. 试验环境的配置

记录依赖项是一个十分重要的问题,这决定了你将来是否能从新生成剖析,在计算机科学试验畛域,倡议一开始就应用诸如 conda 的 environment.yml 或 pip 的 requirements.txt 之类的工具明确地治理依赖项,以列出所有相干的依赖项(包含它们的软件版本)。始终在这些依赖项创立的环境中工作,以确保不增加未记录的依赖项。

在 notebook 中,你能够应用!pip install XXX.txt 一键装置依赖项,在工作区底部一键切换环境等等来实现试验配置,如果对 Linux 零碎比拟相熟,也能够应用右边栏的终端性能,间接实现试验环境的配置。

3. 版本控制的妙用

IDP 工作区头部右侧的历史版本,能够实现版本控制,因为 notebook 的交互个性使其很容易意外地更改或删除重要内容。此外,因为 notebook 中蕴含代码,代码不可避免会有 bug,因而确定 bug 引入与修复的工夫(及其可能影响的剖析)是科学计算中的一项要害能力。


图 4. IDP 版本治理

4. 工作流的应用

试验钻研稳固之后,能够思考构建 pipeline,记录初步探索性钻研的 notebook 很少能被宽泛推广,但一旦确定了某种稳固的分析方法,设计良好的 notebook 就能够通过 pipeline 推广到其余工作中,从而应用不同的输出数据和参数很容易地反复剖析。记住这一点,从一开始就设计你的 notebook,以容许未来从新调整用处。把要害变量申明(尤其是在进行新的剖析时会扭转的变量)放在 notebook 的顶部,而不是埋在两头的某个中央。间接在 notebook 中执行筹备步骤,如数据清理,并尽可能防止手动干涉。

通过构建 pipeline,也防止了别人在因为 ReadMe.txt 的浏览难度而影响复现后果。


图 5. IDP 可视化工作流治理

三、分享

分享是一项高瞻远瞩的主题,在书写 notebook 的时候思考这一点仿佛有些“鸡肋”,实际上分享、交换才是试验钻研走得更远的基石,以下几点须要留神。

1. 可读性

分享的内容肯定要具备可读性,特地是对于试验数据,须要具体又清晰的解释。现实状况下,你能够在 notebook 中共享整个数据集。咱们意识到许多数据集太大或太敏感,无奈以这种形式共享。在这些状况下,思考将大型和简单的数据集合成为多个档次,这样即便原始数据太大,无奈与已公布的 notebook 一起共享,或者受到隐衷或其余拜访问题的限度,也不会影响到可复现性。

2. 便捷性

当咱们实现了以上所有的点,咱们的 notebook 曾经书写得十分好看可用了,那么就须要思考一个问题,别人如何拜访、运行和摸索它们呢?团队合作是 IDP 的特色性能,反对 notebook 的一键分享,目前已实现数据可视化单元格的一键分享。
咱们也能够抉择将 notebook 存储到一个具备清晰 README 文件的公共代码库中来以便分享,如常见的 GitHub。


欢送体验解锁 IDP 的更多功能:立刻收费体验 IDP

正文完
 0