为什么Python在AI领域如此受欢迎?


47

首先,我是学习AI的初学者,这不是一个以观点为导向的问题,也不是比较编程语言的问题。我并不是说那是最好的语言。但是事实是,大多数著名的AI框架都主要支持Python。它们甚至可以是多语言支持的,例如,TensorFlow支持Microsoft的Python,C ++或CNTK,支持C#和C ++,但是使用最多的是Python(我的意思是更多的文档,示例,更大的社区,支持等)。即使选择C#(由Microsoft和我的主要编程语言开发),也必须设置Python环境。

我在其他论坛上读到,Python是AI的首选,因为它既简化又简洁,适合快速原型开发。

我当时正在看AI主题电影(Ex_Machina)。在某个场景中,主角入侵房屋自动化的界面。猜猜现场使用哪种语言?蟒蛇。

那么,什么是Python与AI之间的关系呢?


请记住,电影中编程语言的表示通常与现实生活无关!看起来像神秘的gobbdegook可以安放人的东西通常都很好...
奥利弗·梅森

如果C#是您的主要编程语言,则您可能会对scisharpstack.org
henon

Answers:


32

Python带有大量内置库。许多库都用于人工智能和机器学习。其中一些库是Tensorflow(高级神经网络库),scikit-learn(用于数据挖掘,数据分析和机器学习),pylearn2(比scikit-learn更灵活)等。结束。

您可以在此处找到一些库。

Python对于OpenCV具有简单的实现。Python广受所有人欢迎的原因在于其功能强大且易于实现。
对于其他语言,学生和研究人员需要先学习该语言,然后才能使用该语言进行ML或AI。python并非如此。即使是具有非常基础知识的程序员也可以轻松地处理python。除此之外,与C,C ++或Java相比,某人花费在python上编写和调试代码的时间要少得多。这正是AI和ML的学生想要的。他们不想花时间调试语法错误的代码,他们想花更多时间在与AI和ML相关的算法和启发式算法上
不仅可以轻松获取库,还可以轻松获取在线教程,并且可以轻松获取接口的处理。人们构建自己的库并将其上传到GitHub或其他地方,以供他人使用。

所有这些功能使Python适用于它们。


10
“他们不想花时间调试语法错误的代码”-任何程序员都想这样做吗?Python是所有事物的最佳语言吗?我不相信。
Frank Puffer

24

实际上,所有最受欢迎和使用最广泛的深度学习框架都是在表面上用Python实现的,而在后台则使用C / C ++来实现。

我认为主要原因是Python广泛用于科学研究和研究领域,因为它很容易以最少的语法(例如Python)在语言中快速尝试新思想和代码原型。

此外,可能还有另一个原因。正如我所看到的,大多数关于AI的热炒在线课程都在推广Python,因为它对于新手程序员来说很容易。人工智能是销售编程课程的新营销热词。(提及AI可以向希望构建HAL 3000的孩子出售编程课程,但他们甚至不能编写Hello World或将趋势线放到Excel图形上。:)


4
“ .......关于AI的过度炒作的大多数在线课程都在推销Python,因为它对新手程序员来说很容易。AI是销售编程课程的新的营销热门语...” 。不能同意。
Emran Hussain

5

Python有一个正在开发的标准库,还有一些用于AI的库。它具有直观的语法,基本的控制流和数据结构。它还支持解释性运行时,无需标准编译器语言。这使得Python对于AI的原型算法特别有用。


关于Python的解释能力的好地方。似乎灵活性和开发速度远胜于编译语言的更大“马力”。
杜克(DukeZhou)

5

在我的分析工作中吸引我使用Python的是“全栈”工具,这些工具可以通过被设计为通用语言而相对于R作为领域特定语言来设计。实际的数据分析只是故事的一部分,Python具有丰富的工具和简洁的功能齐全的语言,可以从一种语言开始到最后使用一种语言(尽管使用C / Fortran包装器)。

