首页 > 解决方案 > 从零开始在 Python 中实现决策树 Id3 算法

问题描述

我刚开始学习机器学习。我正在学习决策树,我试图从头开始在 python 中实现它。实际上,我使用了解释 python 代码的网站。(https://www.python-course.eu/Decision_Trees.php

但我无法理解

        tree = {best_feature:{}}

部分的意思。它是字典还是熊猫图书馆的一部分?而且,如果有人解释这部分,那将是一个很大的帮助

     parent_node_class = np.unique(data[target_attribute_name])[np.argmax(np.unique(data[target_attribute_name],return_counts=True)[1])]

我的理解是这行代码从目标属性中找到出现频率最高的值。它是否正确?如果是这样,目标属性如何成为父节点?不应该是信息增益最好的特征吗?

另外,请建议一些具有更简单算法实现的站点。

标签: pythonpandasdecision-tree

解决方案


我的回答将与您使用的编程语言无关。

首先,我们必须有一组数据,其中每个列名代表一个属性,通常最后一列或属性是该行的决策或结果。

该算法的目标是构建一棵树,其中第一个节点是最有用的问题(更大的信息增益)。但是为了决定哪个是必须计算每个属性的熵。

所以第一步是知道根属性是什么。为此,他必须提取每个属性的熵,并制定相应的数学公式,才能获得信息增益。这是为了在此迭代中比较哪一个具有更大的信息增益,因此将是根。

以下将是每个属性如何具有选项,例如:天空(晴天、下雨、多云),然后它将计算每个属性选项添加到其他属性的信息增益。为了更清楚,他在数据集中查找所有记录,例如:晴天 + 所有温度,晴天 + 下雨天。但是,如果该选项的熵为 0,则您无需再提出任何问题。

对于您提出的问题,答案是该属性对应于最佳特征。换句话说,信息增益最高的功能,因此对我最有利的功能,首先询问它。


推荐阅读