全文共 2912字,预计学习时长 6分钟
35e1879d6a06fb012617464b7291cec7.png

图片来源:pexels

研究数据科学最赞的一部分在于能够从头到尾经历一整个项目过程,从数据清理到数据可视化,再到特征构建,最后训练出一个机器学习模型。由于市场对拥有出色技能的数据科学家需求很大,因此数据科学家们能享有高薪水的待遇。

在整个项目开展过程中,最主要的挑战是团体。

目前,数据科学家们都以小组形式工作,每个小组至少有几个成员。小组中的每一个成员都在处理相同的数据,共享彼此的工作成果。

8e00882f89dc9df6a36fd9f2f17db00e.png

数据科学的不同组成部分

遗憾的是,数据科学团队成员经常在各自的数据竖井中工作。他们创建代码库,运行自己的Jupyter Notebook,并将其可视化。成员们匆忙地把这些东西组合在一起,形成最终的报告。至少可以说,这是一个不太完美的协调。

但肯定有更好的选择。比如某种系统或工具,可以使数据和绘图的使用人员(数据科学家)高效地与团队其他成员一起工作,共享彼此的工作成果。这个系统还需要灵活变通、容易操作,并且保证数据科学的工作流程不中断。

下文将详细阐述该系统的具体应用。

Git如何为数据科学效力?

在传统的软件工程团队中,Git是用于编辑代码、组建项目、促进团队协作的常用工具。团队成员用的是他们自己的本地代码,但会使用同一个中央存储库来同步他们的进度和新开发。

该工具能确保每个人的项目进度都处于最新和同步的状态。这能让团队工作相互协调,不相互冲突,从而更高产。

3cab2f4450a6867cf65abcc109a2a10d.png

Git流程。团队成员在他们自己的“特性(Feature)”分支上工作,然后这些“特性(Feature)”分支都同步到“开发(Develop)”分支中。一旦开发分支被很好地完善,代码的生产版本就会与主版本同步。

数据科学有点棘手,因为数据科学中的很大部分都是研究和软件工程的结合:

· 数据本身很庞大,这会对共享存储存造成一定的挑战性。用Git-LFS会有所帮助,但是操作起来相当迟缓。

· 大多数情况下,代码的更改是小幅度的调整,但是可视化之后看起来会很明显。Git不会显示提交过程中图形所做的更改。

· 数据科学家通常使用Jupyter笔记本。在GitHub上可视化Jupyter Notebook的变化内容,看起来很糟糕。因为它显示了.ipynb文件中的差异,但没有显示Notebook中有用图形的实际代码。

综上所述,下面开始了解出色的的数据科学版本控制系统到底具备什么样的特征。

首先,它需要具备易操作性。开发人员和后端工程师可能都会非常熟练地使用git,但是数据科学更倾向于研究而非工程,所以系统应该能够十分流畅的处理代码冲突。

其次,我们还关注数据科学项目的实际变化。能看到代码更改是好的,但并不能说明全部问题。尤其是对使用Jupyter Notebook的团队来说,代码看起来太复杂,以至于无法直观看出图形或数据操作到底发生了哪些变化。

最后,中央数据存储或工作平台非常有帮助。如果没有中央存储,数据科学家就不得不下载和准备数据副本——这对于大型数据集来说效率太低。

了解了上述因素,现在可以对症下药,研究解决方案了。

将Git用于数据科学的平台

Saturn Cloud 平台(https://www.saturncloud.io/?source=gs-2)是为数据科学提供版本控制系统的一个很好选择。有了这个平台,多个数据科学家可以用同一个Jupyter Notebook工作,使用相同的数据集,在各自的机器上运行。

数据科学协作

首先,创建自己托管的Jupyter Notebook,任何有链接的人都可以进行访问。在注册帐户之后,下面的视频将向你展示如何进行操作。

e0b1c8261a1ba131fb74d90bc10f178b.gif

创建一个托管Jupyter Notebook

一旦安装好并开始运行,就可以启动Jupyter实验室。一打开它,就会看到已经设置的项目文件夹。

在这个实验中,将使用2018 Kaggle ML和DS调查数据集(https://www.kaggle.com/kaggle/kaggle-survey-2018)。该数据集包含了超过23,000个选择题的答案,这些答案针对的是向数据科学家和机器学习从业者提出的一系列关于薪酬的问题。

数据集中有趣的事实:

· “数据科学家”的薪酬最高,高于“数据工程师”和“研究科学家”的薪酬

· 科技公司支付的薪酬最高,其次是营销和金融公司

· 丰富的经验和高等教育可以增加薪资待遇

· 美国的薪酬最高,其次是瑞士和澳大利亚

Jupyter Notebook中完整的薪酬数据:https://www.saturncloud.io/yourpub/georgeseif94/data-science-jobs-/Data/ds_jobs.ipynb?source=gs-2

8046090c52a4c01e5845556f1f3b5874.png

数据科学家薪酬

开始团队协作之前,请跳到仪表板界面并单击协作者链接。在这里,能够通过Saturn Cloud用户名将协作者添加到项目中。

将用户添加到项目中并向协作者发送个人电子邮件,邀请他们参与该项目。一旦接受邀请,他们将会使用完全相同的设置、库和软件来创建自己的云实例(cloud instance)。

用户(数据科学家)可以即时访问自己版本的项目Jupyter Notebook和数据集。多个数据科学家可以在相同的环境中工作,使用相同的数据,有着相同起点的Notebook!

8104db0481dff2b3484d9dc5a4526089.gif

数据科学家协作

数据科学版本控制

现在可以进入Saturn Cloud版本控制系统。

打开Jupyter实验室,就会看到工作界面。在屏幕的左侧有一个项目文件夹。创建并保存在该项目文件夹中的AnyJupyter Notebook将自动启用版本控制。接下来把ds_jobs.ipynb 笔记本放到项目文件夹中,以便对其启用版本控制。

为了展示版本控制的工作原理,笔者将修改一些数据使其可视化。假设我们只对欧洲国家的数据感兴趣,就可以过滤掉其他数据。一旦可视化被更改,系统就会将这些更改推送到远程git存储库。下面这个45秒的视频展示了这一步是如何操作的。

528e02b5c8de4332bdb2090b7c3c290e.gif

数据科学版本控制

很好!

笔者可以对Jupyter Notebook做一些快速、简单的修改。所有使用该Notebook的项目协作者(数据科学家),无论什么时候登录,都能够看到我之前做的更改,并且可以特别选定这些更改,以便能够跟上最新的工作状态。

数据科学随需应变——倒带

该系统还有一个很棒的倒带功能。它的工作原理类似于git重置,基本上只是恢复更改,回到以前的状态。如果觉得犯了一个错误,想要倒回去看看,或者只是想看看之前的具体步骤,就可以这么操作。

假设想要退到可视化视图的界面,显示所有用于数据科学薪酬的区域。再次单击右下角的git按钮,接着单击倒带此存储库链接,然后会弹出一个滑块,可以选择要退回的时间段。一旦设置好,就能够看到之前的代码和图表!

8e62ffbbd026230c25e5a85684157262.gif

倒带Jupyter Notebook

现在,这就是控制了!

a1f4dd5a6a084941c5db5a0272fde88b.png

留言 点赞 关注

我们一起分享AI学习与发展的干货

编译组:陈曼芳、殷睿宣

相关链接:

https://towardsdatascience.com/automatic-version-control-for-data-scientists-fc4968bef8f

如需转载,请后台留言,遵守转载规范

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