点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

是什么让数据科学如此喜爱Python?是语言本身,还是生态系统,或是相关的开发过程?

在许多软件开发领域,包括脚本和进程自动化、网站开发以及通用应用程序等,Python越来越受欢迎。而且最近Python成为了机器学习的首选语言。在这篇文章中我们将来看一看Python成为该领域主宰的四大原因。

Python让编程更简单

Python成功的首要原因是:这门语言让编程变得很简单,而且使之一直保持简单。

Python刚刚问世的时候,这门语言一个主要的目标就是易读易写。大家读的代码远比写得多,尤其是当代码从一个团队手中递交到另外一个团队的情况下。如果你继承了由其他开发者开发的机器学习的应用程序,尤其是那些结合了许多第三方组件的程序,或是拥有大量定制业务逻辑的程序,那么在理解程序时编程语言造成的障碍越小越好。优秀的Python代码可以做到这一点,甚至远比其他语言出色。

Python的语言设计在机器学习中很有帮助的另外一个关键因素是,它提供了高层的、基于对象的任务抽象。机器学习应用程序呈现复杂、多阶段的工作流程。优秀的语言应该让人们把更多的精力放在需要完成的内容上,而对实现细节的关注越少越好。Python让你与手头的工作保持了一定的距离,所以你不会一眼望过去就被吓到。

Python提供了机器学习的代码库

Python成为机器学习的主力的第二个主要原因,是因为Python提供大量机器学习的代码库和框架。以老牌的Scikit-learn为首,每个伟大的机器学习和深度学习的框架,包括TensorFlow、CNTK、Apache Spark MLlib等,它们要么在Python享有一级的待遇,要么含有Python API。例如PyTorch等一些框架,正如名字的字面含义,是专门用Python编写的,而且性能上并没有打折扣。(下面我们会有更多关于性能的讨论。)

Python的代码库生态系统可以让你在工作空间内,简单地的通过一行命令安装很多的这些框架。还有一些最近的新进展,在Python改变了它的代码库打包机制以后,现在可以更加容易地分发那些依赖于特定平台的文件,而这是许多机器学习框架所必须的。

当然,这个代码系统还有一些不足的地方,因此产生了很多变通方案。例如Anaconda等发行版有自己的打包机制,可以很好地处理对不属于Python生态系统的可执行文件的依赖。但是,总的来说,Python打包生态系统为机器学习提供了一定程度的便利性,这与Python一贯坚持的简易性和便利性很相符。

Python可以处理内存管理

由Python等高级语言和使用它们的工作提供的抽象扩展到了很多其他领域。在Python中,程序员看不到内存管理的细节,因此他们可以将更多精力放在手边的问题上。

Python的内置结构和数据抽象——列表、集合、字典和元组——所使用的内存都由Python运行时管理。Java的工作方式大致相同,但是一般来说Python比Java更简洁,在用户和结果之间造成的障碍也更少。

与执行实际的计算工作相比,更多时候机器学习的应用使用Python的内存管理结构来组织应用程序的逻辑或数据流。大部分繁重的计算工作都由外部代码库(如NumPy)来处理(更多内容请见下文)。但是,语言和运行时提供的抽象意味着这类的内存管理由底层自动处理,用户操作层根本不会觉察。

尽管如此,Python内部的内存管理方式很值得我们去了解。Python的易用性的代价是效率上的损失,而且这种代价有时并不是很明显。为了获得最佳性能,你最终需要“揭开神秘的面纱”,探索底层的抽象。

