为什么 ID3 算法对 Weka 中的 UCI Mushroom 数据集不起作用?

Why doesn't ID3 algorithm work on the UCI Mushroom dataset in Weka?

我似乎无法将 ID3 分类算法应用于 Mushroom.arff 数据集。该数据集仅包含名义属性。我认为我需要对其进行预处理才能使其正常工作,但我不知道如何进行。我该如何进行?

ID3算法是一个未剪枝的决策树生成算法,具有以下properties

  1. 只能处理名义属性。
  2. 它无法处理缺失值。
  3. 空叶可能会导致未class实例化。

Mushroom dataset 由 22 个名义属性组成,满足第一个条件,但是通过检查你会发现属性 'stalk-root' 有 2480 (31%) 个缺失值。这就是当您尝试 classify 时默认情况下在 Weka 中无法select的原因。

为了解决这个问题,您可以继续使用这两个解决方案。

  1. 您可以删除该属性。

    • 打开.arff文件,selectAttributes选项卡中的stalk-root属性,点击Remove。
      1. 您现在会看到 ID3 可用。我能够获得 1.0 的 F 分数。

  1. 您可以使用技术来处理缺失值。

    • 如果您不想丢失信息(在本例中为“茎根”属性),您可以继续这些 techniques
      1. 使用平均值、中位数等属性的集中趋势度量来替换空值。
      2. 对与给定元组属于相同 class 的所有样本使用属性均值或中位数。
      3. 使用贝叶斯形式主义的基于推理的工具,使用最可能的值来填充缺失值。