入门机器学习需要会哪些编程语言?

对“机器学习”跃跃欲试的你,可能也有这样的问题:入门机器学习,我需要会那种(些)酷炫的编程语言呢?别问了,这个问题的“正解”可能会让你大吃一惊。

不论你选择哪种语言,只要对这种语言下的机器学习库和工具足够熟悉,语言本身就没有那么重要了。现在对应各种语言的机器学习库层出不穷。根据你在公司中担任的角色和所要完成的任务不同,某些语言和工具可能会比其他的更好用。

R

R 是一种为专统计计算而设计的语言。它在大规模的数据挖掘、可视化和报告方面已经取得了巨大的成功。你能够轻松地获取各种的包(通过 CRAN)来使用几乎所有的机器学习算法、统计测试和分析等。R 语言本身有着优美(虽然有些人会觉得晦涩)的语法用来表达数据的关系、变换和并行操作。

KDNuggets 最近组织了一次投票,结果表明 R 是 2015 年用于解决分析、挖掘及其他数据科学任务的最受欢迎的语言。不过,近年来 Python 的人气也在急剧上升。

这里写图片描述

MATLAB

MATLAB 在学术界很受欢迎,因为它能处理复杂的数学表达式,对代数和微积分有强大的支持,还支持符号运算。同时,从数字信号处理到计算生物学,又或者是其他的科目,它都有对应的工具箱可用。它经常被用于开发新的机器学习算法的原型,有时也会被用于开发最终完整的工具。它的商用许可的确非常昂贵,但也对得起它在研发方面带来的方便。Octave 是一款免费的 MATLAB 替代品。它的语法与 MATLAB 几乎相同,但只提供一部分工具箱,IDE 也略微逊色。

Python

虽然 Python 是一种更通用的编程语言和脚本语言,但它在数据科学家和机器学习工程师中的人气也是急剧上升。跟 R 和 MATLAB 不同,它并没有内置数据处理和科学计算专用的语法,但它有像 NumPy、SciPy 和 Pandas 这样的库用更友好的语法提供了同样的功能。

像 scikit-learn、Theano 和 TensorFlow 这样的机器学习库让你能够方便地训练各种机器学习模型,还能用上分布式计算。当然,这些库中最影响性能的部分一般还是用 C/C++ 甚至 Fortan 编写的,而 Python 包则是作为它们的接口(这在 R 中也很常见)。

但 Python 最大的优势在于它的生态系统使得你能够很方便地搭建起一个复杂的端到端服务,比如用 Django 或是 Flask 搭建 Web 应用,或是用 PyQt 开发桌面应用,甚至用 ROS 搭建一个自主机器人。

这种强大的通用性也是我们在“机器学习工程师”纳米学位项目中大量使用 Python 的主要原因。

Java

由于它干净一致的实现、面向对象编程的风格以及通过 JVM 获得的平台独立性,Java 是很多软件工程师的首选语言。它以简洁性和灵活性为代价换取了明确性和可靠性,使它在实现重要的企业软件系统时非常受欢迎。对于那些一直使用 Java 的公司,当他们需要开发机器学习产品时,为了保持同样的可靠性和避免写一堆混乱的接口,他们可能更倾向于继续使用 Java。

除了一些可以用来做分析和原型开发的库和工具(比如 Weka)以外,要用 Java 开发大规模分布式的机器学习系统,我们有很多选择,比如 Spark+MLlib、Mahout、H2O 以及 Deeplearning4j。这些库和框架也很方便跟工业级别的数据处理和存储系统比如 Hadoop/HDFS 整合在一起。

C/C++

在开发像操作系统组件和网络协议这样计算性能和内存使用效率极为重要的底层软件时,C/C++ 是最理想的选择。由于同样的原因,它们在实现机器学习算法的关键部分时也很受欢迎。但是它们没有内建的关于数据处理操作的抽象,内存管理的任务也很繁重,这使得它们对新手来说不太合适,而且在开发完整的端到端系统时也比较笨重。

在开发嵌入式系统(比如智能汽车、智能传感器等),可能必须使用 C/C++。而在其他场景下,用它们进行开发的便利程度可能要视现有的基础设施和具体的应用而定。不过无论如何,我们并不缺少 C/C++ 的机器学习库,比如 LibSVM、Shark 和 mlpack。

企业级解决方案

在这些语言和库以外,还有很多统计建模和商业分析的商用产品,用于在更为受控的数据处理环境下应用机器学习模型。这些产品,包括 RapidMiner、IBM SPSS、SAS+JMP 和 Stata 等,它们的目标是为数据分析提供可靠和端到端的解决方案,通常也会将 API 或是脚本语法暴露给用户。

