人工智能导论-动物识别专家系统

news/2024/11/18 8:14:10/

动物识别专家系统实验

这个人工智能导论实验可算是折磨了我许久,关键是我一直想不明白该如何推理。
在某天的晚上,我去对象那里上晚自习,突然灵感大开。由于电脑没有电了,我就手绘了一个系统结构图,并且想到了解决问题的方案。
当晚回宿舍我就立马打开电脑,写完了一半。第二天清早又逐渐完善了一些bug.
后来。。。老师说让我们把动物特征信息保存到数据库中,但是我们那时候还没学数据库,于是我把动物信息保存到了文件中。
如果你认为老师的折磨到现在就结束的话,那你就太天真了。没过多久。老师又提出了图形界面的要求,我那个时候真的。。。写不出来这个玩意,现在想想,大不了就设计一个比较好看web应用,对接数据库进行增删改查。但是那时还是年轻,我就按照这个不加图形界面的交上去了,最后成绩还是过九十了,结果很满意。
展示代码之前,需要先写运行代码所需要的推理文件。

f1.csv的内容如下:
有毛
有奶
有羽毛
会飞
会生蛋
吃肉
犬牙利爪
眼睛向前
反刍食物
有蹄
黄褐色
有暗斑点
黑条纹
长腿长脖子
黄褐色暗斑
有黑白条纹
不会飞
善游泳
黑白色
f2.csv的内容如下:
哺乳类
鸟类
肉食类
有蹄类
蜘蛛毒
长毛象
阿拉斯加犬
f3.csv的内容如下:
肉食动物
偶蹄类
有蹄类
金钱豹
老虎
长颈鹿
斑马
鸵鸟
企鹅
信天翁
higher1.csv的内容如下:
吃肉	哺乳类	肉食动物		
犬牙利爪	眼睛向前	肉食动物		
反刍食物	哺乳类	偶蹄类		
黄褐色	有暗斑点	肉食类	金钱豹	
黄褐色有黑条纹	肉食类	老虎		
长腿长脖子	黄褐色暗斑	有蹄类	长颈鹿	
有黑白条纹	有蹄类	斑马		
不会飞	长腿长脖子	鸟类	鸵鸟	
不会飞	善游泳	黑白色	鸟类	企鹅
善飞	鸟类	信天翁		
middle1.csv的内容如下:
有毛	哺乳类	
有奶	哺乳类	
有羽毛	鸟类	
会飞	会生蛋	
有蹄	哺乳类	
红色	有毒	毒蜘蛛
体型巨大	长长牙	长毛象
灰白色	有毛	阿拉斯加犬
RDsort.txt的内容如下:
有毛发 哺乳动物
有奶 哺乳动物
有羽毛 鸟
会飞 下蛋 鸟
吃肉 食肉动物
有犬齿 有爪 眼盯前方 食肉动物
哺乳动物 有蹄 有蹄类动物
哺乳动物 嚼反刍动物 有蹄类动物
哺乳动物 食肉动物 黄褐色 暗斑点 金钱豹
哺乳动物 食肉动物 黄褐色 黑色条纹 虎
有蹄类动物 长脖子 长腿 暗斑点 长颈鹿
有蹄类动物 黑色条纹 斑马
鸟 善飞 信天翁
鸟 会游泳 不飞 黑白二色 企鹅
鸟 长脖子 长腿 黑白二色 不飞 鸵鸟

想要运行程序,需要将上述文件和代码放在同一文件目录下。
下面展示一下我的代码:

