高替代性的工作,却无法深入到规划策略的核心。当然,基本功是最重要的环节。如果你想成为一名数据科学家,你应该对这些程序有一定的了解:如果R要列出所有的编程语言,其他的你能忘掉也没关系,但最重要的是R。它有自1997年以来悄然出现,最大的优势是它是免费的,可以替代昂贵的统计软件,如Matlab或SAS。但在过去的几年里,它的价值发生了逆转,成为了数据科学界眼中的瑰宝。知道这一点的不仅仅是愚蠢的统计学家。华尔街交易员、生物学家和硅谷开发人员都对R非常熟悉。谷歌、Facebook、美国银行和纽约时报等各种各样的公司都在使用R,并且其业务效用不断增长。R的优点是简单易用。使用R,您可以从复杂的数据集中过滤您想要的数据,从复杂的模型函数中操作数据,并创建有序的图表来呈现数字。一行程序代码即可,例如,它就像一个活动版的Excel。R最大的资产是其活跃和动态的系统,R社区不断添加新包并具有丰富的内置功能集。目前估计有超过200万人使用R,最近的调查显示R是迄今为止数据科学界最受欢迎的语言,占受访者的61%(其次是Python,占39%)。它也引起了华尔街的注意。传统上,证券分析师在Excel文件中看到的是日复一日的夜晚,但现在R在金融建模中的使用正在逐渐增加,尤其是可视化工具。美国银行副总裁NiallO'Conno说,“R让我们俗气的表格变得突出”。在数据建模方面,它正朝着成熟的专业语言迈进,虽然R在企业需要制造大型产品时仍然有局限性,有人说它已经被其他语言所取代。“R对于绘图比建模更有用。”***数据分析公司Metamarkets的CEOMichaelDriscoll说。通过跟踪,工程师将在R中构建原型,然后在Java或Python中编写模型语法。”举一个著名的使用R的例子,2010年,PaulButler使用R构建了Facebook的世界地图,证明了该语言在数据可视化方面的丰富和强大,尽管他现在使用R的次数比以前少了。“R正在变得过时,而且它对于庞大的数据集来说又慢又笨重,”巴特勒说。那他接下来用什么?Python如果说R是神经质惹人怜爱的Geek,那么Python就是随和随和的少女。Python结合了R的速度、处理复杂数据挖掘的能力以及更实用的语言等特点,迅速成为主流。与R相比,Python学习起来更容易、更直观,其生态系统近年来也令人难以置信。增长迅速,在统计分析方面比R更强大。“在过去的两年里,从R到Python发生了巨大的转变,这就像一个向前推进的巨人,”巴特勒说。在数据处理领域,通常需要在规模和复杂性之间进行权衡,而Python作为一种折中方案出现。IPythonNotebook(记事本软件)和NumPy用于临时访问低负载工作负载,但Python是中等规模数据处理的非常好的工具;Python拥有丰富的数据家族,提供了大量的工具包和统计功能。美国银行使用Python在银行的基础设施中构建新产品和界面,以及处理财务数据。“Python更广泛且相当灵活,因此每个人都会蜂拥而至。”奥唐奈说。然而,尽管它的优势弥补了R的劣势,但它仍然不是性能最高的语言,偶尔会处理大规模的硬核基础设施。德里斯科尔是这么认为的。今天Julia的大部分数据科学主要是通过R、Python、Java、Matlab和SAS,但仍有空白需要填补。这时,新人茱莉亚看到了这个痛点。Julia仍然太过神秘,无法被业界广泛采用,但说到它足以从R和Python手中抢走宝座的潜力,数据黑客也难以解释。原因是Julia是一种高级的、速度极快且表现力极强的语言,比R快得多,具有比Python处理更大规模数据的潜力,而且易于学习。“Julia将变得越来越重要,最终,可以在R和Python中完成的事情也可以在Julia中完成。”巴特勒是这么认为的。现在,如果Julia要倒退,那可能是因为它太年轻了。Julia的数据社区仍处于起步阶段,它需要更多的工具包和包才能与R或Python竞争。德里斯科尔说,正是因为它年轻,才有可能成为主流,才有希望。JavaDriscoll表示,Java和基于Java的架构是由硅谷几家最大的科技公司的核心构建的。如果你看看Twitter、Linkedin或者Facebook,你会发现Java对于所有数据工程来说都是必不可少的基础设施,它是一种非常基础的语言。Java没有R和Python那样好的可视化能力,也不是统计建模的最佳工具,但如果你需要构建一个庞大的系统,使用过去的原型,Java通常会是你最基本的选择。Hadoop和Hive,为了满足海量数据处理的需要,出现了一批基于Java的工具。Hadoop是开发基于Java的批量数据处理架构的关键;与其他处理工具相比,Hadoop速度要慢得多,但它非常准确,可广泛用于后端数据库分析。它与Hive配合得很好,Hive在基于查询的架构下工作得很好。Scala是另一种基于Java的语言。与Java非常相似,Scala将成为任何想要进行大规模机器学习或构建高级算法的人的新兴工具。它是良好的演示和构建可靠系统的能力。“Java就像钢铁;Scala是粘土,你可以将它放入窑中,然后将其变成钢铁,”Driscoll说。Kafka和Storm说当你需要快速、实时的分析时,你会想到什么?Kafka将是您最好的合作伙伴。它已经存在了五年,最近随着流媒体的兴起才变得更加流行。Kafka诞生于Linkedin,是一个查询速度特别快的消息系统。卡夫卡的缺点?它太快了,所以在实时操作时会出错,有时会漏掉一些东西。你不能既要蛋糕又要吃,“你必须在准确性和速度之间做出选择,”德里斯科尔说。所以硅谷的大科技公司都是用两条流水线:用Kafka或者Storm处理实时数据,然后打开Hadoop处理一批批数据系统。这听起来有点麻烦和慢,但好处是非常精确。Storm,另一个用Scala编写的框架,在硅谷流处理的知名度逐渐提高,被Twitter收购,这并不奇怪,因为Twitter对快速事件处理有很大的兴趣。MatlabMatlab可以说经久不衰,即使它的价格很高;它广泛用于非常特定的利基市场,包括密集研究机器学习、信号处理、图像识别等。OctaveOctave很像Matlab,只是它是免费的。然而,在信号处理学术界,几乎无时无刻不在提及它。GOGO是另一个新兴的进入者,从Google发展而来,松散的说,它来自C语言,在建立强大的基础设施的基础上,逐渐成为Java和Python的竞争对手。可以用的软件太多了,但我觉得没必要全部都知道。了解你的目标和方向,选择最合适的工具来使用!它可以帮助您提高效率并获得精确的结果。
