python动物专家系统_用Python实现一个动物识别专家系统--人工智能作业分享

考察 产生式系统

我猜在搜索引擎的茫茫大海中,你能看见我的这篇文章不是缘分,而是你要交作业了(抖机灵)

求点赞,给作者一点分享的鼓励

代码没写GUI,因为不喜欢这玩意,直接在终端中进行人机交互。使用代码之前,请根据自身情况对字符编码、文件路径进行修改

代码写的很烂,以后有能力了再把算法加进去优化代码吧

第一问

先根据题图,创建规则库(使用了一个文本文件)

if 有毛发 then 哺乳动物

if 有乳 then 哺乳动物

if 吃肉 then 食肉动物

if 有犬齿 and 有爪 and 眼向前方 then 食肉动物

if 哺乳动物 and 有蹄 then 有蹄类

if 哺乳动物 and 反刍动物 then 有蹄类

if 哺乳动物 and 食肉动物 and 黄褐色 and 暗斑点 then 豹子

if 哺乳动物 and 食肉动物 and 黄褐色 and 黑条纹 then 老虎

if 有蹄类 and 长脖子 and 长腿 and 暗斑点 then 长颈鹿

if 有蹄类 and 黑条纹 then 斑马

代码:

rules = {} # 以字典形式存储规则

""" 读取规则库文件中规则,并存放在rules字典中 - 字典的键:前提 - 字典的值:结论 """

def readRules(filePath):

global rules

for line in open(filePath, mode = 'r', encoding = 'utf-8'):

line = line.replace('if', '').strip()

temp = line.split(' then ')

premise = temp[0]

conclusion = temp[1]

rules[premise] = conclusion

""" 2. 推理机用这些事实(即:facts变量),依次与知识库中的规则的前提匹配 - 注意:匹配成功的规则可能不止一条,进行冲突消解 3. 若某规则的前提全被事实满足,则规则可以得到运用 4. 规则的结论部分作为新的事实存储 5. 用更新过的事实再与其它规则的前提匹配,直到不再有可匹配的规则为止 """

def matchRules(facts):

print()

# 循环匹配

isEnd = False

def loop():

global rules

nonlocal facts, isEnd

rules_copy = rules.copy()

i = 0

for premise in rules:

flag = True

# print(premise+ ':' + rules[premise])

pre = premise.split(' and ')

for p in pre:

if p in facts:

pass

else:

flag = False

if(flag):

print('该动物:' + premise + ' -> ' + rules[premise])

for p in pre:

facts = facts.replace(p, ' ')

facts = facts + rules[premise]

rules_copy.pop(premise)

else:

i += 1

if i == len(rules):

isEnd = True

rules = rules_copy

# 是否推导出最终结论

while(not isEnd):

loop()

""" 1. 用户通过人机界面输入一批事实 """

def ui():

print('----')

print('--------动物识别系统--------')

print('----')

print('注意!请按照规则库中的前提来阐述事实', end='\n\n')

facts = input('请输入事实:')

matchRules(facts)

def main():

filePath = r'动物识别系统/rules.txt'

readRules(filePath)

ui()

if __name__ == '__main__':

main()

人机交互示例:

----

--------动物识别系统--------

----

注意!请按照规则库中的前提来阐述事实

请输入事实:该动物有暗斑点、长脖子、长腿、有乳、有蹄。

该动物:有乳 -> 哺乳动物

该动物:哺乳动物 and 有蹄 -> 有蹄类

该动物:有蹄类 and 长脖子 and 长腿 and 暗斑点 -> 长颈鹿

第二问

把规则库换成以下规则,在看看系统的执行情况:

有毛发的动物是哺乳类;

有奶的动物是哺乳类;

有羽毛的动物是鸟类;

若动物会飞且生蛋,则它是鸟类;

吃肉的哺乳类称为食肉动物;

犬牙利爪,眼睛向前的是食肉类;

反刍食物的哺乳类是有蹄类;

有蹄的哺乳类是有蹄类;

黄褐色有黑色条纹的食肉类是老虎;

黄褐色有暗斑点的食肉类是金钱豹;

长腿长脖有黄褐色暗斑点的有蹄类是长颈鹿;

有黑白条纹的有蹄类是斑马;

不会飞腿长脖黑白色的鸟是鸵鸟;

不会飞善游泳黑白色的鸟是企鹅;

善飞的鸟是信天翁.

把规则库重新写一遍就可以了,或者你再新建一个文本文件

if 有毛发 then 哺乳类

if 有奶 then 哺乳类

if 有羽毛 then 鸟类

if 会飞 and 生蛋 then 鸟类

if 吃肉 and 哺乳类 then 食肉动物

if 犬牙 and 利爪 and 眼睛向前 then 食肉类

if 哺乳类 and 反刍食物 then 有蹄类

if 哺乳类 and 有蹄 then 有蹄类

if 食肉类 and 黄褐色 and 黑色条纹 then 老虎

if 食肉类 and 黄褐色 and 暗斑点 then 金钱豹

if 有蹄类 and 长脖 and 长腿 and 黄褐色 and 暗斑点 then 长颈鹿

if 有蹄类 and 黑白条纹 then 斑马

if 鸟 and 不会飞 and 长脖子 and 长腿 and 黑白色 then 鸵鸟

if 鸟 and 不会飞 and 善游泳 and 黑白色 then 企鹅

if 鸟 and 善飞 then 信天翁

最后吐槽一句,产生式系统是真的傻,如果不对输入进行模糊判断,嘁嘁嘁(我没有这样搞,因为搞不好,以后有能力了再加上)

所以呢,我这垃圾代码,执行时输入一系列事实之前需要先看看规则库的的前提;不然,你在事实中输入’有奶‘,而规则库中是’有乳‘,俺这代码可不认你的’有奶‘

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人工智能-动物识别专家系统是一种基于机器学习和深度学习技术的应用,能够通过输入的动物图像进行分类和识别的系统。这个系统的实现基于Python编程语言,并利用了一些开源的机器学习和深度学习库。 在实现过程中,首先需要收集和准备用于训练和测试的动物图像数据集。这个数据集应该包括不同种类的动物图像,以便模型能够学习它们的特征和区别。然后,可以使用Python中的机器学习库,如scikit-learn,来训练一个分类器模型。这个模型将会学习如何从输入的图像中提取特征,并将其与已知的动物类别进行匹配。 另外,为了提高识别的准确性,可以使用深度学习技术来训练一个卷积神经网络模型。这个模型将会通过多层卷积和池化操作,逐步提取图像的特征,并输出对应的类别概率。在Python中,可以使用一些深度学习框架,如TensorFlow和Keras,来构建和训练这个模型。 一旦模型训练完成,就可以将其应用到实际的动物图像识别任务中。通过输入一张待识别动物图像,系统将会对其进行特征提取,并使用训练好的模型进行分类。最终,系统会输出一个或多个可能的动物类别,以及对应的概率值。这样,用户就可以根据系统的推荐结果,准确地识别动物的类型。 综上所述,人工智能-动物识别专家系统实现涉及到数据收集和准备、机器学习和深度学习模型的训练以及应用等多个方面。Python作为一种功能丰富的编程语言,提供了大量用于数据科学和人工智能的相关库和工具,非常适合用来实现这样一个系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值