根据processed.cleveland.data数据进行数据挖掘操作
UCI公开数据集-heartdisease,属性信息如下:
1.#3(age)
2.#4(sex)
3.#9(cp)
4.#10(trestbps)
5.#12(chol)
6.#16(fbs)
7.#19(restecg)
8.#32(thalach)
9.#38(exang)
10.#40(oldpeak)
11.#41(slope)
12.#44(ca)
13.#51(thal)
14.#58(num)(thepredictedattribute)
数据集参考网址:https://archive.ics.uci.edu/ml/datasets/Heart+Disease

import math
import operatordef calcShannonEnt(dataset):numEntries = len(dataset)labelCounts = {}for featVec in dataset:currentLabel = featVec[-1]if currentLabel not in labelCounts.keys():labelCounts[currentLabel] = 0labelCounts[currentLabel] +=1shannonEnt = 0.0for key in labelCounts:prob = float(labelCounts[key])/numEntriesshannonEnt -= prob*math.log(prob, 2)return shannonEntdef CreateDataSet():#字符串转化浮点数def safe_float(number):try:return float(number)except:return None#读取数据dataset=[]with open('processed.cleveland.data') as read_file:for line in read_file:line=line.replace('\n','').split(',')line=list(map(safe_float,line))dataset.append(line)labels = ['age','sex','cp','trestbps','chol','fbs','restecg','thalach','thalach','exang','oldpeak','slope','ca','thal','num']return dataset, labelsdef splitDataSet(dataSet, axis, value):retDataSet = []for featVec in dataSet:if featVec[axis] == value:reducedFeatVec = featVec[:axis]reducedFeatVec.extend(featVec[axis+1:])retDataSet.append(reducedFeatVec)return retDataSet
def majorityCnt(classList):classCount ={}for vote in classList:if vote not in classCount.keys():classCount[vote]=0classCount[vote]=1sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) return sortedClassCount[0][0]def chooseBestFeatureToSplit(dataSet):numberFeatures = len(dataSet[0])-1baseEntropy = calcShannonEnt(dataSet)bestInfoGain = 0.0;bestFeature = -1;for i in range(numberFeatures):featList = [example[i] for example in dataSet]uniqueVals = set(featList)newEntropy =0.0for value in uniqueVals:subDataSet = splitDataSet(dataSet, i, value)prob = len(subDataSet)/float(len(dataSet))newEntropy += prob * calcShannonEnt(subDataSet)infoGain = baseEntropy - newEntropyif(infoGain > bestInfoGain):bestInfoGain = infoGainbestFeature = ireturn bestFeaturedef createTree(dataSet, labels):classList = [example[-1] for example in dataSet]if classList.count(classList[0])==len(classList):return classList[0]if len(dataSet[0])==1:return majorityCnt(classList)bestFeat = chooseBestFeatureToSplit(dataSet)bestFeatLabel = labels[bestFeat]myTree = {bestFeatLabel:{}}del(labels[bestFeat])featValues = [example[bestFeat] for example in dataSet]uniqueVals = set(featValues)for value in uniqueVals:subLabels = labels[:]myTree[bestFeatLabel][value] = createTree(splitDataSet(dataSet, bestFeat, value), subLabels)return myTreeMyData,label = CreateDataSet()#决策树ID3
createTree(MyData,label)

运行结果:

