1. 程式人生 > >機器學習實戰-決策樹

機器學習實戰-決策樹

決策樹的第一個演算法為,計算給定資料集的夏農熵

夏農熵的計算公式都給出來了,下面貼一下程式碼

還是比較好懂的,就是先建立一個字典,在字典裡面對每個類別新建一個鍵值對,值為每個類別的樣本個數

之後分別計算概率啊什麼的

輸出如下

跟書上的答案是一樣的

我個人有一點點的疑問是對字典型別的自建函式

下面看看python文件

dict.keys()             

返回一個包含字典中鍵的列表

>>> help(dict.keys)
Help on method_descriptor:

keys(...)
    D.keys() -> a set-like object providing a view on D's keys

dict.values()           

返回一個包含字典中所有值的列表

>>> help(dict.values)
Help on method_descriptor:

values(...)
    D.values() -> an object providing a view on D's values

dict.items()

返回一個包含字典中(鍵, 值)對元組的列表

>>> help(dict.items)
Help on method_descriptor:

items(...)
    D.items() -> a set-like object providing a view on D's items

下面是按照給定的屬性以及屬性值劃分資料集,

書上的例子是每次如果使用過這個屬性之後,就將這個屬性從資料集中去掉

我覺得不需要這樣

下面選擇最好的劃分樣本集的方式:

貼程式碼:

有點亂,而且有一個地方書上是用列表生成的方法做的,比我寫的要好一些,但功能是一樣的

最後的返回值結果是一樣的。

下面是建立樹的程式碼,

因為之前我寫的函式與書上的略微有差別,故這裡我又進行了改動,增加了一個引數,就是attribute_num,表示的是樣本中屬性的個數,這個值需要自己去傳。

剛剛還是有點不熟悉232行前面的是什麼意思,所以就順手寫了幾個示例。現在算是明白了

相關推薦

機器學習實戰——決策Python實現問題記錄

問題:NameError: name 'reload' is not defined import imp import trees imp.reload(trees) 結論:已經匯入過的模組才能用reload, reload的引數應該是模組名,而不是檔名。在pyhton3.x中要先匯入檔案

機器學習實戰-決策-畫圖

  獲取樹節點的資料以及樹的層數 def getNumLeafs(myTree):       numLeafs=0   firstStr

機器學習實戰--決策(一)

決策樹是一種通過推斷分解,逐步縮小待推測事物範圍的演算法結構,重要任務就是理解資料中所蘊含的知識資訊,可以使用不熟悉的資料集合,並從中提取出一系列規則,根據資料集建立規則的過程就是機器學習的過程。 優點:計算複雜度不高,輸出結果易於理解,對中間值的缺失不敏感,可以處理不相關特

機器學習實戰--決策

程式碼: import numpy as np import operator #計算夏農熵,度量資料集的無序程度 def calcShannonEnt(dataSet): numEntries = len(dataSet) labelCountes = {

機器學習實戰決策(一)——資訊增益與劃分資料集

from math import log #計算給定的熵 def calcsahnnonent(dataset): numentries = len(dataset) #計算例項的總數 labelcounts ={} #

機器學習實戰——決策

本文記錄的是《機器學習實戰》和《統計學習方法》中決策樹的原理和實現。 1、決策樹 定義:分類決策樹模型是一種描述對例項進行分類的樹形結構。決策樹由節點(node)和有向邊(directed edge)組成。節點有兩種型別:內部結點和葉結點,內部結點表示一

機器學習實戰 決策 演算法 筆記

trees.py 原始碼部分: from math import logimport operatordef calcShannonEnt(dataSet):numEntries=len(dataSet)labelCounts={}for featVec in dataSe

機器學習實戰-決策

決策樹的第一個演算法為,計算給定資料集的夏農熵 夏農熵的計算公式都給出來了,下面貼一下程式碼 還是比較好懂的,就是先建立一個字典,在字典裡面對每個類別新建一個鍵值對,值為每個類別的樣本個數 之後分別計算概率啊什麼的 輸出如下 跟書上的答案是一樣的 我個人有

