独家 | 构建端到端数据科学项目,从个人Data Scientist Ideal Profiles项目中学习(附连接)...

640?wx_fmt=png

翻译:张睿毅html

校对:吴金笛
python

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

本文为你介绍了构建数据科学项目中重要的思惟能力及训练建议。github


640?wx_fmt=png

Joseph Barrientos 拍照于 Unsplashapi

(连接: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 )关于数据科学写做价值的伟大文章的启发)。ide

各阶段


我认为,全周期数据科学项目应包括如下几个阶段:模块化

 

640?wx_fmt=png


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技能将再也不足够。

 

640?wx_fmt=png

事实证实这是一个学习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 


编辑:文婧

译者简介


640?wx_fmt=png

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

翻译组招募信息

工做内容:将选取好的外文前沿文章准确地翻译成流畅的中文。若是你是数据科学/统计学/计算机专业的留学生,或在海外从事相关工做,或对本身外语水平有信心的朋友,数据派翻译组欢迎大家加入!

你能获得:提升对于数据科学前沿的认知,提升对外文新闻来源渠道的认知,海外的朋友能够和国内技术应用发展保持联系,数据派团队产学研的背景为志愿者带来好的发展机遇。

其余福利:和来自于名企的数据科学工做者,北大清华以及海外等名校学生共同合做、交流。


点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明做者和出处(转自:数据派THU ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待受权公众号名称及ID】至联系邮箱,申请白名单受权并按要求编辑。

发布后请将连接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,咱们将依法追究其法律责任。


640?wx_fmt=png

640?wx_fmt=jpeg

点击“阅读原文”拥抱组织