简单的ID3分类算法——决策树(Decision Tree)


决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。类似这样~


image.png

决策树它根据信息熵,熵表示不确定性,信息熵表示事物信息间A/B的不确定系数(比如:拳王打你信息熵极小,因为稳定性、确定性高,也就是概率高),决策树算法就是根据在每次在节点需要分裂前,计算每个属性的增益率,然后选择增益率最大的属性进行分裂(不确定的切分出来继续分裂),因为信息熵越大它的数据集合占比越大,筛选出来的数据就越多。

下面是用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附件,如有需要,欢迎大家留言交流~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转自算法杂货铺--决策树决策树和随机森林学习笔记-欢迎补充 http://www.cnblogs.com/fion...
    尧字节阅读 13,663评论 1 6
  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 11,178评论 0 25
  • 3.1、摘要 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法。这两种算法都以贝叶斯定理为...
    chaaffff阅读 4,381评论 0 1
  • 这里开始机器学习的笔记记录。今天的这篇是一个分类方法--决策树。 决策树优点:计算复杂度不高,输出结果易于理解,对...
    七号萝卜阅读 11,545评论 0 18
  • 连续的阴雨天气洗刷着整座城市,仿佛要冲刷掉之前所有的炎热!看着窗外绵绵细雨络绎不绝,什么时候开始我不再埋怨阴沉的雨...
    小小萍ma阅读 1,261评论 0 0

友情链接更多精彩内容