决策树——依据水果特征分类

本文详细介绍了如何实现一个简单的决策树算法,包括数据集的获取、信息熵和信息增益的计算、决策树的绘制以及分类预测。通过实例展示了如何对苹果和杨桃的特征进行分析,构建决策树模型,并进行预测。最后,给出了一个决策树的字典表示和预测示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、获取数据集

水果中苹果和杨桃外部特征比较鲜明,例如下面两张苹果、杨桃图片,苹果颜色为红色、形状大致为椭圆形、表面光滑没有棱角、带叶子,杨桃则是黄色、五角星形、带有棱角、没叶子。
在这里插入图片描述
利用上述特征统计一些苹果和杨桃数据:

  • 颜色: 1-红色 0-黄色
  • 形状: 1-椭圆形 0-五角星形
  • 棱角: 1-有棱角 0-无棱角
  • 带叶: 1-带叶子 0-不带叶子

在这里插入图片描述

1、提取数据

利用CSV库将指定特征分类,将除去第一行的数据提取出来,作为本次实验的数据集
在这里插入图片描述
其中第一行就是决策树的每一个节点,存到lables中;再将特征对应每一种情况存到了labels中。
在这里插入图片描述

# 获取数据集
def createDataSet(filename):
    # 读取文件
    data = open(filename, 'rt', encoding='gbk')
    reader = csv.reader(data)
    # 获取标签列
    handlers = next(reader)
    lables = handlers[:-1]
    # 数据列表
    dataSet = []

    for row in reader:
        # 读取除第一行的数据
        dataSet.append(row[:])
        
    # 特征对应的所有可能的情况
    labels_full = {
   }
    for i in range(len(lables)):
        labelList = [example[i] for example in dataSet]
        uniqueLabel = set(labelList)
        labels_full[lables[i]] = uniqueLabel
    return dataSet, lables, labels_full

2、划分数据

dataSet输入的数据,axis是labels中对应坐标,value是对应属性下的属性值。

# 划分数据集  
def splitDataSet(dataSet, axis, value):
    retDataSet = []
    for featVec in dataSet:
        # 给定特征值等于想要的特征值
        if
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我没得冰阔落.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值