Python 決策樹演算法的實現

2021-07-26 15:26:35 字數 2056 閱讀 6761

完整的程式如下:

>from sklearn.feature_extraction import dictvectorizer

>import csv

>from sklearn import tree

>from sklearn import preprocessing

>from sklearn.externals.six import stringio

># 第一步:讀取csv檔案

>def

traindicisiontree

(csvfileurl):

> featurelist = # 儲存特徵值

> labellist = # 儲存**的目標值

> allelectronicsdata=open(csvfileurl) # 讀取csv檔案

> reader = csv.reader(allelectronicsdata) #逐行讀取

> headers=str(allelectronicsdata.readline()).split(',') # 讀取表頭

> print headers

> for row in reader:

> rowdict = {} #存放特徵值的字典

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

> rowdict[headers[i]] = row[i]

> # print("rowdict:",rowdict)

> print(featurelist)

> # 將文字資訊轉化為機器學習決策樹庫檔案可以識別的形式

> vec = dictvectorizer() # 整型數字轉化

> dummyx = vec.fit_transform(featurelist).toarray() # 特徵值轉化為整型資料

> print

"dummyx: " + str(dummyx)

> print(vec.get_feature_names())

> print("labellist: " + str(labellist))

> lb = preprocessing.labelbinarizer()

> dummyy = lb.fit_transform(labellist)

> print("dummyy: \n" + str(dummyy))

>

> # 使用決策樹進行分類**處理

> # 自定義採用資訊熵的方式確定根節點

> clf = tree.decisiontreeclassifier(criterion='entropy')

> clf = clf.fit(dummyx, dummyy)

> print

"clf: " + str(clf)

> # 視覺化模型

> with open("****.dot", 'w') as f:

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

> # **

> pre = clf.predict([[0,0,1,1,1,1,0,0,1,0]])

安裝後,需要將graphviz安裝目錄下的bin資料夾新增到path環境變數中

驗證:cmd進入命令列介面,輸入dot -version,如果顯示graphviz的相關版本資訊,則安裝配置成功。

安裝成功之後,cd 切換到tree.dot所在的路徑

> dot -tpng ****.dot -o tree.png

決策樹演算法 python實現

定義 資訊增益 再劃分資料之前之後資訊發生的變化。香濃熵 簡稱熵 集合資訊的度量方式,熵是資訊的期望值。其實決策樹主要就是選擇最優劃分屬性對給定集合進行劃分,隨著花粉的不斷進行,我們希望最終決策樹所包含的樣本盡量屬於同一類別,即結點的 純度 越來越高。資訊增益的計算 1.資訊熵的計算ent d 越小...

Python實現決策樹演算法

決策樹的一般流程 檢測資料集中的每個子項是否屬於同乙個分類 if so return 類標籤 else 尋找劃分資料集的最好特徵 劃分資料集 建立分支 節點 from math import log import operator 生成樣本資料集 defcreatedataset dataset 1...

決策樹演算法 Python實現

import matplotlib.pyplot as plt import pandas as pd from sklearn.datasets import fetch california housing housing fetch california housing print housi...