当前位置: 首页 > news >正文

一文了解数据科学Notebook

编者按:

主要介绍什么是Notebook,Notebook在数据科学领域的应用的重要性与优势,以及数据科学家/算法团队在选择Notebook时需考虑哪些关键因素。同时,基于Notebook的筛选考量维度,对常见的Notebook进初步对比分析,为数据科学家、算法工程师提供参考。

       Notebook是一种基于网页的交互式计算方式,用户可在Notebook中进行开发、文档编写、运行代码、展示结果以及结果分享。与传统非交互式开发环境相比,Notebook最大的特点是允许逐单元格(cell)执行脚本。Notebook是数据科学领域至关重要的工具,数据科学家使用Notebook进行实验和探索任务。近年来随着大数据的发展,业务分析师等非技术人员也越来越多地开始使用Notebook。

01. Notebook的核心优势

       在传统的非交互式开发环境中,需要将开发人员编写完成的程序编译为可执行文件,然后完全运行该可执行文件,如出现错误,则需要返回编辑器键入新的代码,再重新运行全部代码。

        而在Notebook中,开发人员可以逐单元格(cell)编写和运行程序,出现错误时,仅需调整并运行出现错误的cell,正确运行的cell已保存在内存中,无需重复运行,极大提升了开发效率。Notebook也因此深受数据科学家和算法工程师的喜爱,被广泛应用于AI算法开发训练领域。以深度学习的实验为例,模型的训练通常需要几小时至十几小时,运用Notebook进行模型调试,进行微小更改后,无需对模型全部进行重新训练,可极大节省数据科学家和算法工程师的时间。

02. Notebook的基本构成

       最早的Notebook是1988年推出的Mathematica。早期的Notebook主要用于学术领域,随着近十年来Notebook逐渐由学术界进入到产业领域,越来越多的Notebook涌现在市场中,如开源的Jupyter、Apache Zeppelin,商业化托管的Colab、JetBrains Datalore、IDP Studio** 等,支持混合多语言的Polynote等。

       尽管Notebook的种类众多,其最核心的构成均包含两大组件:

  • 一是前端客户端,由有序的输入/输出单元格列表构成,用户可以在这些单元格中输入代码、文本等 。
  • 另一组件是后端内核(Kernel),其可配置在本地或云端。代码由前端传递给Kernel,Kernel运行代码后将结果返还给用户。Kernel决定了Notebook的计算性能,IDP Studio 采用Rust语言实现重写Kernel,Notebook启动速度和资源配置速度提升了一个数量级。

       (** 本文中仅使用IDP Studio概括性指代IDP Studio中notebook交互式编程环境,IDP Studio中其他模型管理、模型发布等插件功能不在本文讨论范围)

03. 如何选择适合的Notebook

       不同的Notebook各具特点,数据科学家和算法工程师在实际使用时需根据自身核心诉求选择最合适的Notebook工具。我们基于对大量数据科学家的访谈,总结出数据科学家在Notebook的选择中关心的四大核心问题,供广大算法开发和数据挖掘人员作为工具筛选标准的参考。

1) 基本功能的完备和易用性

       安装部署:对于新手数据科学家来说,商业化托管的Notebook(如IDP Studio, Colab, JetBrians Datalore)采用SaaS模式,开箱即用,更加易于安装上手。开源Notebook需使用者自行安装,通常本地安装相对容易,但若安装、运行到远程服务器上,则具有较大挑战。

       版本管理:无论算法模型,还是算法接口,都会需要不断的更新和优化,版本的管理至关重要。不同Notebook版本管理功能的完备和易用性具有差异,如Jupyter等开源产品支持Git进行版本管理;IDP Studio等在支持Git的同时具有内置的版本管理功能,自动进行历史版本的保存,而Colab暂不支持版本管理功能。

       语言支持:机器学习和数据科学领域常用的语言有Python、SQL、R等,Python遥遥领先,根据Kaggle2021年对逾25,000名数据科学家的调研,84%采用Python。目前常见的Notebook均对Python有较好的支持,但对于第二大和第三大常用语言SQL和R的支持深度却不尽相同。因此,数据科学家在选择工具时,需考虑Notebook是否天然支持自己常用的语言。如Jupyter可较好支持Python、Julia和R语言,但在支持SQL时需通过安装插件、自行配置;IDP Studio则天然深度支持Python和SQL, 对其他非常用语言目前还尚未支持;若需要对Scala及其他多语言均有较好支持,则可以考虑Polynote。


