資料探勘 決策樹ID3分類演算法的C 實現

2022-04-02 19:43:47 字數 671 閱讀 9888

資料探勘課上面老師介紹了下決策樹id3演算法,我抽空餘時間把這個演算法用c++實現了一遍。

決策樹演算法是非常常用的分類演算法,是逼近離散目標函式的方法,學習得到的函式以決策樹的形式表示。其基本思路是不斷選取產生資訊增益最大的屬性來劃分樣例集和,構造決策樹。資訊增益定義為結點與其子結點的資訊熵之差。資訊熵是夏農提出的,用於描述資訊不純度(不穩定性),其計算公式是

pi為子集合中不同性(而二元分類即正樣例和負樣例)的樣例的比例。這樣資訊收益可以定義為樣本按照某屬性劃分時造成熵減少的期望,可以區分訓練樣本中正負樣本的能力,其計算公司是

我實現該演算法針對的樣例集合如下

該錶記錄了在不同氣候條件下是否去打球的情況,要求根據該錶用程式輸出決策樹

c++**如下,程式中有詳細注釋

輸入的訓練資料如下

程式輸出決策樹如下

可以用圖形表示為

有了決策樹後,就可以根據氣候條件做**了

例如如果氣候資料是 ,根據決策樹到左側的yes葉節點,可以判定會去游泳。

另外在編寫這個程式時在資料結構的設計上面走了彎路,多叉樹的實現有很多方法,本演算法採用每個結點的所有孩子用vector儲存比較合適,同時注意維護剩餘樣例和剩餘屬性資訊,建樹時橫向遍歷靠迴圈屬性的值,縱向遍歷靠遞迴呼叫 ,總體是dfs,樹和圖的遍歷在程式設計時經常遇到,得熟練掌握。程式有些地方的效率還得優化,有不足的點地方還望大家拍磚。

分類演算法 決策樹(ID3)

決策樹是以例項為基礎的歸納學習演算法。它從一組無次序 無規則的元組中推理出決策樹表示形式的分類規則。它採用自頂向下的遞迴方式,在決策樹的內部結點進行屬性值的比較,並根據不同的屬性值從該結點向下分支,葉結點是要學習劃分的類。從根到葉結點的一條路徑就對應著一條合取規則,整個決策樹就對應著一組析取表示式規...

資料探勘演算法 決策樹ID3演算法

id3演算法是一種分類 演算法,其核心思想是 資訊熵 id3演算法通過計算每個屬性的資訊增益,認為資訊增益高的是好屬性,每次劃分選取資訊增益最高的屬性為劃分標準,重複這個過程,直至生成乙個能完美分類訓練樣例的決策樹。該決策樹方法先根據訓練集資料形成決策樹,如果該樹不能對所有物件給出正確地分類那麼選擇...

決策樹 ID3演算法

id3演算法通過計算每個屬性的資訊增益,認為資訊增益越大屬性越優,每次劃分選取資訊增益最大的屬性為劃分標準,重複這個過程,直到構成一棵決策樹。資訊熵是描述事件給我們的驚訝程度,如果所有事件的概率均等,那熵值大,驚訝程度低。如果有一事件的概率極高而其他極低,熵值便低,驚訝程度大。其計算公式如下 資訊增...