专栏名称: 雷峰网
中国智能硬件第一媒体
目录
相关文章推荐
新浪科技  ·  【#博主称iPhone17三摄依旧三角布局# ... ·  2 天前  
新浪科技  ·  【#王思聪明年要开100家牛排店#】#王思聪 ... ·  3 天前  
腾讯研究院  ·  腾讯研究院AI速递 20241217 ·  4 天前  
新浪科技  ·  【#明年暂停降息预期升温# ... ·  6 天前  
51好读  ›  专栏  ›  雷峰网

入门必读 机器学习六大开发语言

雷峰网  · 公众号  · 科技媒体  · 2017-01-15 18:19

正文

雷锋网招人了!


加入雷锋网,分享 AI 时代的信息红利,与智能未来同行。听说牛人都点了这里



机器学习的初学者,普遍需要面对一个问题:


到底学习哪个编程语言?


答案可能会让你惊讶:对高手来说,这关系不大。只要你了解所选语言的机器学习库和工具,语言本身其实没那么重要。相当多的机器学习库支持多种编程语言。当然,取决于你在公司中的开发角色和你需要实现的任务,有些语言、库和工具会比其他的更高效。下面,我们来看看六大主流机器学习语言——R 语言、MATLAB、Python、Java 、C/C++ 和 Lisp。


R 语言



R 是一个专门设计来进行数据计算的语言工具。在大规模数据挖掘、可视化和报告的应用场景中,它处于领先地位。通过 CRAN 资源库,你能轻易获得海量工具包,能应用于几乎所有的机器学习算法、数据测试和分析过程。R 语言用于表达关系、转化数据以及进行并行操作的语法十分优雅,但略显深奥。


雷锋网消息,KDNuggets 最近的调查发现,在分析、挖据和其他数据科学任务中,R 是最受欢迎、最常用的语言。但近年来 Python 逐渐抢走更多用户。


KDNuggets 2015 民意调查: 分析、挖据和数据科学任务中最常用的编程语言是 R。


MATLAB 


MATLAB 在学术界十分普及,这是因为:


  • 它强大的数学处理能力;


  • 对代数、微积分有丰富支持;


  • 支持符号计算;


  • 对不同学科(从数字信号处理到计算生物学)有一系列丰富的工具箱。


这门基于矩阵的语言,经常应用于机器学习算法的原型设计,有时还被用于开发复杂的解决方案。它的商用许可特别贵,但对有些企业用户来说也许值得,因为它可以大幅减少开发、研究耗费的时间和精力。AI 大牛吴恩达就推荐初学者使用 Octave 或 MATLAB 入门。相比之下,Octave 是 MATLAB 的一个免费替代品,它们十分相似,有几乎相同的语法。只是 Octave 的工具箱更少一些,IDE 也不如 MATLAB 成熟。


Python



虽然 Python 是一门通用型的编程、编写脚本的语言,但它逐渐在数据科学家和机器学习工程师之间流行起来。与  R 和 MATLAB 不同的是,数据处理和科学计算的惯用语法并没有内置于 Python 语言中,但 NumPy、SciPy 和 Pandas 这些库把 Python 这方面的的功能性提到了与 R 和 MATLAB 同等的水平。还有人认为这使 Python 的语法更易用。


有海量开源框架支持 Python:比如 Scikit-learn、Theano、TensorFlow。这些专业机器学习库使开发者训练机器学习模型更便捷,有的还能很好地支持分布式计算。通常,这些资料库中关乎性能表现的代码,大多数仍然用 C 或 C++ 编写,有的甚至用 Fortran;Python 的角色主要是作为 wrappers 或者 API。R 语言包与之类似。


Python 生态系统最大的优势在于:用它组合出一个复杂的端到端产品或服务比较容易,比如说使用 Django 或 Flask 的网络应用,还有使用 PyQt 的桌面应用,甚至是使用 ROS 的自主机器人代理。


值得一提的是,慕课三巨头 (edX, Coursera, and Udacity)全都提供了  Python 的入门课程。另外,包括 MIT、加州大学伯克利分校在内的美国顶级学府,已经把 Python 作为计算机新生的必修语言。可以预期,将来会有更多的 IT 顶级名校转向 Python,与之相对的它在工业界的不断普及。


总而言之,在机器学习领域,Python 是一个全能多面手,许多人认为它是未来的大趋势。


Java



Java 是大多数软件工程师的选择。这是由于在面向对象的编程中,它干净、一致的执行方式;以及使用 JVMs 的平台独立性。它牺牲了简洁和灵活性,以使代码更清楚明白,并提高可靠性。这使它广泛应用于重要级别较高的企业软件系统中。为了维持相同水平的可靠性,并避免编写出乱七八糟的界面,正在使用 Java 的企业倾向于在机器学习应用中继续使用该语言。


