决策树分类器(上)

本文介绍了决策树分类器的工作原理,从熵值计算到构建决策树,再到预测过程。首先,通过示例解释如何根据熵值选择最佳分割特征。接着,详细阐述了构建决策树的步骤,包括初始化、预处理和构建过程。最后,探讨了两种预测方法,一种利用for循环和迭代,另一种采用while循环,以简化预测操作。文章适合对决策树感兴趣的初学者阅读。
摘要由CSDN通过智能技术生成

我们之前学习了knn分类器,贝叶斯分类器,今天来学习一种新的模型,决策树分类器

决策树分类器,顾名思义是利用树形结构进行多次判断,从而达到分类的目的,我们先来看示例一,判断是否能通过面试

第一步我们先要生成决策树,现在有三列数据,1.是否为985 2.学历 3.技能,我们生成决策树时,要先对这些条件信息进行求熵值,若熵值最小则证明,波动性较小,信息更稳定,可信度更高,因此要先进行求熵,在求熵时,需要提出每一列的数据,因此我们要先得到每一列数据的编号,可以利用X.shape[1],代码如下

class Decision_Tree:
    # 决策树初始化
    def __init__(self):
        self.Tree = {}
    def fit_Decision_Tree(self):
        # 信息熵列的表示
        Column = list(range(X.shape[1]))
        print(Column)
        self.Tree.update(self.get_Decision_Tree(Column,X,y))
    def get_Decision_Tree(self,Column, X, y):
        # 假定最小的信息熵(初值要尽可能大的赋)
        comentropy_min = 100
        # 假定最小的信息熵的列
        min_Column = Column[0]
        # 提取出第i个熵值
        for i in Column:
            Col = X[:, i]
            enti = sum(self.calculate_comentropy(y[Col == standard])for standard in set(Col))
            if enti < comentropy_min:
                comentropy_min = enti
                min_Column = i
        # 新建子树
        subtree = {}
        # 将当前最小熵值的这一列数据存储起来
        min_Col = X[:, min_Column]
        # 将最小熵值列这一列的编号删去
        Column.remove(min_Column)
        for d in set(min_Col):
            current_comentropy = self.calculate_comentropy(y[min_Col == d])
            if current_comentropy < 1e-10:  # 可完全分开的情况
                subtree[d] = y[min_Col == d][0]
            else:
                subtree[d] = self.get_Decision_Tree(Column.copy(),X[min_Col == d,:],y[min_Col == d])
        return {min_Column: subtree}
    def calculate_comentropy(self,Y_DS_index):
        counter = Counter(Y_DS_index)
        counter.values()
        entropy = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值