在前端,我的工作通常从获取各种来源的数据开始,包括数据库,各种格式的文件或网络抓取。Python对此提供了很好的支持,并且大多数数据库或通用数据格式都有一个可靠且易于维护的接口库。R对于数据I / O似乎具有普遍的丰富性,尽管对于FITS,R软件包似乎没有处于积极的开发阶段(2.5年内没有发布FITSio吗?)。许多下一阶段的工作通常发生在组织数据和进行带有大量系统级交互的基于管道的处理的阶段。

在后端,您需要能够以切实的方式呈现大型数据集,对我而言,这通常意味着生成网页。我为两个项目编写了重要的Django Web应用程序,用于检查大型Chandra调查项目的结果。这包括很多刮擦(多波长目录)等等。这些仅在内部用于导航数据集和帮助源目录生成,但是在整个项目中它们是无价的。

转向特定于天文学的功能进行分析后,很明显该社区已牢固地支持Python。从个人和机构级别的可用软件包深度和开发活动级别可以看出这一点(http://www.astropython.org/resources)。考虑到可用的可用基础结构水平,我认为直接努力将最有用的R天文学统计工具移植到Python是有意义的。这将补充当前通过rpy2从Python调用R函数的功能。如果您有兴趣,我强烈建议您阅读本文,这里是比较编程语言的问题https://diceus.com/what-technology- is-b ... nd-java-r /希望对您有所帮助。


3

Python具有丰富的库,它也是面向对象的,易于编程。它也可以用作前端语言。这就是为什么它被用于人工智能。它不仅用于AI,还用于机器学习,软计算,NLP编程中,还用作Web脚本或道德黑客。


这是一个很好的答案,因为Python确实是排名第一的编程语言,尤其是对于Web脚本而言。起初,我担心您会向世界解释,AutoIt是完美的脚本语言,因为它用于Aimbot编写。
Manuel Rodriguez

2

这是因为python是一种现代的脚本化面向对象的编程语言,具有时尚的语法。与Java和C ++之类的结构编程语言相反,它的脚本编写特性使程序员可以非常快速地测试其假设。此外,有许多开源机器学习库(包括scikit-learn和Keras)扩大了python在AI领域的使用。


2

它是多种因素的综合,使之成为开发认知系统的很好选择。

  • 快速发展
  • 快速成型
  • 友好的语法,几乎具有人类可读性
  • 多样化的标准库和多范式
  • 它可以用作以C / C ++等编译语言编写的高性能后端的前端。

现有的高性能数值库(例如numpy等)已经为您完成了大量的工作,使您可以将更多精力放在系统的体系结构方面。

此外,Python周围有一个很大的社区和生态系统,这导致了针对不同类型任务的各种可用工具集。


0

我实际上更喜欢C进行机器学习。因为就像在生活中一样,在我们所知的世界中,它是由永无止境的“逻辑门”组成的(基本上就像掷硬币一样-将有2种可能的结果-不算第三个:落在一边!)。这也意味着,尽管宇宙似乎永无止境,但我们仍然永远不会停止寻找比最后一个最小的事物还小的事物,对吗?

因此,...在进行C语言编程时,我可以通过编码合并的较小代码段来更有效地控制内存使用,以始终形成更小,更高效的“代码片段”,这些代码片段构成了我们所谓的“生物学中的“细胞”(它具有可测量的功能,并且具有一些预设属性)。

因此,我喜欢在编程AI时针对低RAM使用率,低CPU使用率等进行优化。我仅使用C语言中的基本遗传算法进行前馈操作,但是我使用C ++语言编写的更高级的递归神经网络(仅由于使用“ std :: vector name;”的简单性,所以我编写了自己的cvector.c:https://pastebin.com/sBbxmu9T &cvector.h:https://pastebin.com/Rd8B7mK4和调试:https://pastebin.com/kcGD8Fzf -用gcc -o调试debug.c cvector.c编译)。在创建优化的神经网络时,这实际上帮助ALOT寻求优化CPU使用率(和总体运行时间)。

希望能帮助到你。

编辑: 所以我在某种意义上确实看到了与AlexPnt所看到的相反的东西,这涉及到探索“自我”领域内的可能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.