'''
动物识别系统
时间 2019/12
开发者:时彦钊
'''
#检测f是否在t中的条件方法
def isinf(f,t):i=0for thing in f:if thing in t:i+=1else:return Falseif i==len(f):return True
#删除list的element元素
def listpop(list,element):list2=[]for i in list:if i!=element:list2.append(i)return list2
#系统开始执行
print("欢迎进入动物识别系统 ")
print("功能包括:1动物识别、2增加特征、3更改特征、4特征查询")
fun=eval(input("请选择功能:"))
while(True):#首先,从文件中读取信息f1 f2 f2 middle higherf11 = open("f1.csv")f1= []for i in f11:i = i.replace("\n", "")f1.append(i)f11.close()f22 = open("f2.csv")f2 = []for i in f22:i = i.replace("\n", "")f2.append(i)f22.close()f33 = open("f3.csv")f3 = []for i in f33:i = i.replace("\n", "")f3.append(i)f33.close()# 推理列表middle1 = open("middle1.csv")middle = []for i in middle1:m = ""middle0 = []for j in i:if (j == ","):if m!="":middle0.append(m)m = ""if (j == "\n"):breakif (j != ',' and j != "\n"):m += jmiddle.append(middle0)middle1.close()higher1 = open("higher1.csv")higher = []for i in higher1:m = ""higher0 = []for j in i:if (j == ","):if (m != ''):higher0.append(m)m = ""if (j == "\n"):breakif (j != ',' and j != "\n"):m += jhigher.append(higher0)higher1.close()#读取成功if(fun==1):character=[]#输入特征信息while(True):inputs=input("输入特征信息:")if inputs == "0":breakcharacter.append(inputs)#输入完成#推理机for lists in middle:t=sorted(lists[:-1])if isinf(t,character):print(t,end="")print("推导出{}".format(lists[-1]))for delet in t:character=listpop(character,delet)character.append(lists[-1])for lists in higher:t = sorted(lists[:-1])if t==sorted(character):print(t, end="")print("推导出{}".format(lists[-1]))for delet in t:character=listpop(character,t)character.append(lists[-1])#推理完成elif(fun==2):addcharacter = []#输入需要添加的信息while (True):inputs3 = input("输入需要添加的特征信息:")if inputs3 == "0":breakaddcharacter.append(inputs3)print("输入完成")a=addcharacter[-1]#如果新加的规则是在中级推理中的if a in f2:middle.append(addcharacter)renewmid = open("1.csv", "w")m = ""for i in middle:for h in range(len(i)):if (i[h] == i[-1]):m += i[h]m += "\n"else:m += i[h]m += ","renewmid.write(m)renewmid.close()print("添加完成")#如果新加的规则是在高级推理中的elif a in f3:higher.append(addcharacter)renewhig = open("higher1.csv", "w")m = ""for i in higher:for h in range(len(i)):if (i[h] == i[-1]):m += i[h]m += "\n"else:m += i[h]m += ","renewhig.write(m)renewhig.close()print("添加完成")#新加的是面向新事物的规则else:f2.append(addcharacter[-1])#在f2中增加新名称renewf0=open("f2.csv","a")renewf0.write("\n"+addcharacter[-1])renewf0.close()#在中级推理中加入新规则middle.append(addcharacter)renewmid = open("middle1.csv", "w")m = ""for i in middle:for h in range(len(i)):if (i[h] == i[-1]):m += i[h]m += ",\n"else:m += i[h]m += ","renewmid.write(m)renewmid.close()print("添加完成1")#改变化规则elif(fun==3):print(middle)k=1#输入待改规则进行匹配addcharacter = []while (True):inputs3 = input("输入需要改造的特征信息:")if inputs3 == "0":breakaddcharacter.append(inputs3)if addcharacter[-1] in f2:for i in range(len(middle)):if addcharacter==middle[i]:print("找到对应公式")#匹配成功changecharacter = []while (True):inputs4 = input("输入改造后的特征信息:")if inputs4 == "0":breakchangecharacter.append(inputs4)#在文件中加入改造后的规则middle[i]=changecharacterrenewmid = open("middle1.csv", "w")m = ""for i in middle:for h in range(len(i)):if (i[h] == i[-1]):m += i[h]m += ",\n"else:m += i[h]m += ","renewmid.write(m)renewmid.close()else:k=0elif addcharacter[-1] in f3:for i in range(len(higher)):if addcharacter == higher[i]:print("找到对应公式")k=1changecharacter = []while (True):inputs5 = input("输入改造后的特征信息:")if inputs5 == "0":breakchangecharacter.append(inputs5)higher[i] = changecharacterrenewhig = open("higher1.csv", "w")m = ""for i in higher:for h in range(len(i)):if (i[h] == i[-1]):m += i[h]m += ",\n"else:m += i[h]m += ","renewhig.write(m)renewhig.close()# 用户提示elif (fun == 4):print("*****************************")print("动物的信息如下:")for i in middle:for l in range(len(i)):if (i[l] != i[-1] and i[l] != i[-2]):print(i[l], end=",")elif i[l] == i[-2]:print(i[l], end=" 推理出 ")elif i[l] == i[-1]:print(i[l], end="\n")for i in higher:for l in range(len(i)):if (i[l] != i[-1] and i[l] != i[-2]):print(i[l], end=",")elif i[l] == i[-2]:print(i[l], end=" 推理出 ")elif i[l] == i[-1]:print(i[l], end="\n")print("**********************************************")elif(fun==0):break;print("功能包括:1动物识别、2增加特征、3更改特征、4特征查询")fun = eval(input("请选择功能:"))

