機器學習實戰 決策樹

2021-08-09 14:30:59 字數 1199 閱讀 5332

決策樹

2、python語言在函式中傳遞的是列表的引用,在函式內部對列表物件的修改,將會影響該列表物件的整個生存週期。為了消除這個不良影響,我們需要在函式的開始宣告乙個新列表物件。在本節中,指的是在劃分資料集函式中,傳遞的引數dataset列表的引用,為了不影響dataset我們重新宣告了乙個retdataset列表。

3、在資料視覺化的過程中,我們需要在資料圖形上新增文字註解。 使用text()會將文字放置在軸域的任意位置。 文字的乙個常見用例是標註繪圖的某些特徵,而annotate()方法提供輔助函式,使標註變得容易。在使用annotate()函式的過程中,需要兩個座標點:引數xy(所需要標註的點的位置座標);xytext(填寫標註文字的地方);arrowprops(標註箭頭屬性資訊,通過提供的屬性字典來繪製文字到注釋點的箭頭);xycoords和textcoords指定所使用的座標系;bbox(在周圍繪製乙個文字框)

4、在程式清單3-6中,書上的**會出現如下問題:

firststr = mytree.keys()[0],是取第一次劃分資料集的類別標籤,即鍵值。但是這在python3中執行會報錯:這是因為python3改變了dict.keys,返回的是dict_keys物件,支援iterable(迭代) 但不支援indexable(索引)。我們可以將其明確的轉化成list,則處**在python3中應這樣實現:

firststr =

list(mytree.keys()) 

[0]5、為了節省計算時間,最好能夠在每次執行分類時呼叫已經構造好的決策樹,這時需要使用模組pickle序列化物件。pickle的儲存方式預設是二進位制方式,所以在程式清單3-9中,以二進位制的方式進行讀寫,否則會報錯typeerror: write() argument must be str, not bytes

fw = 

open(filename

,'wb+')

fr = 

open(filename

,'rb')

6、參考連線:

在這個鏈結中,作者對書中決策樹的**進行了詳細的注釋,節省了自己很多時間,感謝作者。

機器學習實戰決策樹

這幾天一直在學習機器學習實戰python 實現,在程式清單的3 6 獲取及誒單數程式,書上的程式是這樣的 def getnumleafs mytree numleafs 0.0 firststr list dict.keys mytree 0 seconddict mytree firststr p...

機器學習實戰 決策樹

class sklearn.tree.decisiontreeclassifier criterion gini splitter best max depth none,min samples split 2,min samples leaf 1,min weight fraction leaf ...

機器學習實戰 決策樹

def calcshannonent dataset numentries len dataset labelcounts for featvec in dataset currentlabel featvec 1 if currentlabel not in labelcounts.keys la...