构建端到端数据科学项目,从我的Data Scientist Ideal Profiles项目中学习(附链接)...

本文主要是介绍构建端到端数据科学项目,从我的Data Scientist 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 ;获授权;

END

合作请加QQ:365242293  

数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

这篇关于构建端到端数据科学项目,从我的Data Scientist Ideal Profiles项目中学习(附链接)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943286

相关文章

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库