簡單的ID3分類算法——決策樹(Decision Tree)


決策樹(decision tree)是一個樹結構(可以是二叉樹或非二叉樹)。類似這樣~


image.png

決策樹它根據信息熵,熵表示不確定性,信息熵表示事物信息間A/B的不確定系數(shù)(比如:拳王打你信息熵極小,因為穩(wěn)定性、確定性高,也就是概率高),決策樹算法就是根據在每次在節(jié)點需要分裂前,計算每個屬性的增益率,然后選擇增益率最大的屬性進行分裂(不確定的切分出來繼續(xù)分裂),因為信息熵越大它的數(shù)據集合占比越大,篩選出來的數(shù)據就越多。

下面是用Python寫的簡單的決策樹ID3算法,判斷顧客是否購買電腦的練習,由于csv文件不能上傳所以內容大致是這樣

tree.csv

code

import csv
from sklearn.feature_extraction import DictVectorizer
from sklearn.externals.six import StringIO
from sklearn import tree
from sklearn import preprocessing

file = open(r"D:\pypro\mleaning\tree.csv", "r")
coll = csv.reader(file)

lab = []
fature = []

tab = [t[0] for t in coll]
tit = tab[0].split("\t")

for r in tab[1:]:
    lab.append(r[-1])

    r1 = r.split("\t")
    rowdict = {tit[cnt]: r1[cnt] for cnt in range(1,5)}
    fature.append(rowdict)

# print(fature)
# print(lab)
vec = DictVectorizer()
dummyx = vec.fit_transform(fature).toarray()
print(dummyx)
print(vec.get_feature_names())
lb = preprocessing.LabelBinarizer()
dummyy = lb.fit_transform(lab)
print("dummy:" + str(dummyy))
dectree = tree.DecisionTreeClassifier(criterion="entropy")
clf = dectree.fit(dummyx, dummyy)
print("clf:" + str(clf))

由于不能上傳csv附件,如有需要,歡迎大家留言交流~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 轉自算法雜貨鋪--決策樹決策樹和隨機森林學習筆記-歡迎補充 http://www.cnblogs.com/fion...
    堯字節(jié)閱讀 10,912評論 1 6
  • 決策樹理論在決策樹理論中,有這樣一句話,“用較少的東西,照樣可以做很好的事情。越是小的決策樹,越優(yōu)于大的決策樹”。...
    制杖灶灶閱讀 6,056評論 0 25
  • 3.1、摘要 在前面兩篇文章中,分別介紹和討論了樸素貝葉斯分類與貝葉斯網絡兩種分類算法。這兩種算法都以貝葉斯定理為...
    chaaffff閱讀 959評論 0 1
  • 這里開始機器學習的筆記記錄。今天的這篇是一個分類方法--決策樹。 決策樹優(yōu)點:計算復雜度不高,輸出結果易于理解,對...
    七號蘿卜閱讀 6,600評論 0 18
  • 連續(xù)的陰雨天氣洗刷著整座城市,仿佛要沖刷掉之前所有的炎熱!看著窗外綿綿細雨絡繹不絕,什么時候開始我不再埋怨陰沉的雨...
    小小萍ma閱讀 169評論 0 0

友情鏈接更多精彩內容