数据挖掘习题之决策树算法相关推荐

  1. 数据挖掘算法之决策树算法总结

    机器学习中,决策树是一个预测模型:它代表的是对象属性值与对象值之间的一种映射关系.树中每个节点表示某个对象,每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应具有上述属性值的子对象.决策树仅有单 ...

  2. 二叉树剪枝_数据挖掘算法:决策树算法如何学习及分裂剪枝

    1.决策树模型与学习 决策树(decision tree)算法基于特征属性进行分类,其主要的优点:模型具有可读性,计算量小,分类速度快.决策树算法包括了由Quinlan提出的ID3与C4.5,Brei ...

  3. 【数据挖掘】决策树算法简介 ( 决策树模型 | 模型示例 | 决策树算法性能要求 | 递归创建决策树 | 树根属性选择 )

    文章目录 I . 决策树模型 II . 决策树模型 示例 III . 决策树算法列举 IV . 决策树算法 示例 V . 决策树算法性能要求 VI . 决策树模型创建 ( 递归创建决策树 ) VII ...

  4. ID3和C4.5分类决策树算法 - 数据挖掘算法(7)

    (2017-05-18 银河统计) 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于这种决策分支画 ...

  5. 决策树C4.5算法 c语言实现,数据挖掘十大经典算法(1) C4.5_决策树算法

    数据挖掘十大经典算法(1) C4.5_决策树算法 机器学习中,决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系.树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每 ...

  6. 机器学习(周志华)西瓜书 课后习题4.3 信息熵决策树算法——python实现(包括树的可视化)

    机器学习(周志华)西瓜书 课后习题4.3 信息熵决策树算法--python实现(包括树的可视化) 算法原理 1.信息熵 2.信息增益 我们所以要做的就是不断地从当前剩余的属性当中选取最佳属性对样本集进 ...

  7. 《机器学习》西瓜书课后习题4.3——python实现基于信息熵划分的决策树算法(简单、全面)

    <机器学习>西瓜书课后习题4.3--python实现基于信息熵划分的决策树算法 <机器学习>西瓜书P93 4.3 试编程实现基于信息熵进行划分选择的决策树算法,并为表4.3中数 ...

  8. 【数据挖掘】-决策树算法+代码实现(七)

    目录 从例子出发 算法原理 算法的优缺点 关于剪枝 代码实现 随机森林.GBDT.XGBOOST 总结 决策树(decision tree):是一种基本的分类与回归方法,此处主要讨论分类的决策树. 在 ...

  9. 周志华《机器学习》习题4.4——python实现基于信息熵进行划分选择的决策树算法

    1.题目 试编程实现基于信息熵进行话饭选择的决策树算法,并为表4.3中数据生成一棵决策树. 表4.3如下: 另外再附个txt版的,下次可以复制粘贴: 青绿,蜷缩,浊响,清晰,凹陷,硬滑,0.697,0 ...

最新文章

  1. 367. Valid Perfect Square
  2. 提升对ASP.NET网站性能和多并发的设计的讨论
  3. 轻松获取LAMP,LNMP环境编译参数配置
  4. 一个正在加载网页的进度条,加载完后,自动消失?
  5. 自旋锁spinlock解析
  6. Day5:面向对象的定义(中)
  7. leetcode-665-Non-decreasing Array
  8. 1405 树的距离之和
  9. python语言的语法_Python语言学习系列------基础语法(一)
  10. 爬取年报数据、解析PDF提取数据、分析代码(巨潮 Python)
  11. 苹果自带相册打马赛克_原来手机点击这个按钮,就能一键生成音乐电子相册!这也太厉害了...
  12. SQL点滴25—T-SQL面试语句,练练手
  13. manjaro搭建java_Manjaro配置JDK
  14. Android系统体系结构
  15. mysql主从同步延迟优化大全
  16. 180/360度舵机控制方法
  17. 会员管理系统实战开发教程(三)-充值记录功能
  18. 利用pandas模块实现excel多行文本合并
  19. 八、QOS队列调度与报文丢弃
  20. 我是怎么利用微信月收入三万以上的!(绝对的干货来袭!)

热门文章

  1. [ZedBoard移植嵌入式Linux教程(9,10)]编译设备树dts为dtb,制作根文件系统
  2. 查询快递单号物流,查看物流信息
  3. 面对科研任务,我决定这样搭建Centos7.9服务器!
  4. Node.js web服务器文件读取
  5. Matlab BP神经网络拟合四足机器人足端轨迹线积分方程反函数用于足端轨迹规划
  6. 车牌识别OCR算法的工作原理
  7. 阿里企业邮箱使用配置指南
  8. APS计划智能车间解决方案
  9. windows系统下部署单点登录系统
  10. mremote怎么配置远程连接服务器,mRemote