def
majoritycnt
(classlist):
#傳入的引數是已經劃分完所有特徵之後的資料集,例如[['yes'],['yes'],['maybe']]
classcount={}#建立乙個字典
for vote in classlist:
if vote not
in classcount.keys():classcount[vote] = 0
classcount[vote] += 1
#根據上述迴圈和例子,可以得出
sortedclasscount = sorted(classcount.items(),key=operator.itemgetter(1),reverse=ture)
return sortedclasscount[0][0]
重點不明白
sortedclasscount = sorted(classcount.items(),key=operator.itemgetter(1),reverse=ture)
使用iteritems()這個函式得到我們字典中的所有元素,就是鍵-值對
之後定義乙個叫做key的函式,這個名字可以任意取,key只是習慣性定義的
之後通過itemgetter函式對字典中的元素進行排序,operator.itemgetter(1)表示按照元素的第二個進行排序,指按鍵-值對的值來排,也就是分類出現的多少。
reverse=true 表示按照遞減的順序來排序,即降序。
sortedclasscount[0][0]表示的是按照分類的個數最多的元素的那個類。
補了一下python裡的字典概念
乙個簡單的字典
alien_0 =
print(alien_0['color'])
print(alien_0['points'])
結果green 5
字典是一系列的鍵-值對。每乙個鍵都與乙個值相關聯。
構建樹的函式**
def
createtree
(dataset,labels):
classlist = [example[-1] for example in dataset]#取出最後一列
if classlist.count(classlist[0]) == len(classlist):
return classlist[0]
#類別完全相同則停止繼續劃分,count()函式中接受乙個引數,表示的是這個引數在某個序列中出現的次數
#如果這個classlist中的元素完全相同,那麼這個引數的count(classlist[0])應該是等於classlist的長度
if len(dataset[0]) == 1:
return majoritycnt(classlist)
bestfeat = choosebestfeaturetosplit(dataset)#返回的是最好的特徵的位置,例如0
bestfeatlabel = labels[bestfeat]#儲存的是最好的特徵的標籤
mytree = }#構建資料字典
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
>>>
import trees
>>>
from imp import reload
>>> reload(trees)
'trees'
from
'e:\\python\\trees.py'>
>>> mydat,labels=trees.createdataset()
>>> mytree = trees.createtree(mydat,labels)
>>> mytree
}}}>>>
決策樹構建
from sklearn import tree import pydotplus x 0,0 1,1 y 0,1 clf tree.decisiontreeclassifier 決策樹分類器 clf clf.fit x,y 對樣本x和對應的類y訓練決策樹 clf.predict 2.2.為乙個新的...
決策樹 ID3構建決策樹
coding utf 8 from math import log import operator 建立訓練資料集 defcreatedataset dataset 1,1,yes 1,1,yes 1,0,no 0,1,no 0,1,no 資料集的最後乙個元素作為該資料的標籤,是否是魚 labels...
利用資訊熵構建決策樹
決策樹演算法普遍存在於我們的日常生活中,我們在不經意間就會使用到決策樹。比如你在糾結是否要去一家公司工作時,可能會用到下面的決策樹 整個決策過程是這樣的 如果公司待遇高,你可能就願意去 如果待遇不高,你可能會繼續考慮公司的平台好不好。如果連平台都不好,那就直接拒絕。如果平台很好,你就會繼續考慮自己在...