決策樹 初識

2022-05-15 16:29:22 字數 2869 閱讀 8211

決策樹:

顯然e(a)越小,gain(a)的值越大,說明選擇測試屬性a對於分類提供的資訊越大,選擇a之後對分類的分類提供的資訊越大,選擇a之後對分類的不確定成都越小.屬性a的k個不同的值對應樣本集s的k個子集或分支,通過遞迴呼叫上述的過程(不包括已經選擇的屬性),生成其他屬性作為節點和分支來生成整個決策樹.id3決策樹演算法作為乙個典型的決策樹學習演算法,其核心是在決策樹的各級節點上都用資訊增益作為判斷標準進行屬性的選擇,使得在每個非葉節點上進行測試時,都能獲得最大的類別分別增益,使分類後的資料集的熵最小,這樣的處理方法,使得樹的平均深度較小,從而有效提高了分類效益..

id3演算法的具體流程:對當前樣本集合,計算所有屬性的資訊增益;

選擇資訊增益最大的屬性作為測試屬性,把測試數屬性取值相同的樣本劃分為同乙個子集樣本集

若子樣本集的類別屬性止汗有單個屬性,則分支為葉子節點,判斷其屬性值並標上相應的符號,然後返**用出;否則對子樣本集遞迴呼叫本演算法

下面對餐飲公司的例子進行那個剖析,一下是處理後的資料:

序號,天氣,是否週末,是否**,銷量

1,壞,是,是,高

2,壞,是,是,高

3,壞,是,是,高

4,壞,否,是,高

5,壞,否,是,高

6,好,否,否,低

7,好,是,否,低

8,好,是,是,高

9,好,是,是,高

10,好,否,是,高

11,壞,是,是,低

12,壞,是,否,低

13,壞,否,否,低

14,好,是,是,高

15,好,是,是,高

16,好,否,是,高

17,好,否,是,高

18,壞,否,是,低

19,壞,否,是,低

20,壞,是,否,低

21,壞,是,否,低

22,好,是,是,高

23,好,否,是,高

24,好,否,是,高

25,好,否,否,低

26,壞,否,否,低

27,壞,是,否,低

28,壞,是,是,高

29,好,是,是,高

30,好,否,否,低

31,好,否,是,低

32,壞,是,是,高

33,壞,是,是,低

34,壞,是,是,低

#

-*- coding:utf-8 -*-

import

sysreload(sys)

sys.setdefaultencoding(

"utf-8")

"""利用id3決策樹演算法**銷量高低

"""#

引數初始化

import

pandas as pd

data = pd.read_csv("

./practice_data.csv

", header=none, sep=","

, names=["

number

", "

tianqi

", "

weekend

", "

pt", "

count"])

print data["

tianqi"]

#資料是類別標籤,要將她轉換成資料

#用1來表示"好", "是", "高"這三個屬性,用-1來表示"壞","否","低"

data[data["

tianqi

"] == u"

好"] = 1data[data[

"tianqi

"] == u"

壞"] = -1

print data["

tianqi"]

data[data[

"weekend

"] == u"

是"] = 1data[data[

"weekend

"] == u"

否"] = -1

print data["

weekend"]

data[data["pt

"] == u"

是"] = 1data[data["pt

"] == u"

否"] = -1data[data[

"count

"] == u"

高"] = 1data[data[

"count

"] == u"

低"] = -1

print

data

#print data

x = data.iloc[:,:3].as_matrix().astype(int)

y = data.iloc[:,3].as_matrix().astype(int)

from sklearn.tree import

decisiontreeclassifier as dtc

dtc = dtc(criterion="

entropy

") #

建立決策樹模型, 基於資訊熵

dtc.fit(x, y) #

訓練模型

#匯入相關函式,視覺化決策樹

#匯出的結果是乙個dot檔案, 需要安裝graphviz才能將它轉化為pdf或png等格式

from sklearn.tree import

export_graphviz

from sklearn.externals.six import

stringio

with open(

"tree.dot

", "w"

) as f:

f = export_graphviz(dtc, feature_names=x.columns, out_file=f)

python機器學習決策樹初識

coding utf 8 importnumpyasnp importpandasaspd fromsklearn.datasetsimportload iris 匯入鳶尾花資料 fromsklearnimporttree 匯入機器學習決策樹包 fromsklearn.cross validatio...

02 決策樹 初識與構建

在講決策樹之前補充了一些基本概念 位元化 資訊熵 條件熵,重點理解熵的概念。本章開始正式進入機器學習模型 決策樹。01 決策樹 數學理論概述 決策樹 decision tree 在已知各種情況發生概率的基礎上,通過構建決策樹來進行分析的一種方式,是一種 運用概率分析的 法 決策樹是乙個 模型,代表物...

決策樹和CART決策樹

首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...