在分析和设计原型上,java 有许多很有用的工具和库(比如 Weka)。除此之外,在开发大规模分布式学习系统上,Java 有很多一流的选择:比如 Spark+MLlib, Mahout, H2O 和 Deeplearning4j。腾讯一个月前开源的大数据计算平台 Angel 也是使用的 Java。这些框架/库对业界标准的数据处理和存储系统十分友好(比如Hadoop/HDFS),使它们之间的兼容、整合十分方便。


C/C++




C/C++ 是编写底层软件的理想语言,比如操作系统的某部分或网络草案。计算速度和内存效率在这些应用场景中十分关键。出于同样的原因,它们也是执行机器学习底层步骤的通用选项。但是,由于缺乏对数据处理的惯用抽象化,而且内存管理加重了写代码的负担,使它们对初学者十分不友好。开发完整的端到端系统中使用 C/C++ 也是一项负担。


在嵌入式系统的例子中,比如智能设备、汽车和传感器,使用 C 或者 C++ 语言可能是必需的。若现有平台基础或特定应用已使用了 C/C++,使用它们会更方便。另外,基于 C/C++ 的机器学习库也有不少,比如 LibSVM, Shark 和 mlpack。


Lisp



这可是 AI 编程语言的祖师。就雷锋网所知,Lisp 诞生于 1958 年,是有史以来第一个用于 AI 的计算机语言。该语言十分灵活、并可扩展。它的一些属性,比如快速原型设计和方便的“宏”使用(macro utility),在 AI 开发中十分有用。编写复杂程序使用 Lisp 相对容易。它是一个能用简单的方式创造强大算法的语言。


Lisp 有着清楚的映射,用它进行系统性的改变相对容易。它的 Read-eval-print 回路(读取-求值-输出的回路,简称 REPL)提供了交互性的开发环境。动态类型(Dynamic typing)、condition system 以及强大的对象系统(object system)是 Lisp 主要特点,使它一度成为 AI 领域最常用语言之一。目前虽然在国内比较小众,但业内公认它是最强大的机器学习语言之一。


企业方案



这些语言之外,还有几个用于数据建模和和企业分析的商业化产品,它们能在具有更高可控性的数据处理环境中应用机器学习模型。 RapidMiner, IBM SPSS, SAS+JMP 和 Stata 都属于这类产品。它们旨在为数据分析提供可靠的端到端解决方案,并通常有可编程 API 以及可编写脚本的语法。


不断普及的基于机器学习的云服务,是该领域的最新发展。这包括亚马逊机器学习,Google Prediction, DataRobot, IBM Watson (沃森) 和 Microsoft Azure。对于把学习方案扩展到对海量数据的处理,以及用不同模型进行快速测试,它们向客户提供了解决方案。只要你有坚实的机器学习基础,使用新产品或者新平台就相当于学习怎么使用一个新工具。


对初学者的建议:


选择语言/库时一个很重要的考虑是如何平衡开发时间和执行时间。如果需要几个月来开发,一个能在几分钟内完成数据处理的学习通道也或许一文不值。快速地创建、测试原型非常重要,因为首次尝试一般都是失败的,开发者需要不断重复。


这就是为什么有经验的机器学习工程师会如此抢手:他们做开发时,会使用任何用着顺手的工具/语言/库。就雷锋网所知,在 AI 产品开发中,这是一个经常发生的场景:用 Python、R 这些高层语言开发算法原型,然后把方案转移到 Java 或者 C/C++ 上,来生产终端产品。因此,想成为高层次的机器学习开发者,只会一种语言是不够的。


via udacity,letzgro



点击关键词可查看相关历史文章


● ● 

热门文章


这 71 封给预订者的邮件,告诉你Lily如何从辉煌走向死亡

Nokia 6 只是幌子,诺基亚崛起的野心寄托在健康设备上

孙剑:我在 Face++ 的这半年

哈苏是如何把一手好牌打烂的

iPhone 十年,回望这款伟大产品诞生传奇


● ● 

英伟 | 法拉第未来

小程序 | 扎克伯格开发笔记 | 共享单车

GoPro | 春运刷票原理 | AI 美颜

物联网年终盘点 | AI医疗影像公司盘点

华为5G | Autopilot 2.0 | 京东X事业部

商用性爱机器人 | 淘宝 Buy+ | 张小龙内部演讲

小米MIX 小米VR | 华为麒麟960

锤子M1/M1L | 龙芯3A3000 三星 Note 7

大疆 “御 ”Mavic | Google Home

国产多线激光雷达 | 谷歌 Daydream VR 头盔