http://www.ppmy.cn/news/271957.html

相关文章

【深度学习入门案例】动物种类识别

一、定义待预测数据 数据集: 代码: # 待预测图片 test_img_path [./img/img.png, ./img/img_1.png,./img/img_2.png,./img/img_3.png,./img/img_4.png]import matplotlib.pyplot as plt import matplotlib.image as mpimg# 展示其中大狮子图片 img1 …

工业机器人的“慧眼”——机器视觉

早在20世纪80年代美国国家标准局就预计,检测任务的80%乃至90%将由视觉测量系统来完成,该预测至今已基本变成现实。近年来,随着机器视觉技术的迅速发展,机器视觉技术的快速性、精确性、智能化特性已广泛应用到现代工业的各行各业中…

人工智能-动物识别

自定义数据结构,方法不限 Rule1:IF该动物有毛发THEN该动物是哺乳动物 Rule2:IF该动物有奶THEN该动物是哺乳动物 Rule3:IF该动物有羽毛THEN该动物是鸟 Rule4:IF该动物会飞AND会下蛋THEN该动物是鸟 Rule5&#xff1…

旷视推出鼻纹识别,用AI寻找丢失宠物

来源 | 转载自旷视城市大脑(ID:MEGVII_CityBrain) 导读: 随着人工智能技术(AI)的大热,基于深度学习方法的人脸识别技术已成熟落地,在解锁、支付、认证、摄像等生活方方面面,各个大厂…

人工智能-动物识别系统

在本系统当中,知识库中的知识用产生式规则来表示,共有如下15条规则。 R1 IF该动物有奶THEN该动物是哺乳动物 R2 IF该动物有毛发THEN该动物是哺乳动物 R3 IF该动物有羽毛THEN该动物是鸟 R4 IF该动物会飞AND会下蛋THEN该动物是鸟 R5 IF该动物有爪AND有犬齿…

分析连连看

1. 样本概况 1.1 应用程序信息 应用程序名称:连连看单机版 MD5值: SHA1值: 简单功能介绍: 说明:如果是分析网页则记录网页的相关信息即可 1.2 分析环境及工具 Win7 32位操作系统,使用工具:OD,CE,Visual Studio 2019 2. 具体分…

读懂婴幼儿语音和图像数据,打造AI宝宝看护管家

近年来,婴幼儿行业已经发展到深水区,资本加码使得婴幼儿市场越来越标准化、规模化,发展路线也更加清晰、明确。 2017年以后,婴幼儿行业投融资三大核心趋势为:内容创业、人工智能和母婴新零售。很明显,人工…

动物识别——人工智能

实验三 产生式系统推理 一、实验目的 本实验课程是计算机、智能、物联网等专业学生的一门专业课程,通过实验,帮助学生更好地掌握人工智能相关概念、技术、原理、应用等;通过实验提高学生编写实验报告、总结实验结果的能力;使学生…