当前位置:
文档之家› 第2章 人工智能程序设计语言
第2章 人工智能程序设计语言
▪ Python支持网络编程,支持矢量编程,尤其是带有丰富的程序库,诸 如开源机器学习算法库scikit-learn,用于自然语言处理的NLTK库,统 计数据可视化库seaborn,可用于高效训练图像处理的神经网络单元 的Theano库,科学计算的核心库SciPY、NumPY、matplotlib、 pandas以及GPU并行库等,使得编程方便快捷,程序运行效率高,功 能强大。特别是Python可以使用开源深度学习框架TensorFlow方便地 编制深度学习程序。
2.3.2 Python程序举例
例程1 求两个整数的最大公约数程序。 #这是一个求两个整数的最大公约数的Python程序 i1=eval(input(“输入第一个整数:”)) i2=eval(input(“输入第二个整数:”)) c=1 #设置一个临时计算器c,以存放当前能够整除所给两 个整数的那个最大数 d=2 #设d为除数,置初值为2
student(john). like(mary,music).
abc. repeat.
2. 规则 (rule) 格式 谓词名 (项表):-谓词名 (项表){, 谓词名 (项表)}. 功能 一般表示对象间的因果关系、蕴含关系或对应关系。 举例:
bird(X):-animal(X),has(X,feather). grandfather(X,Y):-father(X,Z),father(Z,Y).
PROLOG程序一般由一组事实、规则和问题组成。
举例: likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,reading),likes(X,music). friend(john,X):-likes(X,sports),likes(X,music). ?-friend(john,Y).
第2章 人工智能程序设计语言
2.1 概述 2.2 知识工程经典语言PROLOG 2.3 机器学习流行语言Python
2.1 概述
2.1.1 函数型语言 典型的函数型语言如LISP语言。LISP程序由一组函
数组成,程序的执行过程就是一系列的函数调用和求值 过程。 2.1.2 逻辑型语言
典型的如PROLOG语言,在PROLOG程序中一般不 需告诉计算机“怎么做”,而只需告诉它“做什么”。 因此,PROLOG亦属陈述性语言。
while d<=i1 and d<=i2: if i1%d==0 and i2%d==0: #判别d是否能整除i1和i2 c=d #用d更新c d +=1 #给d加1,继续循环
gcd=c #循环结束后,将c赋予gcd作为两整数的最大公约数
#输出最终结果
if gcd==1: print(i1, “和”, i2, “互质”)
2.1.5 混合型语言 1. 函数型与逻辑型相结合的语言 2. 函数型与面向对象相结合的语言 3. 逻辑型与面向对象相结合的语言 4. 计算型与面向对象型相结合的语言 典型的如Python。
2.2 知识工程经典语言PROLOG
2.2.1 PROLOG的语句
1. 事实(fact)
格式 谓词名 (项表). 功能 一般表示对象的性质或关系。 举例:
则求解目标为 friend(john,Y).
图 2-1 PROLOG程序运行机理图解示例
2.3 机器学习流行语言Python
2.3.1 Python语言的特点和优势
▪ Python语言是新西兰的Guido van Rossum于1990年创建,现在由一 个志愿者团队开发和维护。
▪ Python是一个解释型面向对象程序设计语言,也是一种跨平台脚本语 言,其程序代码可以在Windows、Linux、Mac OS X等各类操作系统 上运行。
circle4=Circle(4)
a4=circle4.getArea() circle5=Circle(5) a5=circle5.getArea()
list1=list([a1,a2,a3,a4,a5]) #创建一个列表list1 #连续输出上面5个圆的半径和面积 for i in range(1,5,1):
print(“半径为”, i,”的圆的面积是”, lisБайду номын сангаас1[i]) main() #运行主函数main
例如:下面的两个谓词 pre1(″ob1″,″ob2″,Z). pre1(″ob1″,X,Y).
只有当变量X被约束为“ob2”,且Y、Z的约束值相同或者 至少有一个是自由变量时,它们才是匹配合一的。
(3) 回溯 PROLOG程序的运行过程。仍以上面的程序为例。设所 给的询问是 ?-friend(john,Y). (john和谁是朋友?)
2.2.3 PROLOG程序的运行机理
(1) 自由变量与约束变量
(2) 匹配合一
两个谓词可匹配合一,是指两个谓词的名相同,参量 项的个数相同,参量类型对应相同,并且对应参量项还满 足下列条件之一:
① 如果两个都是常量,则必须完全相同。 ② 如果两个都是约束变量,则两个约束值必须相同。 ③ 如果其中一个是常量,一个是约束变量,则约束值与 常量必须相同。 ④ 至少有一个是自由变量。
a1=circle1.getArea() #向circle1发消息请求其面积并将返 回结果赋给a1
circle2=Circle(2) #生成一个半径为2的类Circle的实例对象 (圆)circle2
a2=circle2.getArea()
circle3=Circle(3)
a3=circle3.getArea()
else: print(i1, “和”, i2, “的最大公约数是”, gcd)
例程2 圆类及实例 from Figures import Circle #从程序文件Figures.py中导入 (圆)类Circle def main (): #定义主函数main
circle1=Circle(1) #生成一个半径默认为1的类Circle的实 例对象(圆)circle1
run:-start,step1(X),step2(X),end.
3. 问题(question) 格式 ?- 谓词名(项表){, 谓词名(项表)}. 功能 问题表示用户的询问,它就是程序运行的目标。 举例:
?-student(john). ?-like(mary,X).
2.2.2 PROLOG的程序
2.1.3 面向对象语言 由于面向对象程序设计的类、对象、继承等概念,与
人工智能特别是知识表示和知识库产生了天然的联系。因 而,面向对象程序设计语言也就成为一种人工智能程序设 计语言流行的如C++、Java语言。 2.1.4 计算型语言
就是面向数值计算的程序设计语言。典型的计算型 语言如MATLAB。计算型语言属于过程性语言,长于描述 算法,而且本身又自带算法库,所以是机器学习的常用编 程语言。