【问题标题】:Decision Tree Id3 algorithm implementation in Python from scratch从零开始在 Python 中实现决策树 Id3 算法
【发布时间】:2019-05-16 10:16:37
【问题描述】:

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

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

另外,请推荐一些算法实现更简单的网站。

【问题讨论】:

  • tree = {best_feature:{}} 是一个字典,其键为 best_feature 和另一个字典作为值。

标签: python pandas decision-tree


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 非常感谢!真的很有帮助
  • 我分享了你用这个算法制作的javascript解决方案。不幸的是,它只有西班牙语:id3 js
  • 没关系!翻译很有帮助。非常感谢
猜你喜欢
  • 2012-10-05
  • 2011-12-31
  • 2018-07-07
  • 2015-02-18
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 2016-07-06
  • 2017-09-29
相关资源
最近更新 更多