機器學習 機器學習實戰 決策樹

2021-10-02 23:41:26 字數 1339 閱讀 9883

缺點:可能會產生過度匹配問題

適用資料型別:數值型和標稱型

收集資料:可以使用任何方法

準備資料:樹構造演算法只適用於標稱型資料,因此數值型資料必須離散化

分析資料:可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期

訓練演算法:構造樹的資料結構

測試演算法:使用經驗樹計算錯誤率。

使用演算法:此步驟可以適用於任何監督學習演算法,而使用決策樹可以更好地理解資料的內在含義

【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...