博舍

为什么说Python是学习人工智能的第一语言 人工智能语言python

为什么说Python是学习人工智能的第一语言

撰文|牛毅昕

配图|刘欣

随着人工智能的热度越来越高,Python这个词我们听到的越来越多,伴随着Python这个单词一起涌入我们视线的还有很多句子:人生苦短,我用Python;Python-人工智能第一语言等等这样的句子。Python真的如大家说的那样。这么厉害么?编程语言那么多,常用的也有10多种,Python凭什么能够座上人工智能第一语言的宝座?

在所有编程语言里,Python并不算年轻,从1991年发布第一个版本,至今已经快30年了。最近几年,随着人工智能概念的火爆,Python迅速升温,成为众多AI从业者的首选语言。那么Python到底有什么魔力呢?我们从四个要点看看为什么Python能够成为人工智能的第一语言。

01

简便,直观且通俗易懂,新手福音

跟其他语言比较,Python有着简便、直观且通俗易懂的优势。我们请出了以效率著称的C语言,和在业务层面有着优秀战绩的Java语言,让他们和Python做对比。我们分别使用3种语言写一个HelloWorld,看谁对新手更友好。

首先是C语言:

嗯,代码量还行,不算{}一共有三行代码。但是,int,main,return这都是什么跟什么?对于新手来说,一开始只能强行记忆了,没有任何理解的成分,我们只需要明白printf()使用来输出的,其他的即使解释了,也跟天书没什么区别。

接下来该Java语言上场了,同样还是输出HelloWorld的例子:

貌似比C语言的更复杂了。由于Java语言面向对象的特性,所以任何代码都必须要放在class里面,所以Java的固定代码比较多。同样对于新手来说,Java语言也是从记忆到理解的过程,也只能强行记忆。

C和Java语言看上去对新手不太友好,那么Python语言会有什么表现呢?相同的例子,会不会有不一样的结果呢?

就一句话,想输出helloworld,一行print语句就够了。没有C和Java那么多格式和需要额外记忆的东西。所以谁是新手福利,谁是菜鸟杀手呢?

02

编译VS解释

当然,仅仅是一个HelloWorld的话,C和Java的代码也多不了几行。可是不要忘了,C和Java都是编译型语言,代码运行前都必须先经过编译的环节。

什么是编译呢?原来,除了艰深难懂的机器语言,我们写下的程序计算机是无法直接读取的。而是要经过“翻译”的过程,计算机才能“理解”要执行的指令。充当“翻译官”的是编译器的程序。当高级语言源程序进入计算机,被编译器翻译成目标程序,以完成源码要处理的运算并取得结果。

对于C语言来说,在不同的操作系统上使用什么样的编译器,也是一个需要斟酌的问题。一旦代码被带到新的机器,运行环境和之前不同,还需要重新编译。有时候不同的计算机的编译环境有所区别,我们还得写文件修改源代码来满足编译环境的需求。

而Python是一门解释型语言。充当编程语言与机器语言的翻译官是解释器,解释器不会一次把整个程序翻译出来,而是每翻译一行程序叙述就立刻运行,然后再翻译下一行再运行,不产生目标程序。解释器就像是同声口译,编程语言每说完一句话,解释器立即翻译给计算机,计算机立即执行程序。

我们可以这么理解,Python语言写的程序是不需要装编译器来编译程序的,就可以直接运行。而C和Java则需要安装编译器,而且如果版本和环境有偏差的话,可能还需要修改源文件。所以对于新手来讲,使用Python这样的解释性语言更直观方便,而且也更省事。

03

强大的AI支持库

Python的另一个优势在于它具备了强大的AI支持库,有了支持库,Python就像瑞士军刀一样,在各种各样的场合都可以用到。我们举几个例子,看看Python的支持库有多强大吧。

数据神器NumPy

我们知道,不管是机器学习(MachineLearning,ML),还是深度学习(DeepLearning,DL),模型(Model)、算法(algorithm)、网络结构(structure)都可以用现成的,但数据是要自己负责I/O并传递给算法的。而各种算法,实际上处理的都是矩阵和向量。

NumPy由数据科学家TravisOliphant创作,支持维度数组与矩阵运算。结合Python内置的math和random库,堪称AI数据神器!有了它们,就可以放心大胆玩矩阵了!

使用NumPy,矩阵的转置、求逆、求和、叉乘、点乘……都可以轻松地用一行代码搞定,行、列可以轻易抽取,矩阵分解也不过是几行代码的问题。而且,NumPy在实现层对矩阵运算做了大量的并行化处理,通过数学运算的精巧,而不是让用户自己写多线程程序,来提升程序效率。

