缺點:可能會產生過度匹配問題
適用資料型別:數值型和標稱型
收集資料:可以使用任何方法
準備資料:樹構造演算法只適用於標稱型資料,因此數值型資料必須離散化
分析資料:可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期
訓練演算法:構造樹的資料結構
測試演算法:使用經驗樹計算錯誤率。
使用演算法:此步驟可以適用於任何監督學習演算法,而使用決策樹可以更好地理解資料的內在含義
【tree.py】
原則:將無序的資料變得更加有序。
對每個特徵劃分資料集的結果計算一次資訊熵,然後判斷按照哪個特徵劃分資料集是最好的劃分方式。
建立乙個新的列表物件:為了不修改原始資料集
將符合特徵的資料抽取出來:遍歷資料集中的每個元素,一旦發現符合要求的值,則將其新增到新建立的列表中
使用列表推導(list comprehension)來建立新的列表,將資料集中所有特徵值或者可能存在的值寫入這個新list中
遍歷當前特徵中的所有唯一屬性值,對每個特徵劃分一次資料集
計算資料集的新熵值,並對所有唯一特徵值得到的熵求和
比較所有特徵中的資訊增益,返回最好特徵劃分的索引值
假定存在兩個列表,a和b:
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a
[1,2,3,[4,5,6]]
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1,2,3,4,5,6]
得到原始資料集,然後基於最好的屬性劃分資料集,由於特徵值可能多於兩個,因此可能存在大於兩個分支的資料集劃分。第一次劃分之後,資料將被向下傳遞到樹分支的下乙個節點,在這個節點上,我們可以再次劃分資料。因此我們可以採用遞迴的原則處理資料集。
遞迴結束的條件是:程式遍歷完所有劃分資料集的屬性,或者每個分支下的所有例項都具有相同的分類,則得到乙個葉子節點或者終止塊。
建議按照圖形比例繪製樹形圖,好處是無需關於實際輸出圖形的大小,一旦圖形大小發生了變化,函式會自動按照圖形大小重新繪製。具體操作是通過計算樹包含的所有葉子節點數,劃分圖形的寬度,從而計算得到當前節點的中心位置,也就是,按照葉子節點的數目將x軕劃分為若干部分。
【treeplotter.py】
構造決策樹很耗時,為了節省計算時間,最好能夠在每次執行分類時呼叫已經構造好的決策樹。而儲存決策樹的具體方法是使用python模組pickle序列化物件,將分類器儲存在硬碟上。
裁剪決策樹,去掉一些不必要的葉子節點。如果葉子節點只能增加少許資訊,則可以刪除該節點,將它併入到其他葉子節點中。
機器學習 機器學習入門07 決策樹
在wikipedia的決策樹詞條中,有如下概念 統計學,資料探勘和機器學習中的決策樹訓練,使用決策樹作為 模型來 樣本的類標。這種決策樹也稱作分類樹或回歸樹。在這些樹的結構裡,葉子節點給出類標而內部節點代表某個屬性。在資料探勘中決策樹訓練是乙個常用的方法。目標是建立乙個模型來 樣本的目標值。我們前面...
機器學習實戰 決策樹
決策樹 2 python語言在函式中傳遞的是列表的引用,在函式內部對列表物件的修改,將會影響該列表物件的整個生存週期。為了消除這個不良影響,我們需要在函式的開始宣告乙個新列表物件。在本節中,指的是在劃分資料集函式中,傳遞的引數dataset列表的引用,為了不影響dataset我們重新宣告了乙個ret...
機器學習實戰決策樹
這幾天一直在學習機器學習實戰python 實現,在程式清單的3 6 獲取及誒單數程式,書上的程式是這樣的 def getnumleafs mytree numleafs 0.0 firststr list dict.keys mytree 0 seconddict mytree firststr p...