閱讀書籍為《hands-on machine learning with scikit-learn & tensorflow》王靜源等翻譯的中文譯版《機器學習實戰,基於 scikit-learn 和 tensorflow》
本章主要內容有:
**實現決策樹分類和回歸
**實現決策樹視覺化
決策樹分類和回歸的原理
sklearn中的cart訓練演算法
決策樹(decisiontree):是一種多功能的機器學習演算法,可以用來實現分類,回歸問題和多輸出問題;決策樹是隨機森林的基本組成部分,多個決策樹組成乙個隨機森林;決策樹不需要對資料進行特徵縮放或集中。決策樹很容易解釋理解,實現起來也很簡單,但決策樹對資料旋轉十分敏感,對訓練細節也很敏感。
1.決策樹分類和決策樹回歸
決策樹分類
sklearn通過decisiontreeclassification函式來構建決策樹,完成分類任務;
使用 鳶尾花資料集
iris = load_iris()
clf = tree.decisiontreeclassifier()
clf = clf.fit(iris.data, iris.target)
決策樹回歸
sklearn通過decisiontreeregression函式來構建決策樹,完成回歸任務;
tree_reg = decisiontreeregressor()
tree_reg.fit(iris.data, iris.target)
2.決策樹視覺化
一般呼叫決策樹export_graphviz函式先輸出乙個圖形定義檔案
然後使用graphviz的dot函式進行圖形定義檔案(.dot檔案)到圖的轉化
dot轉化後也可以輸出儲存為pdf等多種型別
export_graphviz(
tree_clf,
out_file="iris_tree.dot",
feature_names=["petal length ", "petal width"],
class_names=iris.target_names,
rounded=true,
filled=true
)
視覺化這部分沒有按照書上說的使用命令列實現,我使用graphviz的bin目錄下**edit.exe直接轉換生成。
3.決策樹分類和回歸的原理
4.sklearn中的cart訓練演算法
sklearn使用分類與回歸樹簡稱cart演算法來訓練決策樹。演算法原理:首先使用單個特徵k和閾值t(例如花瓣的長度閾值)將訓練集分為兩個子集。然後在使用相同的邏輯繼續**子集,直到抵達最大深度(這塊由超引數max_depth控制),或者到達不能再繼續降低不純度的分類就停止。
k和t由最小化成本函式計算而得,成本函式如下:
1.m left/right:表示左右例項數量;
2.g left/right:表示左右的例項不純度;
3.也可以通過附加的min_samples_split, min_samples_leaf,min_weigth_fraction_left和max_leaf_nodes來控制停止;
衡量不純度的另一種方法–資訊熵:
一般預設基尼不純度來衡量純度,不過也可以通過為超引數賦值「entropy」進行資訊熵衡量純度;此方法**於熱力學中熵的概念。在當前業務領域中純度衡量的資訊熵公式如下:
資訊熵與基尼不純度的區別:
資訊熵趨向於建立更平衡的樹,基尼不純度傾向於從樹枝中**出最常見的類別;
防止過擬合-正則化超引數:
樹的結構將跟隨訓練集變化,如果不加以限制,則會出現嚴重擬合的情況,這裡我們通過控制一些超引數來避免這樣的情況:
max_depth:控制樹的深度;
min_samples_split(**前節點必須由的最小樣本數),min_samples_leaf(葉子結點必須有的最小樣本數量),min_weigth_fraction_left(加權例項總數的佔比)和max_leaf_nodes(最大葉結點數):控制樹的形狀。
通過以上,可以明顯感到決策樹很容易解釋理解,實現起來也很簡單,但決策樹對資料旋轉十分敏感,對訓練細節也很敏感。有明顯的不穩定性。對此,下一章隨機森林將通過對許多樹的**進行平均來限制這種不穩定性。
第六章讀書筆記
linux系統將每個驅動都對映成乙個檔案,這些檔案稱為裝置檔案或驅動檔案,都儲存在 dev目錄中。編寫linux驅動程式的步驟 第1 步 建立linu x 驅動骨架 裝載和解除安裝linu x 驅動 第2 步 註冊和登出裝置檔案 第3 步z 指定與驅動相關的資訊 第4 步 指定 函式 第5 步z 編...
第六章 讀書筆記
第六章主要講的是第乙個linux 驅動程式 統計單詞個數。從這章開始進入了實戰階段,這一章首先介紹了linux 驅動的工作方式,linux 將每乙個驅動都對映成乙個檔案,這些檔案被稱為裝置檔案或驅動檔案,都儲存在 dev 目錄中,使得 linux 驅動互動就像是普通檔案互動一樣。編寫linux 驅動...
C Primer 讀書筆記 第六章
第 章 語句 簡單語句 表示式語句 expression r statement 乙個表示式加上結尾的分號,執行時導致該表示式被求值 空語句 null statement 只由乙個單獨的分號組成,當語法上需要乙個語句但邏輯上並不需要時使用 宣告語句 用於宣告或定義物件或類 復合語句 復合語句 com...