动物识别专家系统实验

这个人工智能导论实验可算是折磨了我许久,关键是我一直想不明白该如何推理。
在某天的晚上,我去对象那里上晚自习,突然灵感大开。由于电脑没有电了,我就手绘了一个系统结构图,并且想到了解决问题的方案。
当晚回宿舍我就立马打开电脑,写完了一半。第二天清早又逐渐完善了一些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("请选择功能:"))

人工智能导论-动物识别专家系统相关推荐

  1. 动物识别系统代码python_人工智能-动物识别专家系统算法Python + Pyqt 实现

    #-*- coding: utf-8 -*- #Form implementation generated from reading ui file '动物识别专家系统.ui'# #Created b ...

  2. 动物识别专家系统 Java 简单实现

    不再BB什么是专家系统了,自行百度,这篇博客专门帮助写作业的,人工智能导论课要求写一个动物识别专家系统,这就是一个很好的实现,编了2天,有界面,有功能,分享给需要的同学. 直接上源代码,开箱即用,包括 ...

  3. 动物识别专家系统PYTHON

    能搜到这个文章的,估计你就是为了想找篇现成的系统抄抄了,我也废话不多说好叭. 下面这些是我们当时的要求和加分项: 1.建立一个动物识别系统的规则库,用以识别虎.豹.斑马.长颈鹿.企鹅.鸵鸟.信天翁等7 ...

  4. 动物识别专家系统-js

    动物识别-专家系统(js) 最近上人工智能的研究生课程,老师留了道课后作业,用于动物识别的专家系统:看完题目要求后,自然而然的到网上百度,发现用c.java写的 代码有很多,作为一个比较熟悉前端的我来 ...

  5. C# winform 动物识别专家系统

    1.功能需求 本实例完成的是人工智能作业--简单动物识别专家系统.要求能输入一个或者多个特征推理出结果,能有简单的界面,对知识库的修改等.需要的基础知识有C#,winform, 以及对文本的简单处理, ...

  6. 动物识别专家系统c语言代码,动物识别专家系统(C++版)

    --------------------- 本文来自 Robin_just 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/shaguabufadai/article/ ...

  7. python动物专家系统_动物识别专家系统 实验报告

    学 号 XXXXX 姓 名 XXXXX 实验名称 动物识别专家系统 实验目的 本实验的主要目的是熟练使用推理方法, 进行编程完成相应的功 能. 本次试验的预期功能是在系统可以像使用者提出问题, 然后系 ...

  8. 动物识别系统代码python_动物识别专家系统课程设计

    title: 动物识别专家系统课程设计 date: 2017-12-23 18:44:13 tags: categories: python 设计一个可以识别7种动物的专家系统,可以根据前提推导出结论 ...

  9. JavaScript 实现动物识别专家系统交互演示

    本文首发且更新于个人博客: https://www.xerrors.fun/Animal-Identification-Expert-System/ 前言:本篇文章主要是介绍什么是专家系统,接下来会使 ...

最新文章

  1. 【C++】浅析析构函数(基类中)为什么要写成虚基类?
  2. python bisect_Python中bisect的用法
  3. Rabbit-用户上线接收消息
  4. 基于WF4的新平台-表单格式
  5. [ATF]-ATF启动--BL31跳转到optee和uboot
  6. 常用来进行钢结构节点输出的软件是什么_纯干货:钢结构设计入门知识及简易方法(建议收藏)...
  7. python删除链表中重复的节点_剑指offer:删除链表中重复的节点
  8. Shuffle CodeForces - 1366B(思维)
  9. Solr操作中新手常见问题
  10. 生成同时兼容iOS真机和模拟器的.a包
  11. scala基本类型和成员定义
  12. java接口vm和dto的区别_第十八节:详解Java抽象类和接口的区别
  13. 一看就会的ios配置证书及描述文件
  14. 技术解析:一文看懂 Anolis OS 国密生态
  15. 局部加权回归LOESS
  16. 马踏棋盘(java)
  17. matlab数学建模-神经网络感知器函数
  18. rar和unrar压缩解压
  19. 【转】ASP六大对象介绍
  20. 测试/开发程序员的成长之路,未来是你们的......

热门文章

  1. 制作U盘启动来安装Linux系统的具体方法(图文)
  2. ResNet详细介绍
  3. Layui数据表格分页通过两种方法实现
  4. antd表格分页控件显示英文page
  5. Android自定义控件之圆形头像
  6. 一位在微软公司的粉丝,写给我的信
  7. 什么是interrupt
  8. 关于笔记本WLAN被禁用解决方法
  9. tcl基本语法:中括号[ ]、大括号{ }、双引号“ ”
  10. 天龙八部元宝兑换代码