日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ID3算法流程

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

git鏈接

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

  • 第一步根節(jié)點的構造,遍歷所有特征,找到那個使分類信息增益最大的特征,將其設置為根節(jié)點,并且講這個feature刪除掉
  • 由于根節(jié)點已經將數(shù)據(jù)分叉,遞歸的方式尋找每個分枝的最優(yōu)特征3
  • id3采用信息增益來選取最優(yōu)分裂特征
  • #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) #將特征列表創(chuàng)建成為set集合,元素不可重復。創(chuàng)建唯一的分類標簽列表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算法創(chuàng)建決策樹 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:# 遍歷完所有特征時返回出現(xiàn)次數(shù)最多的return majorityCnt(classList)bestFeat = ID3_chooseBestFeatureToSplit(dataset)bestFeatLabel = labels[bestFeat] # print(u"此時最優(yōu)索引為:"+(bestFeatLabel))ID3Tree = {bestFeatLabel:{}}# print(bestFeatLabel)del(labels[bestFeat])# 得到列表包括節(jié)點所有的屬性值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算法流程的全部內容,希望文章能夠幫你解決所遇到的問題。

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