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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

决策树---ID3算法

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

決策樹---ID3算法

?

決策樹:

以天氣數據庫的訓練數據為例。

?

Outlook

Temperature

Humidity

Windy

PlayGolf?

sunny

85

85

FALSE

no

sunny

80

90

TRUE

no

overcast

83

86

FALSE

yes

rainy

70

96

FALSE

yes

rainy

68

80

FALSE

yes

rainy

65

70

TRUE

no

overcast

64

65

TRUE

yes

sunny

72

95

FALSE

no

sunny

69

70

FALSE

yes

rainy

75

80

FALSE

yes

sunny

75

70

TRUE

yes

overcast

72

90

TRUE

yes

overcast

81

75

FALSE

yes

rainy

71

91

TRUE

no

這個例子是根據報告天氣條件的記錄來決定是否外出打高爾夫球。

?

作為分類器,決策樹是一棵有向無環樹。

由根節點、葉節點、內部節點、分割屬性、分割判斷規則構成

?

生成階段:決策樹的構建和決策樹的修剪。

根據分割方法的不同:有基于信息論(Information Theory的方法和基于最小GINI指數(lowest GINI index的方法。對應前者的常見方法有ID3、C4.5,后者的有CART

?ID3 算法

?????? ID3的基本概念是:

1)? 決策樹中的每一個非葉子節點對應著一個特征屬性,樹枝代表這個屬性的值。一個葉節點代表從樹根到葉節點之間的路徑所對應的記錄所屬的類別屬性值。這就是決策樹的定義。

2)? 在決策樹中,每一個非葉子節點都將與屬性中具有最大信息量的特征屬性相關聯。

3)? 熵通常是用于測量一個非葉子節點的信息量大小的名詞。

?

熱力學中表征物質狀態的參量之一,用符號S表示,其物理意義是體系混亂程度的度量。熱力學第二定律(second law of thermodynamics),熱力學基本定律之一,又稱“熵增定律”,表明在自然過程中,一個孤立系統的總混亂度(即“熵”)不會減小。

在信息論中,變量的不確定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。信息熵是信息論中用于度量信息量的一個概念。一個系統越是有序,信息熵就越低;反之,一個系統越是混亂,信息熵就越高。所以,信息熵也可以說是系統有序化程度的一個度量。

?信息增益的計算

定義1:若存在個相同概率的消息,則每個消息的概率是,一個消息傳遞的信息量為。若有16個事件,則,需要4個比特來代表一個消息。

定義2若給定概率分布則由該分布傳遞的信息量稱為的熵,即

?

例:若是,則是1;若是,則是0.92;若

是,則是0(注意概率分布越均勻,其信息量越大)

定義3若一個記錄的集合根據類別屬性的值被分為相互獨立的類,則識別的一個元素所屬哪個類別所需要的信息量是,其中是的概率分布,即

?

?

仍以天氣數據庫的數據為例。我們統計了14天的氣象數據(指標包括outlook,temperature,humidity,windy),并已知這些天氣是否打球(play)。如果給出新一天的氣象指標數據,判斷一下會不會去打球。在沒有給定任何天氣信息時,根據歷史數據,我們知道一天中打球的概率是9/14,不打的概率是5/14。此時的熵為:

?

定義4:若我們根據某一特征屬性將分成集合,則確定中的一個元素類的信息量可通過確定的加權平均值來得到,即的加權平均值為:

?

?

?

Outlook

temperature

humidity

windy

play

?

yes

no

?

?

?

yes

no

yes

no

sunny

2

3

False

6

2

9

5

overcast

4

0

True

3

3

?

?

rainy

3

2

?

?

?

?

?

?

針對屬性Outlook,我們來計算

定義5:將信息增益定義為:

?

即增益的定義是兩個信息量之間的差值,其中一個信息量是需確定的一個元素的信息量,另一個信息量是在已得到的屬性的值后確定的一個元素的信息量,即信息增益與屬性相關。

針對屬性Outlook的增益值:

?

若用屬性windy替換outlook,可以得到,。即outlook比windy取得的信息量大。

ID3算法的Python實現

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

import math

import operator

?

def calcShannonEnt(dataset):

????numEntries = len(dataset)

????labelCounts = {}

????for featVec in dataset:

????????currentLabel = featVec[-1]

????????if currentLabel not in labelCounts.keys():

????????????labelCounts[currentLabel] = 0

????????labelCounts[currentLabel] +=1

?????????

????shannonEnt = 0.0

????for key in labelCounts:

????????prob = float(labelCounts[key])/numEntries

????????shannonEnt -= prob*math.log(prob, 2)

????return shannonEnt

?????

def CreateDataSet():

????dataset = [[1, 1, 'yes' ],

???????????????[1, 1, 'yes' ],

???????????????[1, 0, 'no'],

???????????????[0, 1, 'no'],

???????????????[0, 1, 'no']]

????labels = ['no surfacing', 'flippers']

????return dataset, labels

?

def splitDataSet(dataSet, axis, value):

