如何解释 weka 分类结果 J48

Posted

技术标签:

【中文标题】如何解释 weka 分类结果 J48【英文标题】:How to interpret weka classification result J48 【发布时间】:2017-06-26 06:08:28 【问题描述】:

我需要帮助来使用 J48 解释 weka 中的结果

我不知道如何解释结果,我使用的是来自http://archive.ics.uci.edu/ml/datasets/Heart+Disease的数据集心脏病数据集

还有 J48 树

请帮助我,这里有一些重要的分析点 我的结果是:

=== 运行信息===

方案:weka.classifiers.trees.J48 -C 0.25 -M 2 关系:AnaliseCardiaca 实例:303 属性:14 年龄 性 cp trestbps 胆 脸书 重新检测 塔拉赫 exang 老峰 坡度 加州 塔尔 编号 测试模式:10折交叉验证

=== 分类器模型(完整训练集)===

J48 修剪树

cp <= 3
|   sex <= 0: 0 (57.0/2.0)
|   sex > 0
|   |   slope <= 1
|   |   |   fbs <= 0
|   |   |   |   trestbps <= 152
|   |   |   |   |   thalach <= 162
|   |   |   |   |   |   ca <= 1
|   |   |   |   |   |   |   age <= 56: 0 (12.0/1.0)
|   |   |   |   |   |   |   age > 56: 1 (3.0/1.0)
|   |   |   |   |   |   ca > 1: 1 (2.0)
|   |   |   |   |   thalach > 162: 0 (27.0)
|   |   |   |   trestbps > 152: 1 (4.0/1.0)
|   |   |   fbs > 0: 0 (9.0)
|   |   slope > 1
|   |   |   slope <= 2
|   |   |   |   ca <= 0
|   |   |   |   |   fbs <= 0
|   |   |   |   |   |   chol <= 261
|   |   |   |   |   |   |   oldpeak <= 2.5: 0 (11.61/1.0)
|   |   |   |   |   |   |   oldpeak > 2.5: 1 (3.0)
|   |   |   |   |   |   chol > 261: 1 (4.0)
|   |   |   |   |   fbs > 0: 0 (4.0)
|   |   |   |   ca > 0
|   |   |   |   |   thal <= 6: 1 (6.0/1.0)
|   |   |   |   |   thal > 6
|   |   |   |   |   |   thalach <= 145: 0 (3.39)
|   |   |   |   |   |   thalach > 145: 1 (5.0/1.0)
|   |   |   slope > 2: 0 (8.0/1.0)
cp > 3
|   thal <= 3
|   |   ca <= 2
|   |   |   exang <= 0
|   |   |   |   sex <= 0
|   |   |   |   |   chol <= 304: 0 (14.0)
|   |   |   |   |   chol > 304: 1 (3.0/1.0)
|   |   |   |   sex > 0
|   |   |   |   |   ca <= 0: 0 (10.0/1.0)
|   |   |   |   |   ca > 0: 1 (3.0)
|   |   |   exang > 0
|   |   |   |   restecg <= 1
|   |   |   |   |   slope <= 1: 0 (2.0)
|   |   |   |   |   slope > 1: 1 (5.37)
|   |   |   |   restecg > 1
|   |   |   |   |   ca <= 0: 0 (4.0)
|   |   |   |   |   ca > 0
|   |   |   |   |   |   ca <= 1
|   |   |   |   |   |   |   thalach <= 113: 0 (2.0)
|   |   |   |   |   |   |   thalach > 113: 1 (4.0)
|   |   |   |   |   |   ca > 1: 0 (2.0)
|   |   ca > 2: 1 (4.0)
|   thal > 3
|   |   fbs <= 0
|   |   |   ca <= 0
|   |   |   |   chol <= 278: 0 (23.0/8.0)
|   |   |   |   chol > 278: 1 (6.0)
|   |   |   ca > 0: 1 (46.0/12.0)
|   |   fbs > 0
|   |   |   ca <= 1: 1 (3.88)
|   |   |   ca > 1: 0 (11.75/4.75)

叶子数:31

树的大小:61

Result img

【问题讨论】:

【参考方案1】:

如果您使用的是 Weka Explorer,您可以右键单击结果列表中的结果行(位于窗口左侧的开始按钮下方)。然后选择可视化树。这将显示树的图像。

如果您仍想了解问题中显示的结果:

结果显示为树。树的根从左侧开始,使用的第一个特征称为 cp。如果 cp 小于或等于 3,则树中的下一个特征是性,依此类推。您可以看到,当您按性别和性别

这是树的开始部分的样子:

                         --------start---------         
                         |                    |
                         |                    |
                         |cp > 3              | cp <= 3
                _________|______          ____|__________
                |              |          |              |
                |thal>3        |thal<=3   |sex>0         |sex<=0
                |              |          |              |
               ...            ...        ...         prediction 0 57(55,2)

【讨论】:

【参考方案2】:

AndreyF 的解释很好。我想补充一些信息。

为什么树的叶子上有浮点数?可以拆分实例(单个)并获得浮点值吗? (现实中一个人是不可分割的)

当实例完美地设置了所有属性时,就没有问题了。但是当实例缺少属性时,分类器(J48)不知道该属性的树的路径。

例如,如果一个实例的“oldpeak”属性就像一个缺失的属性,那么当它到达“chol 2.5”。

分类器如何计算该概率?它通过实际节点没有缺失属性的实例进行计算。对于此示例,将是“oldpeak”属性。

如果我们有 25% 的实例没有丢失的“oldpeak”属性被分类到“oldpeak 2.5”节点,然后当分类器想要对缺少“oldpeak”属性的实例进行分类时,该实例的 25% 将通过“oldpeak 2.5”。

您可以尝试删除缺少属性的实例,您会看到树将只有整数而不是浮点数。

谢谢。

【讨论】:

以上是关于如何解释 weka 分类结果 J48的主要内容,如果未能解决你的问题,请参考以下文章

Weka J48 分类不跟随树

weka中用J48(即C4.5)算法对数据集进行训练建模与测试,结果不是很理想,

如何在 Weka 中解释逻辑回归的结果

ARFF (Weka) 中的缺失值

使用测试集中的缺失值评估 weka 分类器 J48,R RWeka

Weka J48 分类器:无法处理数字类?