APP下载

从 Ideal Profiles专案中学习构建端到端资料科学专案(附连结)

消息来源:baojiabao.com 作者: 发布时间:2026-05-17

报价宝综合消息从 Ideal Profiles专案中学习构建端到端资料科学专案(附连结)

翻译:张睿毅

校对:吴金笛

本文约1500字,建议阅读5分钟。

本文为你介绍了构建资料科学专案中重要的思维能力及训练建议。

Joseph Barrientos 拍照于 Unsplash

(连结:https://unsplash.com/photos/Ji_G7Bu1MoM?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText )

人们常说,资料科学家的主要工作不是实际的分析和建模,而是资料的整理和清理部分。因此,涉及这些阶段的全周期数据科学专案将更有价值,因为它们证明了作者独立处理真实资料的能力,而不是使用给定的干净资料集。

完全理解端到端资料科学专案的价值,我一直想建立一个,但直到现在还不能建立。

我最近完成了我的Ideal Profiles专案(连结:https://towardsdatascience.com/what-does-an-ideal-data-scientists-profile-look-like-7d7bd78ff7ab )。因为这是一个涉及许多运动部件的重大专案,所以我想记录过程和经验教训,这是一个进一步的学习机会(受到威廉·科赫森(连结:https://medium.com/@williamkoehrsen )关于资料科学写作价值的伟大文章的启发)。

各阶段

我认为,全周期数据科学专案应包括以下几个阶段:

Kaggle专案上工作的最大的争论是它只专注于第二阶段。因此,在这个专案中,我将确保涵盖所有三个阶段。

在第一阶段,我做了网络抓取来获取资料,由于资料是脏的,所以我不得不整理资料进行分析。然后我做了各种资料视觉化,并在第二阶段进行了分析。最后,我写了一些文章来发表结果并将这个专案投入生产。

当然,我可以通过包含一个机器学习元件使这个专案更加完整,例如,使用自然语言处理根据内容对工作岗位进行分类,但这将显著延迟专案完成时间,这将使我们进入下一个阶段:

迭代思维

对于一个给定的专案,可能有无限多的事情要处理,但实际上,我们只有有限的时间。为了协调这两个竞争因素,我们需要有纪律。

对我来说,“迭代思维”确实有帮助 —— 看,罗马不是一天建成的,所以让我们先构造一些有用的东西,然后将其交付,然后我们总是可以回来改进更多的特征。另一方面,这也意味着我们需要能够处理“不完美”,而不是专注于细节。

考虑到这一理念,我能够延迟一些非常诱人的特征,并将它们放在专案文件的待办事项部分(连结:https://github.com/georgeliu1998/ideal_profiles#to-dos )。其中之一是使用更大的来自美国而不是加拿大的网站上的资料集。

模组化

鉴于专案的端到端的特性,我们有很多不同方面的工作:网络抓取,资料预处理,绘图……如果我们把所有的程式码在一个Jupyter Notebook,它会过于大且复杂而不能处理。于是我决定使用Python指令码和一个中心Jupyter Notebook解决这个问题。

我将支援函式分为三大类,并将它们封装在三个相应的指令码中:

scrape_data.py-包含Web抓取所需的函式,如“get_soup()”“get_urls()”process_text.py-包含文字处理和清除函式,如“tokenize_text()”“check_freq()”helper.py-包含档案输入输出和绘图函式,例如“plot_skill()”

这样,我就可以保持一个超轻且有组织的中心Notebook。然后根据需要从Notebook中汇入和呼叫函式,如下所示:

from scrape_data import *

from process_text import *

from helper import *

可复制性

由于我在网上发现的许多抓取指令码都不起作用,我决定确保我的专案是可复制的。除了可靠的程式码之外,一个健壮的README档案和一个完整的环境依赖档案也是解决方案的一部分。

readme.md-我努力确保捕获所有相关细节,特别是如何设定环境和如何使用指令码。env_Ideal_profiles.yaml-通过将所有依赖项冻结到此档案中,我确保使用者可以完全重新建立我使用的同一Anaconda python环境。此处提供更多资讯(连结:https://conda.io/docs/user-guide/tasks/manage-environments.html )。程式码最优练习

良好的编码实践很重要!特别是,我发现以下实践在编写更大更复杂的专案时非常有用:

具有有意义的描述性变数/函式名提供详细和结构化的文件字串(连结:https://stackoverflow.com/questions/3898572/what-is-the-standard-python-docstring-format)确保使用python“try except”块处理异常

当你的专案是一个30行的Jupyter Notebook时,这些事情可能看起来微不足道,但是当你处理一个需要数百行程式码的主要专案时,这些事情可能真的很关键!

厉害了Matplotlib

我过去只对基本的Matplotlib技巧感到舒服。然而,对于这个专案,我不仅需要将几个图组合成一个,而且还必须进行详细的自定义,例如旋转轴标记标签……在这一点上,基本的Matplotlib技能将不再足够。

事实证明这是一个学习Matplotlib的好机会。一旦我知道它能做什么,我发现它不可能回头,仅仅是因为matplotlib真的很强大!它的面向物件方法允许您修改几乎所有内容…请检视以下教程以了解:

Matplotlib教程:Python绘图(连结:https://www.datacamp.com/community/tutorials/matplotlib-tutorial-python )高效利用Matplotlib(连结:http://pbpython.com/effective-matplotlib.html )使用Matplotlib绘制Python(指南)(连结:https://realpython.com/blog/python/python-matplotlib-guide/ )谢谢你的阅读!

原文连结:

https://towardsdatascience.com/building-an-end-to-end-data-science-project-28e853c0cae3

编辑:文婧

译者简介

张睿毅,北京邮电大学大二物联网在读。我是一个爱自由的人。在邮电大学读第一年书我就四处跑去蹭课,折腾整一年惊觉,与其在当下焦虑,不如在前辈中沉淀。于是在大二以来,坚持读书,不敢稍歇。资本主义国家的科学观不断重新整理我的认知框架,同时因为出国考试很早出分,也更早地感受到自己才是那个一直被束缚著的人。太多真英雄在社会上各自闪耀着光芒。这才开始,立志终身向遇到的每一个人学习。做一个纯粹的计算机科学里面的小学生。

— 完 —

关注清华-青岛资料科学研究院官方微信公众平台“THU资料派”及姊妹号“资料派THU”获取更多讲座福利及优质内容。

2020-01-09 12:52:00

相关文章