有关这方面的一些示例,请参阅Theano机器学习代码库的资料“Python的内存管理”(http://deeplearning.net/software/theano/tutorial/python-memory-management.html),虽然Theano已停止开发,但是许多讨论过的原则可以广泛应用。另一种优化性能的方法是Cython,这个实用的代码库可以将Python代码转换成C。Cython可以一些通过Python不具有的常见方式,直接访问C的内存管理和数据结构。

Python的速度不是问题

很多人这样形容Python:“很方便,但是不够快。”这句话的大部分是正确的。在使用Python的时候,一般你不得不为了简易的开发而放弃部分性能。所以有人可能会问,如果Python不是最快的语言,为什么我们用它处理计算密集型的工作,比如机器学习?

简单的答案是:计算密集型的工作并不是由Python完成的。

用Python编写的机器学习应用程序中,绝大多数的实际计算工作都是由别的代码库执行的,这些代码库通常是由C、C++或Java编写的,Python只是打包并与之交互。应用程序中在Python中运行的部分通常都对性能不是很敏感——一般它们负责安装或删除、命令和控制、协调各个组件、记录日志和报告,等等。

但是,如果应用程序花费大量时间在Python和其他快速的代码库之间来来回回,那么在Python中使用外部的代码库仍然会导致性能问题。每次环境上下文切换都会导致性能下降,所以开发人员需要将Python与外部API的交互次数降到最低。尽管如此,但这不是机器学习特有的问题,这是Python与其他语言的常见问题,所以发现这个问题并不难。

根据情况需要,我们还可以通过各种工具加速纯Python代码,比如Cython(将Python转换成C)、Numba(用于JIT加速以数学为中心的代码)、PyPy(用于JIT加速Python代码)等等。

总的来说,让Python在机器学习领域大放异彩的不仅是某个功能,而是Python整个语言包:它是一种易学易用的语言,它的生态系统拥有的第三方代码库可以涵盖广泛的机器学习用例和性能,可以帮助你很好地完成手头的工作。

原文:https://www.infoworld.com/article/3269316/python/why-you-should-use-python-for-machine-learning.html?nsdr=true

作者:Serdar Yegulalp

译者:弯月

————— CSDN 课程推荐 —————

在此,诚意向大家推荐一个由 CSDN 学院重磅打造的 Python 全栈工程师精品课」,计时 4 个月,已有 1136 位学员加入。Python 技术专家张涛、金牌讲师邹义良两位讲师由浅入深地为大家详细讲解 Python 整套开发流程,包含 Python 基础、Python Web 开发、Python 爬虫技术、Python 自动化运维、Python 数据挖掘与数据学习五大模块,阶段性项目实战能够让你通过四个月的学习,成就真正的 Python 全栈工程师。

现在,扫描下方二维码或点击「阅读原文」即可咨询课程顾问领取试听资格或直接报名参加。更有豪华福利等你来领,加顾问好友激活 2000 元专属优惠券

Python 凭什么打败 Java、C/C++,成为机器学习的唯一语言?相关推荐

  1. Python超过R,成为数据科学和机器学习的首选语言!

    | 全文1765共字,建议阅读时长3分钟 | 近期,数据挖掘资讯网站KDnuggets开展了一项调查,问题是"2016年和2017年,在数据分析.数据科学和机器学习工作中,你使用 ...

  2. python写网站和java写网站的区别-为什么说Java和Python现阶段并不适合普通网站建设...

    经过20多年的发展,网站开发技术已经非常成熟,用于网站制作的程序语言也有很多.常见的当然是php和asp.net,特别是php程序语言,虽然其已经有很多年历史也历经多次迭代升级,但在凭借其开源.轻巧等 ...

  3. python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...

    都知道现在最火爆的是人工智能.大数据.而人工智能和大数据主要用的语言就是Java和Python.今天我们就来分析一下,当前java,python和大数据,哪个就业前景更好?自己该学哪一个? Java和 ...

  4. java和python工资-python为什么叫爬虫 python工资高还是java的高

    人工智能的现世,让python学习成风,由于其发展前景好,薪资高,一时成为众多语言的首选.Python是一门非常适合开发网络爬虫的编程语言,十分的简洁方便所以是网络爬虫首选编程语言!不少新手常问pyt ...

  5. python程序员薪资-python工资高还是java?

    说起来,随着人工智能和大数据逐渐进入人们的眼中,越来越多的人看到互联网未来大好发展趋势,而想要学习一门技术来进入其中,以期分一杯羹.但是,作为人工智能和大数据的重要编程语言,Python和Java,该 ...

  6. php和python和java-python和java,php,c,c#,c++的对比

    1.C语言,它既有高级语言的特点,又具有汇编语言的特点,它是结构式语言.C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素.C++在这方面做了改进,在保 ...

  7. python字符串赋值与java区别_java和python细节总结和java中string 的+操作

    //JAVA中对arrayList的初始化,能够分配空间,不能之间让一个ArrayList赋值给另外一个ArrayList,这样是引用赋值,当一个改变时候,另外一个也改变 List tmp = new ...

  8. python去除php、java、js、html、vue等类型注释字符方法实例

    本篇文章主要讲解:python去除php.java.js.html.vue等所类型注释字符方法实例 作者:任聪聪 可以处理php.java.python.js.html.vue.node.mysql等 ...

  9. python全栈和java全栈_全栈和python的区别

    首先我们来e68a84e8a2ad62616964757a686964616f31333366303138看看Python在公司的一些基础应用: 1.验证算法:就是对公司一些常见设计算法或者公式的验证 ...

最新文章

  1. 中国城市人口分布区域分析
  2. 通过配置文件避免硬编码的一个例子
  3. MongoDB文件操作(支持大于4M数据)
  4. python对Excel数据进行读写操作
  5. 美图技术博客之地理空间距离计算优化
  6. GTK实现绘图功能(draw.c)
  7. PDF免费转word方法
  8. MIL图像库的使用——配合图像采集卡
  9. 分布式系统的时间问题
  10. 高性能计算服务器计算费价格,高性能计算云服务器价格表
  11. python绘图矩阵散点图_Python数据可视化:用Seaborn绘制高端玩家版散点图
  12. 让qt应用程序拥有管理员权限
  13. React 入门学习
  14. Linux 编程 —— libstdc++.so.6: version `CXXABI_1.3.11‘ not found
  15. 访问github时出现隐私设置错误您的连接不是私密连接问题的解决方案
  16. (int*)、(int *)和(int **)的区别
  17. Python--print(xx)内容为空,打印不出内容;原因是文件句柄对象在迭代后,对象内的数据会逐渐清空
  18. Office 2016安装
  19. mye clipse中svn的使用
  20. 我叫mt4服务器维护时间,我叫MT4维护更新公告 维护更新内容及时间

热门文章

  1. 人脸关键点标注工具_谈谈人脸关键点的江湖
  2. uniaccess安全助手卸载_如何彻底卸载360
  3. lua笔记1 基础概念
  4. 水刀行业调研报告 - 市场现状分析与发展前景预测
  5. 厨房炒锅行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. 做游戏,学编程(C语言) 4 flappy bird
  7. oracle form执行后左上角没出现oracle标记,Oracle FORM 开发技巧(1)
  8. SQL注入学习part06:(结合sqli-libs学习:51-61关)
  9. Python 学习线路图,码住!
  10. 顶配售价 18499 元,用上 M1 的 iPad Pro 性能与价格“直逼”电脑,这届苹果发布会有你喜欢的吗?