八、Decision Tree 决策树

决策树模型:让计算机自动构建逐层的 if-else 模型

优点:
可解释性
可提取到重要特征

缺点:
分类简单,解决不了复杂的问题

信息熵

在这里插入图片描述
参考:https://blog.csdn.net/weixin_39826984/article/details/111269019

基尼系数

在这里插入图片描述
参考:https://blog.csdn.net/weixin_41855010/article/details/110312523

import numpy as np
from collections import Counter
from icecream import ic
from functools import lru_cache


# 信息熵
@lru_cache(maxsize=2**10)
def pr(es):
    counter = Counter(es)

    def _wrap(e):
        return counter[e] / len(es)

    return _wrap


def entropy(elements):
    # 信息熵
    p = pr(elements)

    # return -np.sum(p(e) * np.log(p(e)) for e in set(elements))
    return -np.sum(np.fromiter([p(e) * np.log(p(e)) for e in set(elements)], dtype=float))


# 基尼系数
def gini(elements):
    p = pr(elements)

    # return 1 - np.sum(p(e) ** 2 for e in set(elements))
    return 1 - np.sum(np.fromiter([p(e) ** 2 for e in set(elements)], dtype=float))


pure_func = gini

ic(pure_func([1, 1, 1, 1, 1, 0]))
ic(pure_func([1, 1, 1, 1, 1, 1]))
ic(pure_func([1, 2, 3, 4, 5, 8]))
ic(pure_func([1, 2, 3, 4, 5, 9]))
ic(pure_func(['a', 'b', 'c', 'c', 'c', 'c', 'c']))
ic(pure_func(['a', 'b', 'c', 'c', 'c', 'c', 'd']))
快速决策树分类器是一种高效的机器学习算法,用于处理大规模数据集的分类问题。该分类器通过构建一颗决策树来对数据进行分类。它的快速性来自于采用了一些优化技巧。 首先,快速决策树分类器使用了一种高效的特征选择方法,即基尼系数。基尼系数可以评估一个特征对数据集的划分能力,选择具有最佳划分能力的特征作为当前节点的划分依据,从而减少了计算量。 其次,快速决策树分类器采用了剪枝技术,即在构建决策树的过程中,对叶节点进行剪枝,去掉那些没有显著提升分类准确度的叶节点。这样可以避免模型的过拟合,减少了决策树的复杂度。 此外,快速决策树分类器还使用了并行计算技术,可以将数据集划分成多个子集,同时在不同的处理器上进行计算,从而提高了分类器的处理速度。 快速决策树分类器的应用非常广泛。它可以用于文本分类、图像分类、数据挖掘等领域。它的优势在于对大规模数据集的处理速度较快,且具有较好的分类准确度。但是,快速决策树分类器也有一些限制,例如对噪声数据敏感,对缺失值的处理能力较弱。 总之,快速决策树分类器是一种高效的分类算法,通过特征选择、剪枝和并行计算等技术优化了分类效率。它在大规模数据集上表现优异,可以广泛应用于各个领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值