数据挖掘专家,哪些数据分析和数据挖掘的牛人( 七 )


为什么在项目设计过程中多花费一些时间和精力可以让你成为10x数据科学家?
你只需要做那些需要完成的工作(在写代码之前已经思考过),这样就可以快速完成项目,因为你会减少工作量!通过在客户/用户认为他们需要的东西和他们真正需要的东西之间发现不同,你就能把自己定位成这个领域的专家和共识的制定者 。你会巩固自己对问题的理解,从而减小犯那些重大错误的几率 。
你得懂得代码设计
虽然在设计代码时有很多非常好的实践,但其中有一些非常突出的细节将大大增加你的生产效率 。
我第一次听到关于清晰度或清晰度胜过聪明才智的论述是在大学写作课 。被自己一时的聪明想法抓住,并使用今天刚想到的最新词汇来表述想法是很容易的一件事,但是像编程一样,你这样做不仅可能会混淆自己,还会混淆别人 。(小编注:比如不按变量命名规则,每次都是a,b,c 。。。真的在日后看代码的时候很崩溃)
在上面的Scala示例中,第一行显示了使用简写语法的sortBy方法 。虽然简明扼要,但很难想象下划线代表什么 。虽然这是许多人在匿名函数中表示参数名称的常见模式,但对于不太高级的开发人员(或者当你过了一段时间再看你的代码)时,搞明白代码到底代表什么的做法就变得很头痛了 。
在第二个例子中,我们起码使用了一个参数名称,加上它还显示了赋值,我们可以看到它是通过序列x中的最后一个元素排序的 。
当代码不怎么抽象的时候,之后的调试才会更容易,所以在第三个例子中,我明确命名了我的参数,以便它表示数据 。
当你的大脑必须要经历每一步,或者查找或回想代码的简写代表什么的时候,调试会需要更长的时间,添加新函数也会需要更长的时间,因此即使使用上述示例的简写可以简洁而快速地输入,从长远来看,明确命名参数对你和他人都会是有利的,从而避免你们耍小聪明犯下的错 。
虽然我们不会检查缓存,但我们将介绍命名的重要性 。想象一下,你正在查看一些旧的代码,你会看到序列按Scala示例进行排序:
.sortBy(x => -x._2)
使用单个字母来命名序列根本提供不了有用的信息,因为当你可能从API,数据库或Spark中的数据流中提取数据时,你必须运行代码才能看到”x”到底代表什么 。
所以保持与之前Scala的示例的代码应该是:
sortBy(clothesCount => -clothesCount._2)
这样你就可以知道我们正在对什么进行排序,甚至不用运行代码 。
但是,有时使用X作为变量名称却很好 。例如,X通常用于机器学习库,其中X表示观察到的数据,而y是试图预测的变量 。在这种情况下,使用这个领域约定俗成的表示,如“模型”,“拟合”,“预测”和“x”和“y”等字段是最好不过的 。
除了数据科学方面的要求,你还要遵循你所使用的语言的编程语言惯例 。例如,我建议你去检查一下文档,如PEP for Python,来了解最佳做法 。
通过规范你的命名约定,并通过清晰而不是耍小聪明的代码,它将使重构和调试更容易和更快 。按照这两个代码设计的窍门,你将走上成为10x数据科学家的道路 。
保持代码样式一致,与刚刚我们说的保持命名约定一样重要 。要获得一些基本的风格点,你应该坚持一种情况,不要在同一个脚本中混合使用驼峰式大小写和snake的命名规范,否则的话,你的代码很快就会变得难以阅读和浏览 。另一种你应该保持一致的方法是同一种任务要坚持使用相同方法 。例如,要从字典中删除重复项,并且需要在代码的好几个位置处执行此操作,那么就不要仅仅因为在Stack Overflow网站上看到过就使用其他创造性的方法来执行操作 。使用最清晰和最不聪明的方法来让你的代码和脚本保持一致 。并且,我还要再次强调,一致性的目的是为了避免让你自己和其他人混淆,这将有助于你更快地进行调试!(请注意,我们这段话的核心是调试) 。

推荐阅读