编译 | AI科技大本营(公众号ID:rgznai100)
参与 | 林椿眄
编辑 | 明明

【AI科技大本营导读】Python 语言是机器学习领域最优秀的编程语言之一,现在它正挑战着 R 语言在学术界和研究领域的统治地位。那么,为什么 Python 语言在机器学习领域会如此受欢迎?Python 领域资深专家 Mike Driscoll 组织了一次访谈会,邀请了五位 Python 专家和机器学习社区人士,共同分析 Python 语言受欢迎的原因。营长将五位人士的观点罗列如下。

“编程是一项社交活动 - Python社区已经意识到了这一点”

第一位:Python Twisted 网络编程框架创始人 Glyph Lefkowitz ( @glyph ) ,曾在 2017 年荣获 PSF 社区服务奖

人工智能是一个大而全的术语,通常代表着当前计算机科学研究中最先进的领域。

有一段时间,我们理所当然地认为那种用于基本的图遍历技术就是所谓的 AI 技术。那时候, Lisp 还是门强大的人工智能语言,它的使用频率高于其他语言很多,使用这门语言能让研究人员更容易地解决相关的 AI / 机器学习问题。但现在,我认为 Python 已经在很大程度上取代了Lisp ,因为二者除了有相似的高层次属性外, Python 还拥有出色的第三方库,以及与操作系统完美地集成。

Lisp 的使用者们可能会反对我的观点,所以我应该说清楚。我没有对 Python 在表达层次中的位置做出精确地陈述,只是说 Python 和 Lisp 都处于相同的语言类别中,在处理诸如垃圾回收,内存安全,模块,名称空间和高级数据结构等方面的问题时有着相似的特性。

在更具体的机器学习层面,也就是大家最近谈论的 AI ,我认为两种语言的差别就更加明显了。Python 中的 NumPy 库及其强大的处理机制的存在,使得研究人员可以对高级别的内容进行研究,并进行高性能的数据处理。如果不能拥有强大的数字处理功能,那机器学习系统是没有任何意义的。

Python 社区致力于为非程序员提供友好的介绍和操作系统的支持,这也确实增加了其在数据科学和科学计算等相关学科中的应用。各种领域的工作人员,包括统计人员、天文学家、生物学家和商业分析师等,也都已经成为 Python 程序员,并针对各自领域工作的需求改进并拓展了Python 工具包的使用。编程也逐渐成了一种社交活动,这在 JavaScript 社区和 Python 社区都得到了充分的证明和认可。

此外,由于机器学习是一个集成度特别高的学科,任何AI / 机器学习系统都需要从现实世界中提取大量的源数据并作为训练数据或系统输入,因此 Python 自带的丰富的依赖库能够帮助用户更好地访问和转换数据。

“Python允许使用者专注于解决现实问题”

第二位:PSF 社区的联合创始人及 eGenix 的首席执行官 Marc-Andre Lemburg ( @malemburg )

对于没有受过计算机科学专业学习的科学家来说,Python 也是非常容易理解。当你尝试驱动所需要研究的依赖库时,Python 能帮助你消除了许多必须处理的复杂性问题。

在 Numeric (现在是 NumPy ) 开始开发之后,增加了 IPython notebook (现在是 Jupyter notebook )功能, matplotlib 和其他的可视化工具能够让我们更直观地了解数据分布。Python 让数据科学家去思考解决问题的方法,而不是单纯提供这些解决方案所需的技术。

与其他领域一样,Python 也是一门理想的集成语言,它将各种技术绑定在一起,Python 允许用户关注问题的本身,而不是把时间花在实现细节上。除了为用户提供更方便的功能之外,Python 还是一个理想的粘合平台,为开发人员与外部库的低层次集成人员之间搭建连接。这主要是由于 Python 可以通过一个完整的 C API 来访问。

“Python对于数学及统计学专业的人员来说是非常容易使用的”

第三位:研究者;《 Python Machine Learning 》一书的作者 Sebastian Raschka ( @rasbt )

我认为在 AI / 机器学习领域,Python 语言受欢迎主要有两个原因,且这两个原因是非常相关的。

首先,Python 代码非常容易阅读和学习。

我认为,大多数从事机器学习和人工智能的研究人员都希望以最方便的方式来实现自己的想法。他们的重点是研究和应用程序的开发,编程只是实现这个想法的工具。编程语言的学习越轻松,入门门槛越低,就会更受初学者的喜爱。同样,这也适用于数学及统计学相关人员学习。

不仅如此,Python 代码可读极强,这有助于保持最新的机器学习和 AI 的现状,例如,实现AI / 机器学习的新思路往往需要相对复杂的算法,而在阅读相关代码时,语言越透明,可读性越好,代码的调试也越容易。

第二个主要原因是, Python 本身是一种非常易于访问的语言,而且开发者还在 Python 中封装了很多优秀的依赖库,这也使得我们的工作变得更容易。没有人愿意花时间从头开始重新实现基本算法 ( 除非是研究机器学习和人工智能的专业人士 ) 。大量 Python 依赖库的存在将帮助我们专注于算法的实现,这比“重新发明轮子”来的更高效。

此外,Python 也是用于实现更高效的 C / C ++ 算法及 CUDA / cuDNN 的最好的“胶水”语言,这就是为什么现有的机器学习 / 深度学习库能够在 Python 中高效运行的原因,这对于机器学习 / AI 领域的工作也是非常重要的。

