前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大话机器学习之决策树(DS)

大话机器学习之决策树(DS)

作者头像
钱塘小甲子
发布2019-01-29 09:38:29
4200
发布2019-01-29 09:38:29
举报

      什么是决策树呢?其实很直观,这样的就是

      不说了,先看数据:

      这是一个医疗检测的数据,前面六个是指标,具体是什么其实没有意义,说的好像化验单上的那些医学术语你都知道似得。最后一个就是结果。我们就是要构建一颗决策树,根据前面六个指标,预测最后结果是消极还是积极。当然,码代码之前我们先要对数据做一点处理。

      对于后面这一行,我们当然是把消极变为0,积极变为1,结果大概呢就是这样的。so easy!

      对了,数据、还有接下来的代码,大家可以去我的github上面下载整个完整的工程。里面都有。地址在最后给出哦!

      然后就是写代码了。这次我们还是使用sklearn这个库,谁叫他这么好用呢。

1.导入库
代码语言:javascript
复制
import csv
from sklearn import tree 
import numpy as np
2.读取数据
代码语言:javascript
复制
def readData(path,ratio):
    reader = csv.reader(file(path, 'rb'))
    data = []
    flag = []
    dataTrain = []
    flagTrain = []   
    dataTest = []
    flagTest = [] 
    for line in reader:
        data.append([float(line[0]),float(line[1]),float(line[2]),float(line[3]),float(line[4]),float(line[5])])
        flag.append(float(line[6]))
    for i in range(0,int(len(data)*ratio)):
        dataTrain.append(data[i])
        flagTrain.append(flag[i])
    for i in range(int(len(data)*ratio),len(data)):
        dataTest.append(data[i])
        flagTest.append(flag[i])
    return dataTrain,flagTrain,dataTest,flagTest

      和之前的也没什么区别,不过受到前面ByPython数据的启发,在里面加了个内容,就是能够按照比例,自动产生训练数据和测试数据。

3.测试
代码语言:javascript
复制
path = 'I:/MLtrain/hData.csv'#设置文件的路径
X_train,Y_train,X_test,Y_test = readData(path,0.8)#读取数据,按照4:1的比例分割训练集和测试集
clf = tree.DecisionTreeClassifier()#生成一个DT 分类器
clf = clf.fit(X_train, Y_train)#训练这个DT
pre=clf.predict(X_test)
print np.sum(np.abs(pre - np.array(Y_test)))/len(pre)#输出错误率

      代码比较简单。最后的结果是0.08的错误率,也就是92%的准确率,相当不错哦!

4.关于原理

      决策树的原理是什么呢?这里简单说一下。我们简化一下,考虑一个一个离散的情况,

      是网上流传的很经典的大龄女性相亲决策树模型。为什么第一个节点是年龄而不是别的呢?我们按照怎么样的顺序去选择这些节点呢。

      一个节点选择的好坏使用信息熵来衡量的,如果一个节点一分类之后,发现把情况彻底分开了,那么这个就是最好的,因为每一个部分都很“纯”,不是0就是1.反过来,如果还是很杂,比如年龄三十以下和年龄三十以上两个部分分开之后,每一个部分还是混了很多不见和见的情况,那么就没什么意义。这种数据的“纯度”就是用信息熵来衡量的。这里就不给大家写什么公式了,有兴趣的可以找数据挖掘的书看看。原理就是这个样子的。

      大家可以去我的Github上面下载代码和数据:https://github.com/Luyixiao/DecisionTree

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年06月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.导入库
  • 2.读取数据
  • 3.测试
  • 4.关于原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档