小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

動物識別 python 人工智能實驗

 印度阿三17 2023-01-29 發(fā)布于重慶

構(gòu)建動物識別系統(tǒng)

系統(tǒng)分為兩部分,第一部分是初始化綜合數(shù)據(jù)庫,分為兩類,一類是間接數(shù)據(jù)庫,即不指向最終動物的信息。另一類是直接數(shù)據(jù)庫,即指向最終動物的信息。使用的是二維列表加上一個一維列表存儲key與value。第二部分為添加數(shù)據(jù)庫和識別動物,查詢的時候添加,可以有效的擴增數(shù)據(jù)庫,使功能更靈活與完善。在識別動物的時候,先在間接數(shù)據(jù)庫中完善信息,在直接數(shù)據(jù)庫中查找對應(yīng)的動物,記錄信息時,使用字典記錄某個特征是否出現(xiàn),這樣查詢的復(fù)雜度就為O(1)。(這一段為老師所給提示)

思路:

1、我選擇構(gòu)建直接、間接數(shù)據(jù)庫的方式為將條件存入列表中,列表中的元素都有對應(yīng)的下標,將下標作為字典的值、結(jié)果作為字典的鍵構(gòu)成數(shù)據(jù)庫,這樣條件和結(jié)果就能構(gòu)成呢個一一對應(yīng)的關(guān)系。因此程序中的數(shù)據(jù)庫是包括列表、字典兩部分的。

eg: 間接庫列表:奶                             哺乳動物+蹄                    羽毛

        間接庫字典:哺乳動物->0             蹄類動物->1                    鳥->2

2、識別動物的時候,先在間接庫中進行推理,再在直接庫中推理。

Indirdict=dict()#間接庫字典,用于從數(shù)字尋找對應(yīng)結(jié)果
Dirdict=dict()#直接庫字典,用于從數(shù)字尋找對應(yīng)結(jié)果
Indirlist=[]#間接庫列表,用于存放動物特征的集合和定義、存放這個集合對應(yīng)數(shù)字
Dirlist=[]#直接庫列表,用于存放動物特征的集合和定義、存放這個集合對應(yīng)數(shù)字
Indirnum=0#作為間接庫字典的值
Dirnum=0#作為直接庫字典的值

def change(str):#以字符串的形式輸入全部特征值,這個函數(shù)可以將字符串中的特征值識
                #別出來,并且將所有特征值存放到一個集合中
    set1=set()#定義一個集合,存放特征值
    str1=""
    for i in range(0,len(str)):
        if(str[i]!=" "):
            str1+=str[i]
        else:
            set1.add(str1)
            str1=""
            i+=1
    return set1

list1=[]#定義一個臨時列表,表示間接庫或直接庫
dict1=dict()#定義一個臨時字典,表示間接庫字典或直接庫字典
num1=0

def Builddata(list1,dict1,num1):#num1存放在字典中,與結(jié)果相對應(yīng)
    str2=input("請輸入條件,以空格隔開:")#定義一個字符串,存放用戶輸入特征值
    str2+=" "
    while(str2!="0 "):
        str3=input("請輸入結(jié)果:")#字符串,存放結(jié)果
        dict1[num1]=str3#將值與結(jié)果在字典中相對應(yīng)
        set2=change(str2)#集合,將用戶輸入特征值放入此集合內(nèi)
        list1.append(set2)#將特征值集合存入列表
        str2=input("請輸入條件,以空格隔開:")
        str2+=" "
        num1+=1
    return num1

def Infer(animalset,list1,dict1):#推理函數(shù),將動物條件的集合放在間接庫或直接庫中進行匹配
    for i in range(0,len(animalset)):#保證循環(huán)足夠多的次數(shù)
        for j in range(0,(len(list1))):
            if(list1[j].issubset(animalset) or list1[j]==animalset):
                animalset.add(dict1[j])
                #print(list1[j])
                animalset=animalset-list1[j]
    return animalset

def Rec():#識別動物
    feature=input("請輸入動物的特征(不同特征之間用空格隔開):")
    feature+=" "
    animalset=change(feature)
    #將動物的特征化為關(guān)鍵詞的集合
    animalset=Infer(animalset,Indirlist,Indirdict)
    set3=Infer(animalset,Dirlist,Dirdict)#返回經(jīng)過直接規(guī)則庫過濾后的集合
    list2=list(set3)#將動物特征集合化為列表,便于確定最后剩下多少特征值
    if(len(list2)==1):
        print("這個動物是:"+list2[0])
    else:
        print("查無此動物")

print("請輸入接下來操作(1.添加間接數(shù)據(jù)庫 2.添加直接數(shù)據(jù)庫 3.查詢動物 0.結(jié)束操作):")
chose = input()
while (chose!='0'):
    if (chose=='1'):
        print("構(gòu)造間接數(shù)據(jù)庫:(輸入條件時輸入0結(jié)束構(gòu)建)")
        Indirnum=Builddata(Indirlist,Indirdict,Indirnum)
        print("間接數(shù)據(jù)庫構(gòu)造完成!")
        print("")
        chose = input("請輸入接下來操作(1.添加間接數(shù)據(jù)庫 2.添加直接數(shù)據(jù)庫 3.查詢動物 0.結(jié)束操作):")
    elif (chose=='2'):
        print("構(gòu)造直接數(shù)據(jù)庫:(輸入條件時輸入0結(jié)束構(gòu)建)")
        Dirnum=Builddata(Dirlist,Dirdict,Dirnum)
        print("直接數(shù)據(jù)庫構(gòu)造完成!")
        print("")
        chose = input("請輸入接下來操作(1.添加間接數(shù)據(jù)庫 2.添加直接數(shù)據(jù)庫 3.查詢動物 0.結(jié)束操作):")
    elif (chose=='3'):
        Rec()
        print("")
        chose = input("請輸入接下來操作(1.添加間接數(shù)據(jù)庫 2.添加直接數(shù)據(jù)庫 3.查詢動物 0.結(jié)束操作):")
    else:
        print("輸入不合法,請重新輸入")
        chose = input("請輸入接下來操作(1.添加間接數(shù)據(jù)庫 2.添加直接數(shù)據(jù)庫 3.查詢動物 0.結(jié)束操作):")

注:輸入條件、結(jié)果時,構(gòu)建間接規(guī)則庫、構(gòu)建直接規(guī)則庫、查詢動物時輸入形式、相同的內(nèi)容必須保持一致。

 https:///show/1/781946.html

此文是借鑒大佬博客https://blog.csdn.net/weixin_46178977/article/details/105842471,是對大佬代碼的拙劣優(yōu)化。。

能夠搞懂并改寫這樣的一個不很簡單的程序,也算是對大一身為python小小白的我一個交代了吧。。      

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多