总而言之,我会说 Python 是一种强大的语言,它可以让研究人员和从业者更专注于解决机器学习 / AI领域的相关问题,这是其他语言所无法做到的。

“Python更专注于科学计算”

第四位:ThoughtWorks 的首席技术官及PSF社区会员 Luciano Ramalho ( @ramalhoorg )

在我看来,Python 之所以能够如此受欢迎的最重要和最直接原因是其 NumPy 和 SciPy 库能够支持 scikit-learn 这样的项目,这几乎是目前解决机器学习问题所需的标准配置。

首先,创建 NumPy,SciPy,scikit-learn 和其他库的原因是因为 Python 的一些功能使其更专注于科学计算。此外,Python 有一个简单而一致的语法,可以让非软件工程师人员更容易使用这门编程工具。

另一个原因是 Python 的运算符重载功能,能使代码可读性更好,简洁性更高。此外,Python 的缓冲协议 ( PEP 3118 ) ,是外部库在处理类似数组的数据结构时与 Python 进行高效交互的标准。最后,Python 为科学计算提供了丰富的依赖库和全面的操作系统,这也促进了更多的数据科学家使用。

“Python 有着严格而一致的风格”

第五位:Red Hat 的高级软件工程师;SQLAlchemy 的开发者 Mike Bayer (@zzzeek)

在 AI / 机器学习领域,我们正尝试开发我们的数学和算法。我们将希望保留和优化的算法封装打包成依赖库,如 scikit-learn 。然后我们继续重复这个过程,并分享一些关于如何组织和思考数据的笔记。

高级的脚本语言对于人工智能和机器学习是非常适合的,因为我们可以快速迁移并进行改动,我们创建的大部分代码代表的是实际问题中相关的数学知识和数据结构,而不是所谓的代码模板,因此我们可以根据实际问题的需要,尝试更改脚本的代码来解决我们的问题。

像 Python 这样的脚本语言更适合 AI / 机器学习的工作,因为它严格而一致的语法风格。每个 Python 使用者都可以更好地理解对方的 Python 代码,而其他语言的语法有可能会导致混淆和不一致的编程范例,这就是 Python 较其他编程语言的优势所在。

此外,IPython notebook 等工具的可用性使得我们可以在全新的平台上重复并分享我们的数学和算法工作。Python 能够突出我们所要完成的工作核心,还能够最小化计算机指令的所有内容,这一切过程 Python 都能自动完成,不需要你考虑任何问题,这也是 Python 语言强大之处。

作者 | Rich Gall
原文链接


机器学习,就用Python!五大专家详解其优势何在相关推荐

  1. kmeans python interation flag_机器学习经典算法-logistic回归代码详解

    一.算法简要 我们希望有这么一种函数:接受输入然后预测出类别,这样用于分类.这里,用到了数学中的sigmoid函数,sigmoid函数的具体表达式和函数图象如下: 可以较为清楚的看到,当输入的x小于0 ...

  2. python语言编程基础-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  3. python数值转换机_用于ETL的Python数据转换工具详解

    ETL的考虑 做 数据仓库系统,ETL是关键的一环.说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具.回忆一下工作这么些年来,处理数据迁移.转换的工作倒 还真的不少.但是那些工作基本上是一次 ...

  4. python语言入门-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  5. python20191031_20191031:Python取反运算详解

    20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...

  6. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

  7. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  8. windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  9. python变量类型-Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

最新文章

  1. 绝密 | 机器学习老手不会轻易告诉你的12件事儿
  2. Dreamwerver8下定义表单实现第一个登陆页面
  3. CO07利润中心必输
  4. 基础教程推荐:跟微软大咖学BI
  5. Ubuntu 开机自动执行脚本
  6. windows .bat获取XCOPY返回值
  7. DataFrame字符串之分割split()、清洗drop()、合并concat()、重新建立索引reset_index() - (Python)
  8. bootstrap模态框 遮挡_Bootstrap Modal遮罩弹出层
  9. mysql修改服务器ip,mysql数据库修改服务器ip
  10. web页面实时刷新之browser sync
  11. web项目中js加载慢问题解决思路
  12. oracle范围分区表,Oracle表分区之范围分区-Oracle
  13. 第一回 钟碧诚 被迫上屋顶
  14. 【33】t-SNE原理介绍与对手写数字MNIST的可视化结果
  15. 模仿excel复合饼图 (饼-柱)
  16. java socket ipv6_Java支持IPv6研究
  17. 推荐系统之 FNN和DeepFM和NFM
  18. 利用java计算长方形的面积
  19. 浏览器发送请求过程解析
  20. 15组。政务一体化平台

热门文章

  1. Java版开发原生App支付
  2. 在列表显示某个内容,但数据表没有这个字段
  3. MongoDB系列:二、MongoDB常用操作练习
  4. platform_driver_register适配的两种方式及probe是否启动与硬件关系
  5. RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列
  6. 数据库分库分表(sharding)系列
  7. qt 控件 背景色 透明 除去边框
  8. 在tomcat中用jndi配置数据源启动java web程序
  9. CSipSimple 工程分析 1
  10. maven3 手动安装本地jar到仓库