机器学习-利用信息熵来学习如果分辨好西瓜
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。
我们通常用Entropy(信息熵来度量划分的凌乱程度)。
Ent(D)越小,则信息熵的复杂程度越低,D的纯度(一种刻画信息熵度量的单位)越高。而信息增益则是直接以信息熵为基础,刻画当前划分对信息熵所造成的变化。这个方法主要应用在ID3模型中。
离散属性a的取值:
:D中在a上取值=的样本集合
以属性a对数据集D进行划分所获得的信息增益为:
讲到这里我们引入一个西瓜数据集来说明计算机是如何根据西瓜的特征学习并判断一个西瓜的好坏。
这个数据集里面包含了17个训练样例,有两个结果类别,好瓜和坏瓜。好瓜比例为,坏瓜比例为,则根节点的信息熵为
现在我们可以选择分类的属性有色泽、根蒂、敲声、纹理、脐部、触感,那么哪一个属性的重要性更高了,这里我们用信息熵增益来判断以哪种属性进行分类会更好。
这里以色泽为例:共分为三类{青绿、浅白、乌黑}分别对应D1,D2,D3,子集D1中包括了{1,4,6,10,13,17}6个实例,其中好瓜占比0.5,坏瓜占比0.5,D2,D3同理可求,Ent(D1)=1.000,Ent(D2)=0.918,Ent(D3)=0.722,代入属性“色泽”的信息增益为
同上,Gain(D,根蒂)=0.143,Gain(D,敲声)=0.141,Gain(D,纹理)=0.381,Gain(D,脐部)=0.289,Gain(D,触感)=0.006
在这里纹理的信息熵增益最大,故因被选为划分属性,然后进一步对每个分支节点做进一步划分,最终形成决策树。下面我们借助DecisionTreeClassifier来完成西瓜模型的建立。
import pandas as pd
from sklearn import model_selection
data=pd.read_csv('./watermelon.csv',encoding='gbk')#读取用excel表格处理的西瓜数据,需要使用微软自带的gbk编码,不然会出问题
features=['色泽','根蒂','敲声','纹理','脐部','触感']#获取csv里面的属性
x=data[features]#相关属性
y=data['好瓜']#结果
def load_data():return model_selection.train_test_split(x,y,test_size=0.3,random_state=0)
x_train,x_test,y_train,y_test=load_data()
#接下来需要把特征向量化
from sklearn.feature_extraction import DictVectorizer
dict_vec=DictVectorizer(sparse=False)
x_train=dict_vec.fit_transform(x_train.to_dict(orient='record'))
x_test=dict_vec.fit_transform(x_test.to_dict(orient='record'))
print(dict_vec.feature_names_)
from sklearn.tree import DecisionTreeClassifier,export_graphviz
clf=DecisionTreeClassifier(criterion='entropy')#用信息熵来建立树模型ID3
clf.fit(x_train,y_train)#训练模型
print(clf.score(x_train,y_train))#结果1.0,过拟合,这里数据比较少
#print(clf.score(x_test,y_test))
export_graphviz(clf,'/home/jovyan/out')
print(x_train.info())
out:
['敲声=沉闷', '敲声=浊响', '敲声=清脆', '根蒂=硬挺', '根蒂=稍蜷', '根蒂=蜷缩', '纹理=清晰', '纹理=稍糊', '脐部=凹陷', '脐部=平坦', '脐部=稍凹', '色泽=乌黑', '色泽=浅白', '色泽=青绿', '触感=硬滑', '触感=软粘']
1.0
这里绘制对应的决策树如下:
机器学习-利用信息熵来学习如果分辨好西瓜相关推荐
- python学习音频-机器学习利用Python进行音频数据增强
2019-09-24 机器学习利用Python进行音频数据增强 数据增强通常用于机器学习和深度学习,以便在训练产生大量数据后获得良好的性能. 在这篇文章中,我将展示如何用一些音频增强技术使用输入音频文 ...
- 吴恩达说“将引领下一波机器学习技术”的迁移学习到底好在哪?
AI技术年度盛会即将开启!11月8-9日,来自Google.Amazon.微软.Facebook.LinkedIn.阿里巴巴.百度.腾讯.美团.京东.小米.字节跳动.滴滴.商汤.旷视.思必驰.第四范式 ...
- 资源 | Intel发布AI免费系列课程3部曲:机器学习基础、深度学习基础以及TensorFlow基础
翻译 | AI科技大本营(公众号ID:rgznai100) 校对 | 成龙 编辑 | 明明 Intel于近期发布了三门AI系列的免费课程,分别是关于机器学习基础.深度学习基础.TensorFlow基础 ...
- 建立于因果推理与机器学习共识的稳定学习
目录 引言 稳定性 可解释性 公平性 虚假相关性是风险的关键来源 预测建模中因果关系的挑战和机遇 稳定学习的定位与发展 从因果关系的角度进行稳定学习 从统计角度看稳定学习 连接因果关系与机器学习的桥梁 ...
- AI:人工智能概念之机器学习ML、深度学习DL、数据挖掘、知识发现、模式识别等重要领域之间比较关系结构图之详细攻略
AI:人工智能概念之机器学习ML.深度学习DL.数据挖掘.知识发现.模式识别等重要领域之间比较关系结构图之详细攻略 目录 AI与ML.DL的概念 AI与ML.DL的结构关系图 参考文章:<201 ...
- 【机器学习】机器学习算法 随机森林学习 之决策树
随机森林是基于集体智慧的一个机器学习算法,也是目前最好的机器学习算法之一. 随机森林实际是一堆决策树的组合(正如其名,树多了就是森林了).在用于分类一个新变量时,相关的检测数据提交给构建好的每个分类树 ...
- 【机器学习】使用集成学习回归器改善预测模型的得分
作者 | SHYAM2106 编译 | Flin 来源 | analyticsvidhya 介绍 集成的一般原则是将各种模型的预测与给定的学习算法相结合,以提高单个模型的鲁棒性. "整体大于 ...
- 机器学习框架ML.NET学习笔记【5】多元分类之手写数字识别(续)
一.概述 上一篇文章我们利用ML.NET的多元分类算法实现了一个手写数字识别的例子,这个例子存在一个问题,就是输入的数据是预处理过的,很不直观,这次我们要直接通过图片来进行学习和判断.思路很简单,就是 ...
- 机器学习实战-54: 集成学习分类算法(ada-boost)
集成学习分类算法 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 集成学习分类算法(ada-boost)属于监督学习算法.常用分类算法包括:逻辑回归(Logistic Regress ...
最新文章
- 5.基于STM32F103+OV7670的网络摄像头
- mysql数据库localhost已断开_完美解决MySQL通过localhost无法连接数据库的问题
- 环境部署(九):linux下安装python+chrome+Xvfb
- Qt: QMutex
- 【深入篇】Android常用布局方式简介
- markdown首行空两格
- 关于pthread_cond_wait()使用的理解
- 我们不知道我们不知道:用同化项目做网络安全
- 1.1 print输出语句(Python)
- 激光通信的优点与缺点
- 千图成像!祝可爱的小伙伴们圣诞快乐
- iOS绘制1像素的线
- 用前端代码智能识别身份证的头像
- 移动滑杆控制(UGUI实现)Unity3D
- Linux系统学习方法
- ​LeetCode刷题实战603:连续空余座位
- Effective C++记录(6):Explicitly disallow the use of compiler-generated functions you do not want
- python+openCV使用SIFT算法实现印章的总相似度检测
- C++之Queue容器初学
- PCB EMC设计中的一些基本原则
热门文章
- IT人论房价 (四) 泡沫和破灭
- sqli-labs靶场第五关
- 【HDFS】文件入Trash-rename操作
- 为什么说众期汇场外个股期权代理好?
- 用python画玫瑰花讲解_用python画一朵玫瑰花
- 计算机网络 TIME_WAIT TCP关闭
- 木马的攻击与防御(MSF)
- 安卓手机更新过程手机乱码_安卓手机怎么换字体与改回原字体乱码解决办法
- 完美攻略之雪のとける頃に...雪融化的时候…(雪融化的时刻…)
- (附源码)ssm非遗传承背景下甘肃人文宣传网站 毕业设计 051441