选择适合自己的编程语言会是你机器学习路上的一把利剑
点击上方关注,All in AI中国
问答网站和数据科学论坛上充斥着同样的问题:我是数据科学的新手,我应该学什么语言?机器学习的最佳语言是什么?
无论是基于个人经验还是工作上的需要,目前有大量的文章试图回答这些问题。然而,机器学习比西方工作提供的描述要活跃得多,同行的意见当然很有价值,但往往相互矛盾,因此可能会让新手感到困惑。我们可以使用来自2000多名数据科学家和机器学习开发人员的数据,他们对我们最新的一项调查做出了回应,调查内容是关于他们使用哪种语言,以及他们正在进行哪些项目。还有很多关于机器学习活动和训练的有趣的事情。然而,作为数据科学家,我们不得不运行一些模型,看看哪些是与语言选择相关的最重要的因素。我们比较了前五种语言,结果证明这个问题没有简单的答案。这取决于你想建立什么,你的背景是什么,以及你为什么要参与机器学习。
哪种机器学习语言最受欢迎?
首先,让我们看看机器学习语言的总体流行程度。Python遥遥领先,57%的数据科学家和机器学习开发人员都在使用它,33%的开发人员会优先选择它。这并不奇怪,考虑到在过去两年中Python框架在深度学习方面的所有进展,包括TensorFlow的发布和其他库的广泛选择。Python经常被拿来和R比较,但是它们在流行程度上根本无法与R相比,R在总体使用上排名第四(31%),在优先级上排名第五(5%)。事实上,在这五种语言中,R语言的优先级与使用率最低,只有17%的开发人员会选择使用它。这意味着在大多数情况下,R会作为一种补充语言,而不是首选语言。我们可以看到Python的使用趋势正好与R相反,它也是大多数用户的主要选择。C/ c++在使用率(44%)和优先级(19%)上都远远落后于Python。Java紧随C/ c++之后,而JavaScript在使用上排名第五,尽管优先级性能略优于R(7%)。我们询问了受访者关于机器学习中使用的其他语言的情况,包括常见的Julia、Scala、Ruby、Octave、MATLAB和SAS,但它们都低于5%的优先级和26%的使用率。因此,我们把注意力集中在前五种语言上。
在没有Java的应用程序中,Python被优先考虑
我们的数据显示,在选择机器学习语言的时候,最决定性的因素是你机器学习中选择从事的项目类型、你的应用领域。在我们的调查中,我们询问了开发者17个不同的应用领域,同时也给我们的受访者提供了一个机会,告诉我们他们仍然在探索选项,而不是积极地在任何领域工作。在这里,我们给出每种语言的顶部和底部三个区域:开发人员对每种语言的优先级最高和最低的区域。开发人员最优先考虑每种语言的区域。
从事情绪分析的机器学习科学家比其他领域的开发人员更重视Python(44%)和R(11%)。相比之下,在网络安全/网络攻击和欺诈检测方面,Java的优先级更高,而Python在这两个领域的优先级最低。网络安全和欺诈检测算法大多是在大型组织中构建或使用的,尤其是在金融机构中,Java是大多数内部开发团队的最爱。在不太关注企业的领域,如自然语言处理(NLP)和情感分析中,开发人员选择Python,因为Python提供了一种更简单、更快的方法来构建高性能算法,这是因为Python附带了大量的专用库。
考虑到控制水平、高性能和效率的要求,游戏中的人工智能(AI)和机器人运动(27%)是C/ c++最受欢迎的两个领域。在这里,一个较低级别的编程语言,如C/ c++,以及高度复杂的AI库是一个自然的选择,而R,用于统计分析和可视化,被认为是几乎不相关的。游戏中的人工智能(3%)和机器人运动(1%)是R优先级最低的两个领域,其次是语音识别。
除了在情绪分析中,R也是相对优先的。在生物工程和生物信息学中,Java和JavaScript都不受欢迎。考虑到R在生物医学统计中的长期应用,无论是在学术界还是学术界,它都是使用最多的领域之一,这并不奇怪。最后,我们的数据显示,新接触数据科学和机器学习的开发人员仍然在探索选项,他们优先考虑的JavaScript比其他人多(11%),优先考虑的Java比其他人少(13%)。在许多情况下,这些开发人员通过在web应用程序中使用第三方机器学习API来试验机器学习。
专业背景是选择机器学习语言的关键
其次,在选择机器学习语言时,专业背景也是至关重要的:开发人员优先考虑前五种语言比其他语言更多来自五个不同的背景。对于数据科学是第一个专业或研究领域的人来说,Python的优先级最高。这表明Python现在已经成为数据科学不可或缺的一部分。它已经发展成为数据科学家的母语。R语言则不是这样的,因为R语言最初是为R而创建的,取代了S语言。
开发人员将JavaScript的使用扩展到机器学习,16%的开发人员将其作为优先级,同时避免了繁琐的C/ c++。与之完全相反的是,嵌入式计算硬件/电子工程师比其他人更倾向于使用C/ c++,而避免使用JavaScript、Java和R。考虑到他们在工程生涯中对C/ c++的投入,满足于一种会损害他们对应用程序控制水平的语言是没有意义的。嵌入式计算硬件工程师也最有可能从事接近硬件的机器学习项目,比如物联网边缘分析项目,在这些项目中,硬件可能会迫使他们选择语言。我们的数据证实,他们在工业维护、图像分类和机器人运动项目等方面的参与度明显高于平均水平。
对于Java,优先级最高的是前端桌面应用程序开发人员(占21%),正如前面提到的,这与它主要用于面向企业的应用程序是一致的。企业开发人员倾向于在所有项目中使用Java,包括机器学习。在这种情况下,公司指令从与语言优先级密切相关的第三个因素也可以明显看出进入机器学习的原因。Java被那些因为老板或公司的要求而进入机器学习的开发人员优先考虑。Java不是一种你只是为了好玩而学习的语言!好奇的人优先考虑的是Python而不是其他语言,这表明Python被认为是人们需要试验的主要语言,从它入手以了解机器学习的全部内容。
然而,一些教授数据科学课程的大学似乎仍然需要跟上这一理念开发人员说他们进入机器学习是因为数据科学是他们大学学位的一部分,他们最不可能优先考虑Python,并且最有可能优先考虑R语言,统计学界对R仍存在明显的偏好。但随着数据科学和机器学习越来越倾向于计算,这一趋势正在消退。那些受过大学数据科学训练的人可能比其他人更喜欢它,但从绝对意义上说,首先选择R的人也只占这一群体的一小部分。
C/ c++的优先级更多地是由那些希望用机器学习增强现有应用程序/项目的人确定的,而不是由那些希望基于机器学习构建具有高度竞争力的新应用程序的人确定的。这种模式再次指向C/ c++,它主要用于工程项目和物联网或AR/VR应用程序,很可能已经用C/ c++编写,其中添加了ML支持的功能。当从头开始构建一个新的应用程序时,特别是一个使用NLP的chatbotsa 。使用C/ c++没有什么特别的理由,但是有很多理由选择提供高度专门化库的语言,比如Python。这些语言可以更快、更容易地生成高性能算法,这些算法可能在以ML为中心的新应用程序中提供竞争优势。
最后,从事机器学习以增加获得高利润项目的机会的承包商优先考虑JavaScript。这些可能是JavaScript开发人员构建他们正在添加机器学习API的Web应用程序。一个例子是在基于web的仪表板上可视化机器学习算法的结果。
没有所谓的“机器学习的最佳语言”。
我们的数据表明,在选择用于机器学习和数据科学的编程语言时,流行度并不是一个好的衡量标准。没有所谓的“机器学习的最佳语言”,这完全取决于你想要构建什么、你来自哪里,以及你为什么要参与机器学习。在大多数情况下,开发人员将他们已经在使用的语言移植到机器学习中,特别是如果他们要在与之前工作相邻的项目中使用该语言时。例如面向C/ c++开发人员的工程项目或面向JavaScript开发人员的web可视化。
如果你第一次接触编程是通过机器学习,那么在我们的调查中,你的同行认为Python是最佳选择,因为它具有丰富的库和易用性。另一方面,如果你梦想在企业环境中找到一份工作,那么请准备好使用Java。无论如何,这都是机器学习的激动人心的时刻,无论你选择哪种语言,这段旅程都一定会让人兴奋不已。请享受过程!