决策树
来源:互联网 发布:江湖外卖3.0源码 编辑:程序博客网 时间:2024/06/05 08:29
决策树是一个类似于流程图的树结构。其中,每个内部节点表示在一个属性上的测试,每个分类代表一个属性输出,而每个输液结点代表类或类分布,树的最顶层是根结点。
决策树是机器学习中分类方法中的一个重要算法。
现在有这样一组数据:
简单的根据条件判断用户是否买电脑。
如果仅考虑年龄,我们可以构建这样一个结点:
根据年龄老中青判断。
首先我们要知道一个概念:熵
一条信息的信息量大小和它的不确定性有直接的关系,要确定一件不确定的事情,就要获得大量的信息。
表示一条信息的不确定性即信息熵,不确定性越大,熵越大,用比特(bit)来衡量信息的多少。
根据熵的大小选择叶子结点:
算法:
树以代表训练样本的单个结点开始
如果样本都在同一个类,则该结点为树叶,并用该类标号
所有的属性都是分类的,即离散值,连续属性必须离散化
对测试属性的每个已知的值,创建一个分支,并据此划分样本
算法使用同样的过程,递归地形成每个划分上的样本判定树,一旦一个属性出现在一个结点上,就不必在该结点的任何后代上考虑它
递归划分步骤仅当下列条件之一成立停止:
给定结点的所有样本属于同一类
没有剩余属性可以用来进一步划分样本,在此情况下,使用多数表决
程序实现:
#coding: utf-8#author: 吴晶#wechat: 18007148050from sklearn import *from sklearn.feature_extraction import DictVectorizerimport csvfrom sklearn import preprocessingfrom sklearn import treefrom sklearn.externals.six import StringIO#读取数据allElectronicsData = open("E:\program\TensorFlow\ElementTree\\allElementTree.csv",'rt')reader = csv.reader(allElectronicsData)headers = next(reader)#print(headers)featureList = []labelList = []for row in reader: labelList.append(row[len(row)-1]) rowDict = {} for i in range(1,len(row)-1): #print(row[i]) rowDict[headers[i]] = row[i] # print("rowDict: ",rowDict) featureList.append(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: " + str(dummyY))clf = tree.DecisionTreeClassifier(criterion="entropy")clf = clf.fit(dummyX,dummyY)# print("clf: "+ str(clf))with open("allElectronicInformationGainOri.dot","w") as f: f = tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file= f)oneRowX = dummyX[0,:]# print("oneRowX: " + str(oneRowX))newRowX = oneRowXnewRowX[0] = 1newRowX[2] = 0# print("newRowX: " + str(newRowX))predictedY = clf.predict([newRowX])print("predictedY: " + str(predictedY))
阅读全文
0 0
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 第十五周项目四——英文单词的基数排序
- 搜藏一个较全的数据集目录
- An overview of gradient descent optimization algorithms
- ttf、eot、otf、woff、svg字体格式介绍
- 《数学之美》观感
- 决策树
- it的伦理与道德
- 选择排序
- 第八周 项目1 数据结构之自建算法库——顺序串
- java反射机制
- BASIC-6 基础练习 杨辉三角形
- 第八周 项目二 建立链串的算法库
- Vue需要注意的地方
- CNN QA(Question and Answer)问答的theano和tensorflow代码