加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

我,一个数据科学家的三大弱点

发布时间:2018-11-19 18:00:22 所属栏目:教程 来源:大数据文摘
导读:大数据文摘出品 编译:李雷、韦梦夙、胡笳 如果说现代工作面试教会了我们什么,那就是你最大的弱点是什么?的正确回答是我工作太努力了。 显然,真的要去谈论我们的弱点是很荒唐可笑的,我们为什么要提我们做不到的事情?虽然工作申请和LinkedIn不鼓励我们披
副标题[/!--empirenews.page--]

我,一个数据科学家的三大弱点

大数据文摘出品

编译:李雷、韦梦夙、胡笳

如果说现代工作面试教会了我们什么,那就是“你最大的弱点是什么?”的正确回答是“我工作太努力了。”

显然,真的要去谈论我们的弱点是很荒唐可笑的,我们为什么要提我们做不到的事情?虽然工作申请和LinkedIn不鼓励我们披露我们的弱点,但如果我们从不承认我们的缺点,那么我们就无法采取措施来解决它们。

要想在奋斗中变得更好其实很简单:

  • 确定你目前的问题:找出缺点
  • 弄清楚你要的目标:制定实现的计划
  • 执行计划:每次一小步

但我们很少执行第一步:特别是在技术领域,我们总是用已知的技能埋头苦干,而不是学习那些可以使工作更轻松或者获得新机会的新技能。自我反思 - 客观地评估自己 - 看起来好像是一个不相干的概念,但是如果能退一步,弄清楚我们怎样能把事情做得更好或更有效,这对于在任何领域取得进步都至关重要。

考虑到这一点,我试图客观地审视自己,并确定3个努力方向以使我成为更好的数据科学家:

  • 软件工程
  • 扩展数据科学
  • 深度学习

我写这篇文章的目的有三。

  • 首先,我真的想变得更好,所以我需要承认我的弱点。我的目的是通过概括我的不足以及如何改正它们,让自己有动力完成我的学习目标。
  • 其次,我希望鼓励其他人思考他们可能不了解的技能以及他们怎样获得这些技能。你不必像我这样写篇文章来公开哪些东西你不会,但是如果你可以找到一项新技能来学习,那么花点时间考虑这个问题是值得的。
  • 最后,我想告诉你,要成为一名成功的数据科学家并不需要什么都知道。数据科学/机器学习的课题几乎是无穷无尽的,但实际上你能了解的有限。不管那些华而不实的求职简历是怎么写的,你不需要完全了解每个算法(或有5到10年的工作经验)才能成为一名职业数据科学家。我经常从初学者那里听到他们被自己所认为必学的课题数量压得不堪重负,而我的建议总是一样的:从基础开始,并且明白你不需要知道所有的一切!

我,一个数据科学家的三大弱点

对于每个弱点,我已经做了概述以及我目前正在做的改进。确定一个人的弱项很重要,但制定如改进的计划也很重要。学习一项新技能需要时间,但计划一系列小而具体的步骤会大大增加你成功的机会。

软件工程

我最初的数据科学实践经验是在学术环境中获得的,之后我一直试图避免重拾某些以学术方式来研究数据科学的坏习惯。其中包括编写仅运行一次的代码,缺乏文档,编写没有统一风格且难以阅读的代码以及硬编码某些特定值。所有这些做法都反映了一个基本目标:开发一个数据科学解决方案,该解决方案只针对特定数据集做一次性工作,以便撰写论文。

其中一个典型的例子是我们的一个项目使用建筑能源数据,最初每隔15分钟采集一次,但当我们以5分钟为增量开始采集数据时,发现程序完全崩溃了,因为有数百个地方把采集间隔写死为15分钟。我们不能简单地查找和替换,因为这个间隔参数被写成很多种名字,如electricity_interval,timeBetweenMeasurements或dataFreq。没有一个研究人员考虑过代码的可读性或输入变量的灵活性。

相比之下,从软件工程的角度来看,代码必须使用大量不同的输入进行广泛测试,有良好的文档,在现有框架内工作,并遵守编码标准,以便其他开发人员能够理解。尽管我非常想这样做,但我偶尔也会像数据科学家而不是像软件工程师那样编写代码。我开始思考伟大的与普通的数据科学家之间的区别是在于使用软件工程最佳惯例编写代码 - 如果你的模型不够健壮或不适合整个架构,则不会被部署 - 现在我正在尝试培养自己像计算机科学家一样思考。

通常,对于技术技能的学习来说没有比实践更好的方法。幸运的是,在我目前的工作中,我能够同时为我们的内部工具和开源库做出贡献。这也迫使我获得了许多实践机会,包括:

  • 编写单元测试
  • 遵循编码风格指南
  • 编写可以更改参数的函数
  • 完整的代码文档
  • 让其他人做代码审查
  • 重构代码使其更简洁,更易于阅读

即使对于尚未有实际工作经验的数据科学家,你也可以通过协作参与开源项目获得这样的经验。另一个获取可靠编码实践的好方法是在GitHub上阅读流行库的源代码(Scikit-Learn是我的最爱之一)。获得其他人的反馈也至关重要,因此你可以找一个社区并向那些比你更有经验的人寻求建议。

像软件工程师一样思考需要改变你的思维模式,但如果你能够慢下来并牢记这些做法,那么实践他们并不困难。例如,每当我发现自己在Jupyter Notebook 中复制和粘贴代码并更改一些值时,我会试着停下来并意识到我不如使用函数来代替拷贝粘贴的代码,因为从长远来看这会让我更有效率。虽然我对这些惯例的实践还不算极致,但我发现它们不仅让其他人更容易阅读我的代码,而且还更容易扩展我的工作。比起写代码,我们更多时候是在阅读代码,因此你未来会感激这些文档和统一的编程风格。

除了编写那些大型代码库的代码中用到这些,我仍然会坚持遵循部分惯例。编写数据分析的单元测试对于数据科学家来说可能看起来很奇怪,但是当您真正需要开发测试以确保代码按预期工作时,这是很好的做法。此外,还有许多工具可以检查您的代码是否遵循编码风格(我仍然在努力解决关键字参数周围的无空格的问题)。

我,一个数据科学家的三大弱点

总有地方可以改进(在Sublime Text 3里使用pylint)

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读