我经常被问到的一个问题是:机器学习最好的编程语言是什么?
这个问题我已经回答过很多次了,现在是时候在我的博客上进一步探讨了。最终,用于机器学习的编程语言应该考虑自己的需求和偏好。
使用的语言是什么?最近一项民意调查的标题是“你在分析/数据挖掘/数据科学工作中使用哪些编程/统计语言?”这些趋势与前一年几乎相同。
机器学习语言现在,您已经对ML及其实际应用有了基本的了解,可能很难知道从哪里或如何开始。重要的第一步是了解至少一种用于机器学习的主要编程语言。
在我们深入探讨之前,先说一下数据科学家的普及程度。Stack Flow在2018年进行的一项开发者调查显示,Python是最受欢迎的编程语言,其次是Java和Javascript。
PythonPython有着无可争议的受欢迎程度。Python的创造者Guido Van Rossum说,“我当然无意创造一种面向大众消费的语言。”可以肯定地说,他做了相反的事情,因为Python把避免编码的人带到了最前沿——过于复杂的语法早已不复存在。
这个描述流行Python用例的图表是开发人员研究的另一个产品。起初,Web开发似乎是Python最受欢迎的用途,约占26%。然而,数据分析和机器学习的结合显示了惊人的27%。那么为什么Python在机器学习领域如此受欢迎呢?
在进一步研究之前,我们必须明白,AI项目在技术栈和所需技能方面与传统软件项目不同。因此,选择一种稳定、灵活、具有多种工具的编程语言是非常重要的。Python满足了所有这些要求。
除了简单性和一致性,它还有一个很棒的社区,可以帮助构建各种ML框架和库。这些是预先编写的Python代码包,可以帮助机器学习工程师快速解决常见任务,更快地开发产品。
Python为ML提供了其他语言无法提供的简单体验:在这里你不必重新发明轮子(WHL)。
Python比其他编程语言更直观,因为它的语法非常简单,是团队实现的最佳选择。开发人员可以专注于手头的ML任务,如复杂的算法或一般的工作流程,而不是语言的细节。
Python也非常灵活且独立于平台,因为它不受Linux、Windows和macOS的支持,无需Python解释器。这也使得用自己的GPU进行训练变得更加便宜和简单。57%的机器学习工程师报告使用Python,其中33%的人更喜欢使用Python进行开发。
但是,对于任何事情,我们也必须考虑Python的缺点:
几乎没有统计模型包由于全局解释器锁 (GIL) 的存在,Python 中的线程非常有问题,而且多线程受限 CPU 限制的应用程序比单线程的应用程序运行得更慢。Rr是为高级统计和数据可视化而构建的。对于任何想了解机器学习或统计中涉及的数学计算的人来说,这是适合你的语言。
r在数据分析和可视化方面优于Python。它允许快速原型和数据集的使用,以建立您的ML模型。例如,如果你想将大段文字分解成单词或短语来寻找模式,R将击败Python。
r还附带了一系列令人印象深刻的库和工具,帮助您实现机器学习。这些高级数据分析涵盖了建模前和建模后阶段,是专门为特定任务(如模型验证或数据可视化)而设计的。
除了一个活跃和有用的开源社区,R还可以免费下载和附带GNU软件包,并把它放在昂贵的替代品中,如SAS和Matlab。R Studio是一个IDE,允许开发人员创建ML算法的统计可视化。r带有控制台、语法高亮编辑器和其他有用的工具,如绘图、历史、调试、工作区管理。
Julia是的,别误会,不是你想的那个谁谁。
但是这个。
但Julia是一个真正的弱者:虽然没有Python和R那么受欢迎,但它的设计匹配了Python、MATLAB和R的功能以及C++和Java的执行速度。现在有足够的理由记住它了!Java有两大优势:速度+为并行而设计。因为感觉像是脚本语言,切换起来并不困难,所以Python/R开发者很容易上手。
在AI方面,Julia最适合深度学习(仅次于Python),非常适合基础数学和科学的快速执行。朱莉娅专注于科学计算领域,这非常适合它。由于这些计算能力,Julia具有可伸缩性,并且比Python和r更快。
Julia还可以调用Python、C和Fortran库,拥有交互式命令行和全功能调试器。
然而,与Python相比,Julia在面向对象编程、可扩展性、社区和库的多样性方面有所欠缺。它仍处于起步阶段。大多数ML专家同时使用两种方法:Julia用于后端深度学习,可以达到最佳性能,Python用于前端。
JavaScript当你想到ML时,首先想到的肯定不是JavaScript。JavaScript虽然主要用于Web开发,但是通过TensorFlow.js进入了机器学习领域
TensorFlow.js是Google创建的开源库。它使用JavaScript在浏览器或Node.js和JavaScript中构建机器学习模型。对于只熟悉Web开发的人来说,TensorFlow.js是一个很好的ML入门。
TensorFlow.js支持WebGL,所以你的机器学习模型可以在GPU存在的情况下运行;例如,如果用户在手机上打开一个网页,该模型可以利用感官数据。
Tensorflow.js允许您导入现有的预训练模型,重新训练导入的模型,并在浏览器中创建模型。我们来看看TensorFlow.js的优缺点
许多开发人员正在将ML从后端服务器带到前端应用程序。TensorFlow.js现在允许开发人员创建和运行纯HTML格式的ML模型,而无需复杂的后端系统。这种简单性让你很容易做出优秀的项目。以下是一些例子:
自动图片处理:通过卷积神经网络生成艺术使用 AI 的游戏内容推荐引擎学习本地网络/设备上的使用模式的活动监控对象检测,例如识别照片中的许可证ScalaScala比Python快得多,并且将面向对象和函数式编程的优势带到了高级语言中。它最初是为Java虚拟机(JVM)构建的,非常容易与Java代码交互。开发人员可以轻松构建高性能系统,同时通过Scala使用静态类型来避免错误。
Scala有几个用于线性代数、随机数生成、科学计算等的库。
从性能、学习曲线和易用性来看,Scala也是Apache Spark的绝佳选择(Apache Spark是一个数据处理框架,用于在庞大的数据集上处理任务,并通过多台计算机分配数据处理任务)。
C/C++C/C++和机器学习很难匹配。从一开始,Python似乎就比C/C++有很多优势:
Python更灵活,语法简单,更容易学使用 Python 可以让您专注于 ML 的细微差别,而不是语大量的库和包您可以通过 Python 解释器通过命令行以交互方式处理数在 C/C++ 中为 ML 算法调试要困难得多但是,使用C/C++有一些优点:
C/C++ 是最高效的语言之一——机器学习算法需要快速。使用 C/C++ 可以让您控制从内存、CPU 等开始的单个资源TensorFlow、caffe、vowpal、wabbit、libsvm等很多ML框架其实都是用C++实现的你一定会在招聘人员和公司中脱颖而作为最古老的编程语言之一,C和C++在机器学习领域是一个利基市场。c可以用来补充现有的机器学习项目。计算机硬件工程师更喜欢C,因为它的速度和控制水平——你可以使用C/C++从头开始实现算法。
通常,C/C++用于以下情况:
速度极其重要您的用例没有 Python 库你想控制内存使用,因为你会推动你的系统限制JavaJava一般以企业开发和后端系统著称。然而,选择Java而不是Python或R有几个原因:
许多公司的基础设施、软件、应用程序等都是用 Java 构建的,这意味着集成和兼容性问题被最小化很多流行的数据科学框架,如 Fink、Hadoop、Hive 和 Spark 都是用 Java 编写Java 可用于数据科学中的各种流程,例如清洗数据、数据导入和导出、统计分析、深度学习、NLP 和数据可视化Java 虚拟机使开发人员可以编写跨多个平台相同的代码,并且可以更快地构建工具使用 Java 构建的应用程序易于扩展Java 像 C/C++ 一样快速执行,这就是为什么 Linkedin、Facebook 和 Twitter 使用 Java 来满足他们的一些 ML 需求Java 是一种强类型编程语言,这意味着开发人员必须明确和具体地了解变量和数据类型生产代码库通常用 Java 编写Java也为ML配备了各种工具和库:



