我经常被问到的一个问题是:机器学习最好的编程语言是什么?
我已经回答了这个问题很多次了,现在是时候在博客上进一步探讨这个问题了。 最终,用于机器学习的编程语言应该考虑到自己的需求和偏好。
使用的语言是什么?
最近的一项民意调查的题目是 “您在分析/数据挖掘/数据科学工作中使用了哪些编程/统计语言?“ 这些趋势与前一年几乎相同。
机器学习语言
您现在对 ML 及其实际应用有了基本的了解,但可能很难知道从哪里开始或如何开始。重要的第一步是至少了解机器学习中使用的一种主要编程语言。
在我们深入研究之前,让我们谈谈数据科学家的受欢迎程度。Stack Overflow 在 2018 年进行的开发者调查显示,Python 是最流行的编程语言,其次是 Java 和 Javascript。
Python
Python 具有无可争议的受欢迎程度。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 限制的应用程序比单线程的应用程序运行得更慢。
R
R 是为高级统计和数据可视化而构建的。对于任何想要了解机器学习或统计中涉及的数学计算的人来说,这就是适合您的语言。
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 专注于科学计算领域,非常适合它。由于这些计算能力,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 的游戏
- 内容推荐引擎
- 学习本地网络/设备上的使用模式的活动监控
- 对象检测,例如识别照片中的许可证
Scala
Scala 比 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 库
- 你想控制内存使用,因为你会推动你的系统限制
Java
Java 通常以企业开发和后端系统而闻名。但是,选择 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 的工具和库:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/4396.html