????retDataSet = []

????for featVec in dataSet:

????????if featVec[axis] == value:

????????????reducedFeatVec = featVec[:axis]

????????????reducedFeatVec.extend(featVec[axis+1:])

????????????retDataSet.append(reducedFeatVec)

?????

????return retDataSet

?

def chooseBestFeatureToSplit(dataSet):

????numberFeatures = len(dataSet[0])-1

????baseEntropy = calcShannonEnt(dataSet)

????bestInfoGain = 0.0;

????bestFeature = -1;

????for i in range(numberFeatures):

????????featList = [example[i] for example in dataSet]

????????uniqueVals = set(featList)

????????newEntropy =0.0

????????for value in uniqueVals:

????????????subDataSet = splitDataSet(dataSet, i, value)

????????????prob = len(subDataSet)/float(len(dataSet))

????????????newEntropy += prob * calcShannonEnt(subDataSet)

????????infoGain = baseEntropy - newEntropy

????????if(infoGain > bestInfoGain):

????????????bestInfoGain = infoGain

????????????bestFeature = i

????return bestFeature

?

def majorityCnt(classList):

????classCount ={}

????for vote in classList:

????????if vote not in classCount.keys():

????????????classCount[vote]=0

????????classCount[vote]=1

????sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)

????return sortedClassCount[0][0]

??

?

def 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 = chooseBestFeatureToSplit(dataSet)

????bestFeatLabel = labels[bestFeat]

????myTree = {bestFeatLabel:{}}

????del(labels[bestFeat])

????featValues = [example[bestFeat] for example in dataSet]

????uniqueVals = set(featValues)

????for value in uniqueVals:

????????subLabels = labels[:]

????????myTree[bestFeatLabel][value] = createTree(splitDataSet(dataSet, bestFeat, value), subLabels)

????return myTree

?

?????????

?????????

myDat,labels = CreateDataSet()

createTree(myDat,labels)

運行結果如下:

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

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

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

主站蜘蛛池模板: 91看片网站 | 久久香蕉影视 | 深爱激情综合网 | 奇米在线视频 | wwwxxoo| 国产中文字幕在线免费观看 | 国产主播在线观看 | 日本中文字幕免费观看 | 国产精品久久久久久久久绿色 | 播放一级黄色片 | 日韩六九视频 | 99热首页 | 亚洲小视频在线播放 | 日韩视频在线一区 | a天堂中文在线观看 | 佐山爱av在线 | 中文字幕在线视频网站 | 亚洲中文字幕无码一区二区三区 | 亚州视频在线 | 射黄视频 | 国产精品久久久久久久久久久久久久久久久 | 国产精品精品久久久久久 | 污网站免费在线观看 | 亚洲视频不卡 | 日韩欧美中文字幕在线观看 | 青青草视频网站 | 一本之道高清无码视频 | 少妇高潮一区二区三区四区 | 91鲁| 精品久久久久久一区二区里番 | 一区在线播放 | 亚洲美女综合 | 久久深夜 | 毛片网在线 | 日韩三级一区 | 免费亚洲精品 | 午夜快播 | 看了让人下面流水的视频 | 911亚洲精品 | 91网址在线 | a级片免费视频 | 4438x全国最大成人网 | 美女福利网站 | 国产精品一二三四五 | 国产av一区二区三区传媒 | 国产8区| 四虎av在线 | 国产v亚洲 | 日本电影一区 | 欧美日韩电影一区 | 伊人色播 | 小箩莉末发育娇小性色xxxx | av网址在线看 | 亚洲欧美一区二区三区 | 国产又大又粗又爽的毛片 | 在线无遮挡 | 成年人黄色免费视频 | 91色| 精品久久久久一区二区国产 | 欧美巨乳美女 | 善良的少妇伦理bd中字 | 国产二区视频 | 亚洲蜜桃精久久久久久久久久久久 | 日韩大片免费 | www.青青操| 国产做爰xxxⅹ高潮视频12p | 精品免费视频 | 国产18禁黄网站免费观看 | 欧美高清 | 99免费国产 | 成人福利在线播放 | 免费不卡毛片 | 中文字幕综合 | 久久久久亚洲AV | 伊人av在线播放 | 姐姐的秘密韩剧免费观看全集中文 | 国产地址 | 午夜精品久久久久久久91蜜桃 | 六月丁香色婷婷 | 成人av电影在线播放 | 黄在线观看免费 | 色中色在线视频 | 中文字幕免费观看视频 | 国内精品久久久久久久久久 | 亚洲九九夜夜 | 日本高清免费视频 | 国产激情一区二区三区在线观看 | 伊人影院在线观看 | 秋霞福利视频 | 啪啪啪一区二区 | 国产一级一级片 | 全部孕妇毛片丰满孕妇孕交 | 流白浆视频| 日韩黄色三级 | 日韩综合 | 日韩大片免费在线观看 | 久久久久久久国产精品毛片 | 亚洲剧情在线 | 国产精品久久久久久久专区 |