西瓜决策树-sklearn实现

读取数据

import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.tree import DecisionTreeClassifier

data = pd.read_csv('F:/西瓜数据集.csv',header=None)
data

在这里插入图片描述

数据编码

#创建LabelEncoder()对象,用于序列化
label = LabelEncoder()    

#为每一列序列化
for col in data[data.columns[:-1]]:
    data[col] = label.fit_transform(data[col])
data

在这里插入图片描述

ID3算法

熵和信息增益

设S是训练样本集,它包括n个类别的样本,这些方法用Ci表示,那么熵和信息增益用下面公式表示:
信息熵:

在这里插入图片描述
其中pi表示Ci的概率
样本熵:
在这里插入图片描述
其中Si表示根据属性A划分的S的第i个子集,S和Si表示样本数目
信息增益:
在这里插入图片描述
ID3中样本分布越均匀,它的信息熵就越大,所以其原则就是样本熵越小越好,也就是信息增益越大越好。

# 采用ID3拟合
dtc = DecisionTreeClassifier(criterion='entropy')
# 进行拟合
dtc.fit(data.iloc[:,:-1].values.tolist(),data.iloc[:,-1].values) 
# 标签对应编码
result = dtc.predict([[0,0,0,0,0,0]])
#拟合结果
result

在这里插入图片描述

CART算法

CART算法构造的是二叉决策树,决策树构造出来后同样需要剪枝,才能更好的应用于未知数据的分类。CART算法在构造决策树时通过基尼系数来进行特征选择。

基尼指数

基尼指数:若某样本数据分为类,数据属于第k类的概率为,则样本数据的基尼指数定义为:
在这里插入图片描述
对于训练样本集,其基尼指数如下:

在这里插入图片描述
如果样本集合D根据特征Am的取值可以分为两部分D1和D2,那么在特征Am的条件下,D的基尼指数如下:
在这里插入图片描述
基尼指数Gini(D)表征着数据集D的不确定性,而在特征Am的条件下,D的基尼指数则表征着在特征Am确定的条件下D的不确定性,因此基尼指数之差和信息增益及信息增益比一样,可以表征特征Am对数据集D的分类的能力。

# 采用CART拟合
dtc = DecisionTreeClassifier()
# 进行拟合
dtc.fit(data.iloc[:,:-1].values.tolist(),data.iloc[:,-1].values) 
# 标签对应编码
result = dtc.predict([[0,0,0,1,0,0]])
#拟合结果
result

在这里插入图片描述

参考资料

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值