近几年,JupyterNotebook为数据科学家们提供了与数据有效交互的工具。用户可以运行代码、查看结果,然后重复数据之间的循环和迭代。使用JupyterNotebook进行研究成为了数据科学家们快速制作原型和探索分析的首选。
然而,数据科学的实际工作流程,不仅包括数据科学家们利用JupyterNotebook处理数据、制作模型,还包括其他成员之间大量的沟通协作,如:数据科学家和数据源端沟通数据的接入、和开发运维沟通服务的容器化和部署、和业务方沟通业务需求和数据服务效果等。因此,在线JupyterNotebook和低代码、拖拽式编程工具逐渐发展,用于优化数据模型开发和应用的全流程。
本文介绍了数据科学分析工具的发展进程,并对应了不同形态的工具的主要特征、应用场景,以期帮助数据科学家、业务专家等各领域的人员了解数据科学生态下的关键工具,进而优化工作流,加速数据驱动的研究及决策。
目录
JupyterNotebook交互式编程
JupyterNotebook是什么?
Jupyter并非理想的Notebook
在线JupyterNotebook
1.云原生
2.功能拓展
3.协作开放
低代码、拖拽式编程
低代码是什么?
为什么要用低代码?
1.可视化模型驱动数据研究
2.低代码拖拽改善协作方式
Canvas与Notebook的互补与转换
ModelWhale以人为径,助力协同创新
海量数据挖掘、数据密集型研究的应用范式
专业性强工程能力相对较弱的复合型分析研究者的强力支撑
结尾
JupyterNotebook交互式编程
JupyterNotebook是什么?
对于数据分析、数据挖掘、机器学习或是深度学习等数据科学领域的专业人员来说,除了需要具备一些数理统计知识外,还会需要通过代码来实践或验证理论想法,JupyterNotebook便成了数据科学家们最熟悉且常用的工具。通过它独特的交互式开发,适用于科研、教学等场景。
Jupyter即是Julia、Python和R的缩写组合,另如Notebook含义所示,它可以以笔记的形式记录和保存相关的代码和输出,并将结果以文档的形式与其他人共享。
JupyterNotebook(图源:网络)
JupyterNotebook主要有三大优点:文学编程、交互展示、易于调试。
1.文学编程
文学编程的思想强调人的思维逻辑的可读性,即在对阅读者友好的文本中插入代码块,让学习进程和探索进程变得可记录可回溯,不断累积知识,获得增量式进步。这种形式非常适合研究性、探索性工作。想象一下,当你需要做数据处理、分析建模、观察结果时:
如果是在终端运行程序,包含函数和类的脚本存在其他文档,可视化结果在不同窗口显示,此时还需要写一份囊括全部的说明文档记录分析思路、程序运行、结果呈现......整个研究过程杂乱无章,无法专注于研究本身。
如果是用JupyterNotebook进行分析,代码、可视化结果、说明文档都留存在同一页面中,整个分析过程和研究思路变得异常清晰。
2.交互展示
JupyterNotebook由Cell模块构成,Cell分为Code和Markdown,其中:
CodeCell可以独立编写、运行代码,并单独反馈结果,方便试错和验证结果,对于学习数据分析、入门数据科学或者编程语言的初学者来说,这种交互形式非常友好。
MarkdownCell可撰写文档,展示图片、表格、链接、公式等丰富的内容,可读性强、学习成本低,一个文档就可以涵盖课程章节的理论知识点+编程实战+可视化结果,将课程知识点完整表达,适合教学展示、课堂交互、数字化培训等。
JupyterNotebook本质是开源的Web应用,文档可以被轻松创建和共享。在团队协作时,代码、叙述文本、可视化结果结合可以清晰地表述出完整的分析过程,轻易地与他人分享研究思路、复现研究成果,团队之间迅速建立有效沟通,极大地提高协作研究效率。
3.易于调试
在数据研究中,如果需要调用深度学习模型来测试功能时,模型往往几百M甚至几个G,将模型全部加载到内存里需要耗费大量时间。当加载模型确定无误,只需调试调用模型预测数据时:
如果用IDE,每加一行代码或每改一个参数都会花费大量时间重新加载模型。
如果用JupyterNotebook,运行一遍代码以后变量占用的内存不会自动释放。模型加载的所有数据都在内存里,不覆盖变量就不需要重跑,因此只需将代码分段执行,灵活调整参数。
Jupyter并非理想的Notebook
基于数据科学的繁荣,尤其是探索性数据分析和开放科学的发展,JupyterNotebook作为一种交互式编程的范式实现了自己的价值,但随着数据科学领域近年的飞速变化,它面临着更现实的业务问题和技术挑战。
1.繁复、易出错的环境搭建与版本管理
研究之初和实际研究中,不论是对于编程新手还是技术人员,都难免经历一系列费时费力的环境搭建与版本管理过程。
环境配置问题
不同研究项目使用的Python的解释器版本不相同,各版本之间互不兼容且长期并行,但是却需要运行在同一个服务器环境中。而不同的Python解释器版本,对软件包、依赖库的管理也是个问题。因此,在本地使用JupyterNotebook时经常因为冲突问题导致系统出问题,安装环境或服务组件失败。
Python