日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ID3算法流程

發布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ID3算法流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

git鏈接

ID3是一棵多叉樹,這一棵樹采用遞歸的方式構造

  • 第一步根節點的構造,遍歷所有特征,找到那個使分類信息增益最大的特征,將其設置為根節點,并且講這個feature刪除掉
  • 由于根節點已經將數據分叉,遞歸的方式尋找每個分枝的最優特征3
  • id3采用信息增益來選取最優分裂特征
  • #ID3算法 def ID3_chooseBestFeatureToSplit(dataset):numFeatures=len(dataset[0])-1baseEnt=jisuanEnt(dataset)bestInfoGain=0.0bestFeature=-1for i in range(numFeatures): #遍歷所有特征#for example in dataset:#featList=example[i] featList=[example[i]for example in dataset]uniqueVals=set(featList) #將特征列表創建成為set集合,元素不可重復。創建唯一的分類標簽列表newEnt=0.0for value in uniqueVals: #計算每種劃分方式的信息熵subdataset=splitdataset(dataset,i,value)p=len(subdataset)/float(len(dataset))newEnt+=p*jisuanEnt(subdataset)infoGain=baseEnt-newEnt # print(u"ID3中第%d個特征的信息增益為:%.3f"%(i,infoGain))if (infoGain>bestInfoGain):bestInfoGain=infoGain #計算最好的信息增益bestFeature=ireturn bestFeature #利用ID3算法創建決策樹 def ID3_createTree(dataset,labels):classList=[example[-1] for example in dataset]if classList.count(classList[0]) == len(classList):# 類別完全相同,停止劃分return classList[0]if len(dataset[0]) == 1:# 遍歷完所有特征時返回出現次數最多的return majorityCnt(classList)bestFeat = ID3_chooseBestFeatureToSplit(dataset)bestFeatLabel = labels[bestFeat] # print(u"此時最優索引為:"+(bestFeatLabel))ID3Tree = {bestFeatLabel:{}}# print(bestFeatLabel)del(labels[bestFeat])# 得到列表包括節點所有的屬性值featValues = [example[bestFeat] for example in dataset]uniqueVals = set(featValues)for value in uniqueVals:subLabels = labels[:]#################################遞歸sub_dataset=splitdataset(dataset, bestFeat, value)ID3Tree[bestFeatLabel][value] = ID3_createTree(sub_dataset, subLabels)print(ID3Tree)return ID3Tree

    總結

    以上是生活随笔為你收集整理的ID3算法流程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。