近年来还涌现出了一批“机器学习即服务”平台,比如 Amazon Machine Learning、Google Prediction、DataRobot、IBM Watson 和 Microsoft Azure Machine Learning 等。它们使你能够拓展你的机器学习产品的规模,处理巨量的数据以及快速地对不同的模型进行试验。只要你在机器学习领域打好了坚实的基础,使用这些平台就像学习使用一门新工具一样简单。

特别提示

选择语言和库时要注意考虑开发时间和实际性能之间的平衡。一条能够飞速处理数据的流水线如果需要几个月来开发,在有些情况下这可能就毫无用处。一般来说,能够快速地搭建和测试原型会更重要,因为一开始你肯定会失败。

这也是为什么大部分公司都想寻找那种已经有惯用的工具 / 语言 / 库的机器学习工程师。工业界往往会用 Python 和 R 这样的高层次语言来开发算法的原型,然后用 Java 或是 C/C++ 来开发生产级别的解决方案。

这篇文章对你有所启发?不如分享到朋友圈,让更多伙伴看到!

▲ 本文由优达学城(Udacity)原创,作者 Arpan Chakraborty,原标题 Languages and Libraries for Machine Learning

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 如果您想从零开始学习机器学习,下面是一些推荐的步骤: 1. 了解机器学习的基本概念,例如监督学习、非监督学习、强化学习等。 2. 学习数学知识,例如线性代数、微积分、概率和统计学。 3. 了解常用的机器学习算法,例如决策树、随机森林、支持向量机、神经网络等。 4. 学习一门编程语言,例如 Python,并安装相关的机器学习库,例如 TensorFlow、Scikit-learn 等。 5. 参加 Kaggle 等在线竞赛,练习自己的机器学习技能。 6. 阅读一些机器学习相关的书籍或研究论文,不断加深对机器学习的理解。 希望以上步骤能帮助您入门机器学习。 ### 回答2: 要从零开始学习机器学习,您可以遵循以下步骤: 1. 学习基本数学概念:机器学习涉及大量的数学原理和方法。您应该熟悉线性代数、概率论和统计学基础,以便更好地理解机器学习算法的背后原理。 2. 编程基础:掌握至少一种编程语言,如Python或R,这两种语言机器学习领域非常流行。学习编程将帮助您实现和应用机器学习算法,以及对数据进行处理和分析。 3. 学习机器学习算法:了解常见的机器学习算法,如线性回归、逻辑回归、决策树、支持向量机等。可以通过在线教程、开放课程或书籍来学习这些算法的原理和实现方法。 4. 实践项目:通过实际项目来强化所学的知识。尝试参与开源项目或自己实现一些机器学习算法,以加深对算法的理解并学习如何应用它们。 5. 数据集和数据预处理:了解如何获取和处理数据集是机器学习的关键。寻找公开可用的数据集,并学习如何清理、标记和转换数据,以便在后续的机器学习任务中使用。 6. 继续学习和实践:机器学习领域不断进步,新的算法和技术不断涌现。为了跟上最新趋势,持续学习并参与相关的讨论和实践项目是很重要的。 总之,从零开始学习机器学习需要掌握数学基础、编程技能和机器学习算法。通过持续实践和学习,您可以不断提高自己的技能,并在实际应用中构建出有意义的机器学习模型。 ### 回答3: 机器学习是一门涉及统计学、数据分析和算法的学科,它可以让机器根据数据进行学习和预测。从零开始学习机器学习,以下是一些基本步骤: 1. 学习基础知识:了解统计学、线性代数和概率论等数学基础,这些是理解机器学习算法的基础。 2. 编程技能:学习编程语言(如Python或R),它们是机器学习最常用的语言。通过编程语言,你可以实现机器学习算法并处理大量数据。 3. 入门课程:参加在线或线下的机器学习入门课程,这样可以更好地理解机器学习的基本概念和算法。 4. 探索数据集:找到适合的数据集来实践机器学习算法。可以使用公开可用的数据集,如Kaggle等。 5. 学习算法:学习和理解常见的机器学习算法,如线性回归、分类、聚类和决策树等。理解算法的原理和应用场景,以及如何调整算法的参数。 6. 练习项目:通过进行实际项目来巩固所学的知识。选择一个感兴趣的问题领域,应用机器学习算法解决实际问题。 7. 持续学习和实践:机器学习是一个不断发展的领域,新的算法和技术不断涌现。保持学习的态度,阅读文献、参加学术议或讨论,与其他机器学习从业者交流经验。 总之,从零开始学习机器学习需要掌握数学基础、编程技能和算法知识,并通过实践项目和持续学习来不断提升自己的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值