从头开始在Python中执行决策树Id3算法

时间:2018-12-15 10:48:03

标签: python pandas decision-tree

我刚刚开始学习机器学习。我正在学习决策树,我试图从头开始用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])]

我所理解的是这行代码是从目标属性中查找出现频率最高的值。它是否正确?如果是这样,目标属性将如何成为父节点?难道不是信息获取最好的功能?

另外,请建议一些使用该算法更简单实现的网站。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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