2020-12-28 11:10:09 阅读(148)
无论是初学者还是有经验的工程师,都会或多或少犯一些错误,这里总结了一些常见的错误,你可以参考。数据科学家是“比任何软件工程师都更擅长统计,比任何统计学家都更擅长软件工程”的人。许多数据科学家都有统计背景,对软件工程几乎没有经验。我是一名高级数据科学家,在stackoverflow的python编程中排名前1%,与许多(初级)数据科学家一起工作。以下是我经常看到的10个常见错误。1.不要引用共享代码中需要代码和数据的数据数据科学。因此,他们需要访问数据,才能让别人复制你的结果。它看起来很简单,但很多人忘记了与他们的代码共享数据。解决方案:使用d6tpipe与您的代码共享数据文件,或上传到S3/web/谷歌驱动器等,或将其保存到数据库中,以便接收方检索文件(但不要将其添加到git中,请参阅以下内容)。2.硬编码的无效路径类似于错误1。如果您硬编码其他人无法访问的路径,它们将无法操作您的代码,并且必须在许多地方手动更改路径。解决方案:使用相对路径、全局路径配置变量或d6tpipe使数据易于访问。3.代码和数据混合在一起。既然数据科学代码需要数据,为什么不把它转移到同一个目录呢?在这样做的时候,还要保存图片、报告和其它垃圾。哦,真乱!解决方案:将目录组织成数据、报告、代码等类别。参见cookiecuterdatascience或d6tflowprojectemplates,并使用1中提到的工具存储和共享数据。4.将数据和源代码一起提交给Git,大多数人管理代码的版本。将数据文件添加到版本控制中,以便共享数据。对于非常小的文件,这是可以的,但git并没有优化数据,尤其是大型文件。gitadddata.csv解决方案:使用1中提到的工具存储和共享数据。如果您真的想控制版本的数据,请参见d6tpipee、存储DVC和Git大文件。5.有足够的讨论写方程而不是DAGS的数据。让我们谈谈实际代码!数据科学代码主要由一系列线性运行函数组成,因为在学习编写代码时,首先要学习的是函数。这将导致一些问题。请参考机器学习代码可能不好的四个原因。解决方案:将数据科学代码编写成一组任务,并在这些任务之间建立依赖关系,而不是使用线性链接函数。使用d6tflow或airflow。6.像函数一样使用for循环,for循环是你在学习编码时需要学习的第一件事。它们很容易理解,但它们又慢又冗长,通常意味着你不知道向量化的替代方案。解决方案:Numpy、scipy和panda为您认为可能需要循环的大多数内容提供了向量化函数。当数据、参数或用户输入发生变化时,您的代码可能会中断,有时您不会注意到。这可能会导致错误的输出。如果有人根据你的输出做出决定,错误的数据会导致错误的决定!解决方案:使用assert语句检查数据质量。pandas有平等测试,d6tstack可以检查数据输入,d6tjoin可以连接数据。数据检查的代码示例:8.我理解不写注释。你急于做分析。你把事情拼凑起来,让你的客户或老板知道结果。一周后,他们回来说“你能修改xyz吗?”或者“你能更新吗?”。你看着你的代码,却不记得你为什么这么做了。现在想象一下,如果有人来操作它。解决方案:额外的时间,即使在你交付分析后,也要记录你所做的事情。你会感谢自己,别人会更感谢你!你会看起来很专业!9.将数据存储为csv或pickle,然后返回数据,毕竟是数据科学。就像函数和for循环一样,csv和pickle文件也经常使用,但它们实际上并不好。csv不包括模式,所以每个人都必须重新分析数字和日期。pickle可以解决这个问题,但只能在python中工作,不能压缩。这两种格式都不适合存储大型数据集。解决方案:使用parquet或其他带有数据模式的二进制数据格式,最好是压缩数据格式。d6tflow将自动任务的数据输出保存为parquet格式,因此您不必处理它。10.使用jupyternotebooks让我们以一个有争议的结论结束:jupyternotebooks和csv一样常见。许多人使用它们。这并不能让他们变得更好。jupyternotebooks助长了上述许多不良软件工程习惯,特别是:您可能希望将所有文件存储在目录中,您编写的代码自上而下运行,而不是DAGS。您不需要模块化代码来调试代码和输出。您不能很好地控制文件中的版本。使用jupyternotebooks很容易开始,但很难扩展规模。
以上就是关于数据科学工程师容易犯的10个错误的相关介绍,更多数据科学工程师容易犯的10个错误相关内容可以咨询我们或者浏览页面上的推荐内容。我们将让你对数据科学工程师容易犯的10个错误有更深的了解和认识。
推荐阅读
最新文章
猜你喜欢以下内容:
一 客户顾问-张三 一