有了Python这种语法简洁明了、风格统一;连矩阵元素都可以像在纸上写公式一样;写完公式还能自动计算出结果的编程语言,开发者就可以把工作重心放在模型和算法上,不用操心运行的问题了。

可视化库Matplotlib

g

Matplotlib是Python的绘图库。它可与NumPy一起使用,提供了一种有效的MatLab开源替代方案。它也可以和图形工具包一起使用,如PyQt和wxPython。Matplotlib主要的作用就是强大的数据可视化~在做数据分析的时候可以用各种图表(条形图,散点图,条形图,饼图,堆叠图,3D图和地图图表…..)来展现分析结果。

可以说,Matplotlib在数据科学的领域是非常好用的数据可视化工具。

Python是一门非常适合人工智能开发的语言,人工智能所需数据获取、数据分析、数据建模的流程都可以通过Python的类库轻松解决:

网络爬虫库:requests、scrapy、selenium、beautifulSoup

人工智能最重要的是数据,怎么获取巨大的数据量呢?Python的网络爬虫类库就派上用场了。爬虫是一种网络机器人,它可以像真人访问网络一样源源不断地抓取你所需要的信息。用Python制作网络爬虫,你就可以更方便地获得人工智能时代的最重要的资源——数据。

数据处理库:Numpy、scipy、pandas、matplotlib

网络爬虫获取海量数据,而处理和分析数据的工作Python同样可以解决。数据处理相关的库能够帮助你更加直观地分析数据。这些库分别可以进行矩阵计算、科学计算、数据处理、绘图等操作,有了它们,你就可以一步步开始把数据处理成你需要的格式。

建模库:nltk、keras、sklearn

完成数据可视化处理后,我们就需要利用这些数据进行建模。这些库主要是用于自然语言处理、深度学习和机器学习的,把这些用好了,你的模型就构建出来了。

这些类库为我们提供了从数据收集、数据处理和建立模型的一条龙操作,掌握它们,我们就可以在人工智能的海洋里畅游了。

04

规模效应

根据StackOverflow网站的来自高收入国家问题阅读量的主要编程语言趋势统计,可以看出,近年来,Python已然成为目前发达国家增长最快的编程语言。

由图可见,2012年之后,对于Python相关问题的浏览量迅速增长,从时间上看,这一趋势正好和近几年人工智能的发展重合。

语言简单易学,支持库丰富强大,这两大支柱从早期就奠定了Python的发展基础。技术的普及推广就像滚雪球,早期的积累相对缓慢,一旦过了临界点,就是大爆发。别的不说,就说现在tensorflow,caffe之类的深度学习框架,主体都是用Python来实现,提供的原生接口也是Python。

正是由于上述4个特点,Python在人工智能领域中已经遥遥领先其他的语言占据了头把交椅。

Python有如此之多的功能,我们从哪开始学习起呢?不用担心,Python为教育者专门准备了“turtle海龟绘图”类库,它继承了经典的编程学习语言Logo,是由浅入深的好工具。今天,科技学堂Python学习课程《Python-Turtle图形编程入门》正式开课,点击下面小程序报名课程吧!

科技学堂

科技辅导员在线学习平台

微信号:sciclass

欢迎订阅和分享

中国青少年科技辅导员协会

CACSI1981在看

人工智能常用的5种语言

自从去年,AlphaGo打遍天下棋手无对手,人工智能的风头就一直无人能及。在刚刚过去的IT领袖峰会上,BAT三位大佬都看好人工智能的未来发展。今年年初,百度就做了一个大动作,在医疗方面押宝人工智能,所以在这次峰会上李彦宏也发声称互联网是道开胃菜,人工智能才是主菜。

人工智能是一个很广阔的领域,很多编程语言都可以用于人工智能开发,所以很难说人工智能必须用哪一种语言来开发。选择多也意味着会有优劣之分,并不是每种编程语言都能够为开发人员节省时间及精力。所以我们整理了5种比较适用于人工智能开发的编程语言,希望能够对你有所帮助。

如果你想要系统地学习人工智能,那么推荐你去看床长人工智能教程。非常棒的大神之作。教程不仅通俗易懂,而且很风趣幽默。

Python

Python由于简单易用,是人工智能领域中使用最广泛的编程语言之一,它可以无缝地与数据结构和其他常用的AI算法一起使用。

Python之所以时候AI项目,其实也是基于Python的很多有用的库都可以在AI中使用,如

Numpy提供科学的计算能力,Scypy的高级计算和Pybrain的机器学习。

另外,Python有大量的在线资源,所以学习曲线也不会特别陡峭。

Java

Java也是AI项目的一个很好的选择。它是一种面向对象的编程语言,专注于提供AI项目上所需的所有高级功能,它是可移植的,并且提供了内置的垃圾回收。另外Java社区也是一个加分项,完善丰富的社区生态可以帮助开发人员随时随地查询和解决遇到的问题。