2) 效率提升

       在基本功能的基础上,数据科学家关注Notebook是否可以帮助其减少非核心工作,提升开发效率。

       代码辅助:代码辅助可以极大程度上帮助开发者节约时间,提升效率。主要的代码辅助包括代码补全、错误提示、快速修复、定义跳转等。开源工具具有丰富的生态体系,普遍需要依托第三方插件实现代码辅助功能。商业托管类产品内置代码辅助功能,但功能侧重点和性能方面具有,其中代码补全是普遍的功能。IDP Studio在代码辅助功能上最为全面,速度和性能方面相对体验更优,但对于部分第三方库的函数的补全还有待完善。

       数据源的接入:数据是数据科学家日常工作的基石,通常数据源分散在各地,对数据的接入带来极大挑战。是否可以便捷接入数据至关重要,数据科学家需根据自身数据源的分布,选择合适的Notebook。目前,Jupyter、Zeppelin开源软件需数据科学家自行配置接入;Colab仅支持Google Drive中的数据接入;IDP Studio已对主流数据源进行了集成对接,使用者可一键式接入数据源。

       环境管理:先对成熟的数据科学家和算法团队对便捷的环境设置和环境管理具有更要的要求,他们希望能够快速配置环境,同时希望能够构建并管理一个可以在个人和团队间进行共享的一致性环境。不同Notebook对于环境配置和复用的支持力度不同,综合来看,天然支持团队协作的Datalore等在环境管理方面易用性稍高。使用者可根据自身对环境管理的需求,进行选择。


3) 加速协作

       跨团队的协作分析:算法和业务分析的耦合日益深入,算法开发人员希望能够将结果以可交互的可视化报告的形式分享给业务人员,实现算法团队和业务团队的高效协同分析。对于跨团队协作有较强需求的数据科学家,可更多关注今年来新推出的、在功能定位上突出团队协作的Datalore、IDP Studio等Notebook。
       协作编程:除跨团队协作外,Notebook的共享、实时协作编辑和评论,也成为数据科学家们日渐突出的需求。目前看来,海外数据科学家对该功能的需求更加强烈。目前常见Notebook均支持一定程度的协作编程,但在实时性和易用性上存在差异。


4) 成本

       成本通常是影响数据科学家和算法工程师选择的重要考量因素,但在Notebook的选择领域,我们认为该因素的重要性相对低于性能和易用性,因为即时商业化的Notebook,对于个人使用者通常提供免费的基础版本。

       我们很高兴看到Notebook愈加受欢迎,并逐渐成为算法团队和业务团队的沟通桥梁。Notebook在产业界应用也进一步深入,为数据科学家们提供了良好的算法开发、试验和探索等的支持。

更多技术内容,欢迎关注:Baihai IDP
 

相关文章:

一文了解数据科学Notebook

编者按: 主要介绍什么是Notebook,Notebook在数据科学领域的应用的重要性与优势,以及数据科学家/算法团队在选择Notebook时需考虑哪些关键因素。同时,基于Notebook的筛选考量维度,对常见的Notebook进初步对比分析&#…...

