当前位置: 首页 > 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;而你又尝试插入一个已存在的值。 解决这个问…...

什么是回流跟重绘?从中怎么优化网页性能?

目录 一、什么是回流&#xff1f; 二、什么是重绘&#xff1f; 三、如何触发回流和重绘&#xff1f;会带来什么问题&#xff1f; 四、如何减少回流和重绘的影响&#xff1f; 在前端开发中&#xff0c;回流&#xff08;reflow&#xff09;和重绘&#xff08;repaint&#xf…...

Redis事务机制

Redis 是一款开源的、内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。在日常的使用中&#xff0c;我们经常会遇到需要一次执行多个命令&#xff0c;并且这些命令要么全部成功&#xff0c;要么全部失败的场景。这就需要用到 Redis 的事务机制。 Redi…...

[EROOR] SpringMVC之500 回调函数报错

首先&#xff0c;检查一下idea里面的报错的原因&#xff0c;我的是jdk的版本的问题。所以更换一下就可以了。...

[Linux]文件系统

[Linux]文件系统 文件系统是操作系统的一部分&#xff0c;负责组织、存储和管理存储在外部设备上的文件和目录&#xff0c;也就是操作系统管理外设中的文件的策略。本文讲解的是Ext2文件系统。Linux操作系统使用的就是Ext系列的文件系统。 文章目录 [Linux]文件系统了解磁盘结构…...

常见面试题记录

记录下java的常见面试题 文章目录 记录如下 记录如下 记录如下 hashmap原理lock原理synchronized锁优化过程线程状态以及创建方式线程池&#xff08;执行过程&#xff0c;参数&#xff0c;淘汰策略&#xff09;jvm&#xff08;gc优化和OOM&#xff09;volatile&#xff08;可见…...

Android 系统源码目录frameworks/base/packages和packages/apps下的APP区别

概要 在 Android Open Source Project (AOSP) 源代码中&#xff0c;frameworks/base/packages 和 packages/apps 目录都包含 Android 系统中的应用程序&#xff0c;但它们在性质和用途上有一些区别&#xff1a; 1&#xff0c;frameworks/base/packages frameworks/base 目录…...

2023年数维杯数学建模A题河流-地下水系统水体污染研求解全过程文档及程序

2023年数维杯数学建模 A题 河流-地下水系统水体污染研 原题再现&#xff1a; 河流对地下水有着直接地影响&#xff0c;当河流补给地下水时&#xff0c;河流一旦被污染&#xff0c;容易导致地下水以及紧依河流分布的傍河水源地将受到不同程度的污染&#xff0c;这将严重影响工…...

Java测试(10)--- selenium

1.定位一组元素 &#xff08;1&#xff09;如何打开本地的HTML页面 拼成一个URL &#xff1a;file: /// 文件的绝对路径 import os os.path.abspath(文件的绝对路径&#xff09; &#xff08;2&#xff09;先定位出同一类元素&#xff08;tag name&#xff0c;name&…...

【文末送书】Matlab科学计算

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…...

ElementUI浅尝辄止30:PageHeader 页头

如果页面的路径比较简单&#xff0c;推荐使用页头组件而非面包屑组件。 1.如何使用&#xff1f; <el-page-header back"goBack" content"详情页面"> </el-page-header><script>export default {methods: {goBack() {console.log(go bac…...

怎么用千牛做网站在线客服/上海app开发公司

Python的虚拟环境可以使一个Python程序拥有独立的库library和解释器interpreter&#xff0c;而不用与其他Python程序共享统一个library和interpreter。虚拟环境的好处是避免了不同Python程序间的互相影响&#xff08;共同使用global library 和 interpreter&#xff09;&#x…...

做网站蓝色和什么颜色搭配好看/如何建站

文章目录前言一、导入相关库二、加载Cora数据集三、定义GraphSAGE网络3.1 定义GraphSAGE层3.1.1 定义权重 W3.1.2 特征映射3.1.3 节点特征更新3.1.4 SAGEConv层3.2 定义GraphSAGE网络四、定义模型五、模型训练六、模型验证七、结果完整代码前言 大家好&#xff0c;我是阿光。 …...

龙岩做网站开发大概价格/广告联盟app

代码升级确实很麻烦&#xff0c;不是一般的麻烦。 因为需要整理出一套配合我自己写的D3D绘图引擎&#xff0c;所以我选择了以前的IGE作为项目的开端。原因很简单。因为现在的那些源代码是无法完成这个工作的。 而且如果有了一套完善的基础版本&#xff0c;那么以后无论想改成啥…...

长春做网站的/南宁seo外包服务

一、Nginx常见面试题Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?Nginx常见的优化手段有哪些?502错误可能原因有哪些?二、面试官心理分析主要是看应聘人员的对NGINX的基本原理是否熟悉&#xff0c;因为大多数运维人员多多少少都懂点NGINX&#xff0c;但是真正其明白…...

建设部的网站/seo站长优化工具

下面是定义初始化 #初始化输入的张量 - torch.empty是返回一个包含未初始化数据的张量self.input torch.empty(size(self.opt.batchsize, 3, self.opt.isize, self.opt.isize), dtypetorch.float32, deviceself.device)self.label torch.empty(size(self.opt.batchsize,), dt…...

电子商务知名网站/网站优化推广方案

可能大家在使用DataGrid编辑数据的时候会觉得要点击最后的编辑列的按钮来修改数据不是很方便&#xff0c;在今天的例子中给出一种比较方便的操作方法&#xff1a;要修改数据点击这一行&#xff0d;》鼠标放在哪个文本框就会选中哪个文本框的内容&#xff0c;直接可以进行修改&a…...