对于AI项目来说,算法几乎是灵魂,无论是搜索算法、自然语言处理算法还是神经网络,Java都可以提供一种简单的编码算法。另外,Java的扩展性也是AI项目必备的功能之一。

Lisp

Lisp因其出色的原型设计能力和对符号表达式的支持在AI领域崭露头角。LISP作为因应人工智能而设计的语言,是第一个声明式系内函数式程序设计语言,有别于命令式系内过程式的C、Fortran和面向对象的Java、C#等结构化程序设计语言。

Lisp语言因其可用性和符号结构而主要用于机器学习/ILP子领域。著名的AI专家彼得·诺维奇(PeterNorvig)在其《ArtificialIntelligence:Amodernapproach》一书中,详细解释了为什么Lisp是AI开发的顶级编程语言之一,感兴趣的朋友可以自行查看。

Prolog

Prolog与Lisp在可用性方面旗鼓相当,据《PrologProgrammingforArtificialIntelligence》一文介绍,Prolog一种逻辑编程语言,主要是对一些基本机制进行编程,对于AI编程十分有效,例如它提供模式匹配,自动回溯和基于树的数据结构化机制。结合这些机制可以为AI项目提供一个灵活的框架。

Prolog广泛应用于AI的expert系统,也可用于医疗项目的工作。

C++

C++是世界上速度最快的编程语言,其在硬件层面上的交流能力使开发人员能够改进程序执行时间。C++对于时间很敏感,这对于AI项目是非常有用的,例如,搜索引擎可以广泛使用C++。

在AI项目中,C++可用于统计,如神经网络。另外算法也可以在C++被广泛地快速执行,游戏中的AI主要用C++编码,以便更快的执行和响应时间。

写在最后:

其实为AI项目选择编程语言,其实很大程度上都取决于sub-field,对于编程语言的选择要从大局入手,不能只考虑部分功能。在这些编程语言中,Python因为适用于大多数AIsub-field,所以渐有成为AI编程语言之首的趋势,而Lisp和Prolog因其独特的功能,所以在部分AI项目中卓有成效,

人工智能算法(Python语言版) | 教学大纲

课程目标2:能够正确掌握求解实际人工智能相关领域中工程问题的经典计算机算法的原理和步骤,理解其基本思想、适用情形和基本步骤;能够正确使用伪码设计经典的计算机算法、并分析其复杂度;能够正确编写程序实现所设计的经典计算机算法,进而正确求解实际工程问题。

课程目标3:能能够正确掌握求解分类、聚类、异常检测、频繁模式挖掘、链接分析、概率推理等问题的经典数据挖掘算法的原理、思想和步骤;能够理解数据驱动的理念,正确描述数据挖掘的工程问题;能够正确使用伪码设计经典的数据挖掘算法、并分析其复杂度;能够正确编写程序实现所设计的数据挖掘算法,进而正确求解实际中工程问题。

课程目标4:能够正确掌握求解异常检测、数据降维、目标检测、问答系统和图分析等问题的经典深度学习算法的原理和步骤;能够理解深度神经网络的基本框架和深度学习算法的基本思想和理念,正确描述上述智能分析的工程问题;能够正确使用伪码设计经典的深度学习算法、并分析其复杂度;能够正确编写程序实现所设计的深度学习算法,进而正确求解实际中工程问题。

2

教学内容及进度安排

3

课程考核

4

教材及参考资料

[1]胡矿,岳昆,段亮,武浩.人工智能算法(Python语言版)[M].北京:清华大学出版社,2022.

[2]LevitinA..算法设计与分析基础(第三版)[M].潘彦,译.北京:清华大学出版社,2015.

[3]BlumA,HopcroftJ,KannanR.Foundationsofdatascience[M].CambridgeUniversityPress,2020.

[4]岳昆.数据工程:处理、分析与服务[M].北京:清华大学出版社,2013.

[5]王晓东.算法设计与分析[M].北京:清华大学出版社,2014.

[6]HANJ,KAMBERM,PEIJ.数据挖掘:概念与技术(第3版)[M].范明,孟小峰,译.[M].北京:机械工业出版社,2012.

[7]GoodfellowI,BengioY,CourvilleA.赵申剑,黎彧君,符天凡,等译.深度学习[M].北京:人民邮电出版社,2017.

5

附录1:各类考核评分标准表

参考教材

《人工智能算法(Python语言版)》

作者:胡矿,岳昆,段亮,武浩编著

定价:59.8元

↑↑↑扫码天猫优惠购书↑↑↑

在公众号书圈后台回复【9787302608301】,下载本书配套的教学资源返回搜狐,查看更多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