機器學習 決策樹

2022-06-22 05:36:12 字數 3485 閱讀 3429

學習開始前的環境搭建:

1、安裝anaconda4.2.0(因為想著以後可能會用到tensorflow)

anaconda必須安裝4.2版本,不能安裝4.3 版本;滿滿的血淚史 

因為我們需要安裝自帶的python必須是3.5,才可以呼叫tensorflow

但是anaconda4.3自帶是python3.6 ,無法呼叫tensorflow

2、使用的是pycharm 2017.2

3、安裝 graphviz: 

配置環境變數,即將安裝路徑到bin下的目錄加到系統環境變數path中

轉化dot檔案至pdf視覺化決策樹,在cmd中執行:dot -tpdf iris.dot(要轉換的檔案) -o outpu.pdf**換成的檔案)

理論學習:

什麼是決策樹/判定樹(decision tree)?

判定樹是乙個類似於流程圖的樹結構:其中,每個內部結點表示在乙個屬性上的測試,每個分支代表乙個屬性輸出,而每個樹葉結點代表類或類分布。樹的最頂層是根結點。

資訊熵(entropy)

演算法:

例項應用:

根據乙個人的各種資訊來判斷是否會買電腦

資料集:

準備:將資料集資訊轉成csv檔案:

**:

1

from sklearn.feature_extraction import

dictvectorizer

2import

csv3

from sklearn import

preprocessing

4from sklearn import

tree

5from sklearn.externals.six import

stringio

67 allelectronicsdata = open(r"

d:\documents\pycharmprojects\dataset\allelectronics.csv

", "

r") #

開啟相應csv檔案

8 reader =csv.reader(allelectronicsdata)

9 headers =next(reader)

1011

print(headers) #

輸出csv檔案的頭資訊,檢測是否正確讀取

1213 featurelist = #

用來裝特徵值age、income、student、credit_rating的資訊

14 labellist = #

用來裝class_buys_computer的值

15for row in

reader:

取每行的最後乙個值即class_buys_computer放入labellist中

1718

#將前四列的值,以age等為key的形式存入到字典中

19 rowdict ={}

20for i in range(1, len(row) - 1):

21 rowdict[headers[i]] =row[i]

2223

2425

print

(featurelist)

2627 vec = dictvectorizer() #

python自帶的方法,將字典值轉換成0 1格式

28 dummyx =vec.fit_transform(featurelist).toarray()

2930

print("

dummyx:

" +str(dummyx))

31print

(vec.get_feature_names())

3233

print("

leabellist:

" +str(labellist))

3435 lb =preprocessing.labelbinarizer()

36 dummyy =lb.fit_transform(labellist)

37print("

dummyy:

" +str(dummyy))

3839

#using decision tree for classification

40 clf = tree.decisiontreeclassifier(criterion='

entropy

') #

度量標準,用id3演算法,所以指明criterion='entropy'資訊熵

41 clf = clf.fit(dummyx, dummyy) #

建模,填引數,構建決策樹

42print("

clf:

" +str(clf))

4344

#儲存了決策樹的所有資訊的檔案

45 with open("

allelectronicinformationgainori.dot

", 'w'

) as f:

46 f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file=f)

4748

#取資料集轉換後的第一行進行檢視

49 onerowx =dummyx[0, :]

50print("

onerowx:

" +str(onerowx))

5152

#新建一行作為**時的用例

53 newrowx =onerowx

5455

#更改第一行的部分資料來生成測試用例

56 newrowx[0] = 1

57 newrowx[2] =0

58print("

newrowx:

" +str(newrowx))

5960

#進行**與列印**結果

61 predictedy =clf.predict(newrowx)

62print("

predictedy:

" + str(predictedy))

allelectronicinformationgainori.dot檔案:

轉成相應的pdf檔案:allelectronicinformationgainori.pdf

機器學習 決策樹

一 基本概念 決策樹 decision tree 是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示屬於特徵對例項進行分類的過程,它可以認為是if then規則的集合,也可以認為是電議在特徵空間與類空空上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹的學習通常包括3...

機器學習 決策樹

我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...

機器學習 決策樹

一 演算法簡介 決策樹一般都是自上而下來生成的,每個決策後事件 即自然狀態 都可能引出兩個或多個事件,導致結果的不同,把這種結構分支畫成形狀很像一棵樹的枝幹,故稱為決策樹。決策樹能夠讀取資料集合,並且決策樹很多任務都是為了資料中所蘊含的知識資訊,因此決策樹可以使用不熟悉的資料集合,並從中提取一系列規...