機器學習決策與隨機森林模型

會有 strong pytho red -s 很多 4.5 是我 機器 歡迎大家前往騰訊雲技術社區,獲取更多騰訊海量技術實踐幹貨哦~ 作者:汪毅雄 導語 本文用容易理解的語言和例子來解釋了決策樹三種常見的算法及其優劣、隨機森林的含義,相信能幫助初學者真正地理解相關知識

機器學習系列-決策

決策樹歸納 tin 優化 貪心 閾值 相關 數據源 準備 調用 決策樹 什麽是決策樹 決策樹是一種簡單高效並且具有強解釋性的模型,廣泛應用於數據分析領域。其本質是一顆由多個判斷節點組成的樹。 上圖是一個簡單的決策樹模型,用來判斷某個動物樣本是否屬於哺乳動物,樹中包含三種節

機器學習_決策

TP mage 技術分享 ima height 分享圖片 image bsp 決策樹 機器學習_決策樹

機器學習決策(基尼系數)

try matplot 代碼實現 sci bubuko div tro 兩種 () 一、基礎理解  1)公式 k:數據集中樣本類型數量; Pi:第 i 類樣本的數量占總樣本數量的比例  2)實例計算基尼系數 3 種情況計算基尼系數: 基尼系數的性質與信息熵

機器學習_決策Python代碼詳解

機器 one math n) sco atl return 復雜度 重復 決策樹優點:計算復雜度不高,輸出結果易於理解,對中間值的缺失不敏感,可以處理不相關特征數據; 決策樹缺點:可能會產生過度匹配問題。 決策樹的一般步驟: (1)代碼中def 1,計算給定數據集的香農熵:

機器學習決策(二)

天氣 次數 format 定義 表示 葉子節點 ast 代碼 wid 一、復習信息熵   為了解決特征選擇問題,找出最優特征,先要介紹一些信息論裏面的概念。   1、熵(entropy)          python3代碼實現: def calcShannonEnt(

ID3的REP(Reduced Error Pruning)剪枝程式碼詳細解釋+周志華《機器學習決策圖4.5、圖4.6、圖4.7繪製

處理資料物件:離散型資料 資訊計算方式:熵 資料集:西瓜資料集2.0共17條資料 訓練集(用來建立決策樹):西瓜資料集2.0中的第1,2,3,6,7,10,14,15,16,17,4 請注意,書上說是10條,其實是上面列出的11條。 驗證集(用來對決策樹剪枝):西瓜資料集2.0中的5,8

[三]機器學習決策與隨機森林

3.1 目標任務 1.學習決策樹和隨機森林的原理、特性 2.學習編寫構造決策樹的python程式碼 3.學習使用sklearn訓練決策樹和隨機森林,並使用工具進行決策樹視覺化 3.2 實驗資料 資料集:鳶尾花資料集,詳情見[機器學習之迴歸]的Logistic迴歸實驗 3.3

機器學習3---決策

    決策樹(decision tree)是一種典型的非線性分類演算法。因為是針對於非數值型特徵的決策,且決策過程都是按照樹狀結構進行,由此得名決策樹。     首先,非數值型特徵是指非數值化的特徵,如:名義特徵(使用特定的名詞描述某個物體)、序數特

機器學習_8.決策演算法

1.ID3演算法 預備知識 1.資訊熵: 2.資訊增益      演算法內容 引入了資訊理論中的互資訊(資訊增益)作為選擇判別因素的度量,即:以資訊增益的下降速度作為選取分類屬性的標準,所選的測試屬性是從根節點到當前節點的路徑上從沒有

機器學習決策剪枝優化及視覺化

前言 \quad\quad 前面,我們介紹了分類決策樹的實現,以及用 sklearn 庫中的 DecisionTre

機器學習決策與隨機森林(轉)

文章轉自: https://www.cnblogs.com/fionacai/p/5894142.html    首先,在瞭解樹模型之前,自然想到樹模型和線性模型有什麼區別呢?其中最重要的是,樹形模型是一個一個特徵進行處理,之前線性模型是所有特徵給予權重相加得到一個新的值。決