2020年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:数组指定部分逆序重放 将一个数组中的前k项按逆序重新存放。例如,将数组8,6,5,4,1前3项逆序重放得到5,6,8,4,1。 时间限制:1000 内存限制:65536 输入 输入为两行: 第一行两个整数,以空格分隔,分别为数组元素的个数n(1 < n…...

关于ChatGPT的个人的一些观点

问题 1 Q: 你认为ChatGPT是一款非常有用的工具吗&#xff1f; A: 我认为ChatGPT是一款非常有用的工具。它可以帮助人们解决各种问题&#xff0c;包括技术问题、心理问题、生活问题等等。同时&#xff0c;ChatGPT也可以成为人们分享想法和交流的平台&#xff0c;增强人与人之间…...

Solidity 小白教程:13. 继承

Solidity 小白教程&#xff1a;13. 继承 这一讲&#xff0c;我们介绍solidity中的继承&#xff08;inheritance&#xff09;&#xff0c;包括简单继承&#xff0c;多重继承&#xff0c;以及修饰器&#xff08;modifier&#xff09;和构造函数&#xff08;constructor&#xff…...

队列(Queue)的顶级理解

目录 1.队列(Queue) 的概念 2.单链表模拟实现队列 2.1创建队列 2.2入队列 2.3判断是否为空 2.4出队列 2.5获取队头元素 2.6完整代码&#xff1a; 2.7双向链表模拟实现队列代码 3.数组模拟实现队列代码 3.1创建队列 3.2判断是否为满 3.3检查是否为空 3.4插入元素 3…...

选择 Guava EventBus 还是 Spring Framework ApplicationEvent

文章首发地址 Spring Framework ApplicationEvent Spring Framework 的 ApplicationEvent 是 Spring 框架提供的一种事件机制&#xff0c;用于实现发布和订阅事件的功能。它基于观察者模式&#xff0c;允许应用程序内的组件之间进行松耦合的通信。 下面是关于 Spring Frame…...

Linux下go环境安装、环境配置并执行第一个go程序

一、安装 1.Golang对Linux的内核版本要求 GO对Linux内核版本最低要求是 2.6.23&#xff0c;对应要求操作系统版本是&#xff1a; RHEL 6.0CentOS 6.0即&#xff0c;不支持 (RHEL 和 CentOS) 的 (4.x or 5.x)。2.下载golang的代码版本 Golang的官网下载地址&#xff1a;https:…...

自定义Dynamics 365实施和发布业务解决方案 - 5. 高级自定义

本章的目的是探索可应用于Dynamics365的高级自定义。这包括使用插件和自定义工作流活动实现复杂的业务流程。此外,您还将了解如何使用SPKL任务运行器来部署这些,这在第2章中进行了讨论。最后,您还将看到使用Web API查询数据。 准备工作 若要从高级自定义开始,必须首先创建…...

软件测试下的AI之路(2)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…...

前端面试的话术集锦第 7 篇:高频考点(浏览器渲染原理 安全防范)

这是记录前端面试的话术集锦第七篇博文——高频考点(浏览器渲染原理 & 安全防范),我会不断更新该博文。❗❗❗ 1. 浏览器渲染原理 注意:该章节都是⼀个⾯试题。 1.1 渲染过程 1.1.1 浏览器接收到HTML⽂件并转换为DOM树 当我们打开⼀个⽹⻚时,浏览器都会去请求对应的…...

打印剪刀手“耶”(V形)

用给定单个字符和首行宽度(奇数)&#xff0c; 打印首行宽度为给定奇数“V”字形状)。 (本笔记适合Py 推崇的插件字符串格式化的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全…...

eNSP基本命令大全

单交换机VLAN划分 进入系统视图 system 进入系统视图 system-view 退到系统视图 quit 删除vlan 20 undo vlan 20 交换机命名 sysname 显示vlan disp vlan 创建vlan(也可进入vlan 20) vlan 20 把端口1-5放入VLAN 20 中 port e1/0/1 to e1/0/5 显示vlan里的端口20 disp v…...

java并发编程 ConcurrentLinkedQueue详解

文章目录 1 ConcurrentLinkedQueue是什么2 核心属性详解3 核心方法详解3.1 add(E e)3.2 offer(E e)3.3 poll()3.4 size()3.5 并发情况分析 4 总结 1 ConcurrentLinkedQueue是什么 ConcurrentLinkedQueue是一个无界的并发队列&#xff0c;和LinkedBlockingQueue相比&#xff0c…...

msvcp110.dll是什么意思与msvcp110.dll丢失的解决方法

电脑突然提示msvcp110.dll丢失&#xff0c;无法执行此代码。导致软件无法打开运行&#xff0c;这个怎么办呢&#xff1f;我在网上找了一天的资料&#xff0c;终于把这个问题彻底处理好&#xff0c;也弄清楚了msvcp110.dll丢失的原因及msvcp110.dll丢失修复方法&#xff1f;现在…...

八)Stable Diffussion使用教程:MultiDiffusion

multidiffusion,它可以实现图片从 512 像素到 2K、4K 甚至 6K 画质的飞跃。 插件安装步骤: 1)选择扩展 2)选择可用,点击加载按钮 3)找到multidiffusion,点击右侧安装按钮 安装插件后可以在文生图和图生图的出图参数中看到多了两个区域,其实这个插件是由两部分组成的,…...

java通过钉钉机器人发消息

钉钉自定义机器人使用 加签的配置 发送消息 注意&#xff1a;内部群才可以创建自定义机器人 钉钉网址-自定义机器人创建 1、获得的钉钉配置信息workhook和secret //url路径private String URL "https://oapi.dingtalk.com/robot/send?access_token08ebaa04f98f7faacb…...

Git工具本地管理总结

一、本地仓库创建 https://blog.csdn.net/heshuangzong/article/details/125882372 https://blog.csdn.net/l7077/article/details/130270914 在本地创建/home/test目录,作为本地仓库目录。 $ mkdir /home/test $ cd /home/test 初始化本地的git 仓库。 $ git init Initial…...

单片机C语言实例:13、看门狗

一、看门狗溢出测试 程序实例1&#xff1a; #include<reg52.h>sfr WDTRST 0xA6; sbit key P3^1; /*------------------------------------------------喂狗 ------------------------------------------------*/ void Rst_Watchdog( void ) {WDTRST 0x1E…...

时序分解 | MATLAB实现基于SSA奇异谱分析的信号分解分量可视化

时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 奇异谱分解奇异谱分析SSA 可直接替换txt数据运行 Matlab 1.包含3D分解效果图 频谱图等…...

mysql报错:Duplicate entry ‘...‘ for key ‘field‘

错误信息 "Duplicate entry ... for key field" 表示在数据库表中&#xff0c;你正在尝试插入一条数据的number字段的值已经存在。这通常是由于你设置了field字段为唯一键&#xff08;UNIQUE KEY&#xff09;&#xff0c;而你又尝试插入一个已存在的值。 解决这个问…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...