数据科学工程师常犯的错误Top10

数据科学家是“比任何软件工程师都更擅长统计,比任何统计学家都更擅长软件工程的人”。

作者:Norm Niemer
编译:ronghuaiyang

导读

无论是初学者还是有经验的工程师,都会或多或少的犯一些错误,这里总结了一些常犯的错误top10,大家可以参考一下。

数据科学工程师常犯的错误Top10

数据科学家是“比任何软件工程师都更擅长统计,比任何统计学家都更擅长软件工程的人”。许多数据科学家具有统计学背景,对软件工程几乎没有经验。我是一名高级数据科学家,在Stackoverflow的python编程上排名前1%,与许多(初级)数据科学家一起工作。以下是我经常看到的10个常见错误。

1. 不要引用共享代码中的数据

数据科学需要代码和数据。因此,为了让其他人能够复制你的结果,他们需要访问数据。看起来很简单,但是很多人忘记了与他们的代码共享数据。

数据科学工程师常犯的错误Top10

解决方案:使用d6tpipe与你的代码共享数据文件,或者上传到S3/web/谷歌驱动器等,或者保存到数据库中,以便接收方检索文件(但不要将它们添加到git中,请参阅下面的内容)。

2. 硬编码的无效路径

与错误1类似,如果你硬编码了其他人无法访问的路径,他们将无法运行你的代码,并且必须在许多地方手动更改路径。

数据科学工程师常犯的错误Top10

解决方案:使用相对路径、全局路径配置变量或d6tpipe使数据易于访问。

3. 代码和数据混在一起

既然数据科学代码需要数据,为什么不把它转储到同一个目录中呢?当你在做的时候,也要保存图片、报告和其他垃圾。哎呀,真乱!

数据科学工程师常犯的错误Top10

解决方案:将目录组织成数据、报告、代码等类别。参见Cookiecutter Data Science或d6tflow project templates,并使用1中提到的工具来存储和共享数据。

4. 把数据和源代码一起提交到Git上

大多数人对代码进行版本管理。为了共享数据,可能很容易将数据文件添加到版本控制中。对于非常小的文件,这是可以的,但是git没有针对数据进行优化,尤其是大型文件。

git add data.csv

解决方案:使用1中提到的工具来存储和共享数据。如果你真的想对数据进行版本控制,请参见d6tpipe、DVC和Git大文件存储。

5. 写方程而不是DAGs

关于数据的讨论已经够多了,让我们来谈谈实际的代码吧!由于在学习编写代码时首先要学习的是函数,所以数据科学代码主要是由一系列线性运行的函数组成的。这会导致一些问题,请参见机器学习代码可能不好的4个原因。

数据科学工程师常犯的错误Top10

解决方案:与其使用线性链接的函数,不如将数据科学代码编写为一组任务,并在这些任务之间建立依赖关系。使用d6tflow或airflow。

6. 用for循环

像函数一样,for循环是你学习编码时要学习的第一件事。容易理解,但是它们很慢,而且过于冗长,通常表示你不知道向量化的替代方案。

数据科学工程师常犯的错误Top10

解决方案:Numpy、scipy和panda为你认为可能需要循环的大部分内容提供了向量化的函数。

7. 不写单元测试

当数据、参数或用户输入发生变化时,你的代码可能会中断,有时你不会注意到。这可能导致错误的输出,如果有人根据你的输出做出决策,错误的数据将导致错误的决策!

解决方案:使用 assert语句检查数据质量。pandas有平等性测试,d6tstack可以检查数据输入,d6tjoin可以进行数据连接。数据检查的代码示例:

数据科学工程师常犯的错误Top10

8. 不写注释

我很理解,你急着做分析。你把事情拼凑起来,让你的客户或老板知道结果。一周后,他们回来说“你能修改xyz吗”或者“你能更新一下吗”。你看着你的代码,却不记得你为什么这么做。现在想象一下,如果有其他人来运行它。

数据科学工程师常犯的错误Top10

解决方案:额外花点时间,即使是在你交付分析之后,也要记录你所做的事情。你会感谢自己,别人也会更加感谢你!你会看起来很专业的!

9. 把数据存为csv或者pickle

再回来说数据,毕竟是数据科学。就像函数和for循环一样,csv和pickle文件也经常使用,但它们实际上并不好。csv不包含模式,所以每个人都必须重新解析数字和日期。pickle可以解决这个问题,但只能在python中工作,不能压缩。这两种格式都不适合存储大型数据集。

数据科学工程师常犯的错误Top10

解决方案:使用parquet或其他带有数据模式的二进制数据格式,最好是压缩数据的格式。d6tflow会自动任务的数据输出保存为parquet格式,这样你就不必处理它了。

10. 使用jupyter notebooks

让我们以一个有争议的结论来结束:jupyter notebooks和csv一样普遍。很多人使用它们。这并不能让他们变得更好。jupyter notebooks助长了上面提到的许多不良软件工程习惯,特别是:

  1. 你可能想将所有文件都存到一个目录中
  2. 你编写的代码运行自顶向下,而不是DAGs
  3. 你不需要模块化代码
  4. 难以调试
  5. 代码和输出混合在一个文件中
  6. 不能很好地控制版本

使用jupyter notebooks开始做起来很容易,但是扩展规模很困难。

英文原文:https://www.kdnuggets.com/2019/04/top-10-coding-mistakes-data-scientists.html

本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/77718.html 。

(1)
AI公园的头像AI公园专栏
上一篇 2019-10-31 15:04
下一篇 2019-11-05 00:14

相关文章

  • “大数据,用起来!” ——第四届中国数据分析行业峰会圆满落幕

    8月6日,第四届中国数据分析行业峰会在北京中国国际展览中心盛大开幕。本届峰会由中国商业联合会主办,中国商业联合会数据分析专业委员会承办。本届峰会吸引了近700人的参与,现场人气爆棚,掌声不断,反响相当热烈。数十家媒体对峰会进行了追踪报道。本次峰会在树洞论坛中同步视频直播。

    2016-08-10
    0
  • 张溪梦:数据分析如何创造商业价值?

    数据是一种连接它连接4个最基本的象限,时间,地点,任务,事件。 我们为什么要说数据会是下一次技术革命浪潮的最重要的指针? 大家来看一下,根据美国几家顶级研究机构的报告,(Gartner,IDC等等),在未来的5年,我们会有40亿人通过互联网产生各种数据,将成就一个4万亿美元的市场,将有两千五百万种软件接入,250亿台各种各样的设备接入各种数据系统,五百万亿G…

    2016-02-29
    0
  • 认为你的公司需要数据科学家?你可能错了

    当我在15年前开始从事数据工作时,我从未想过近年来数据科学家会如此备受追捧。如今,数据科学家被认为是全球最热门的职位之一,市场上对数据科学家的需求供不应求。

    2018-06-07
    0
  • 数据科学家如何玩台球? – 技术篇

    工作休息时间打打台球可以缓解一下神经,也可以更快的融入团队,但是开始水平太差,输多赢少,作为一个玩“数据”的,能不能通过数据科学优化一下这件事,至少多赢几局? 要赢一场球分为两个部分: 第一是要打的更准,总体来说,打的越准的人赢得概率更高,这个是硬实力; 第二是在准度一定的情况下,每一杆球,根据球形和对手,都要选择不同策略,策略包括击打对象,使用的力度,进攻…

    2016-04-29
    0
  • 如何选择一本优质的数据科学书籍

    选择一本合适的数据科学书至关重要,一本不适合的书会浪费你的时间以及精力。

    2017-07-18
    0
关注我们
关注我们
分享本页
返回顶部