weka的explorer运行j48算法后,输出如下类容,各是啥含义?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了weka的explorer运行j48算法后,输出如下类容,各是啥含义?相关的知识,希望对你有一定的参考价值。

=== Detailed Accuracy By Class ===

TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.778 0.6 0.7 0.778 0.737 0.789 yes
0.4 0.222 0.5 0.4 0.444 0.789 no
Weighted Avg. 0.643 0.465 0.629 0.643 0.632 0.789

参考技术A 这就是决策树分类算法的准确度细节表。第三列是准确率,也就是查准率,第四列是召回率,也就是查全率,第五列是F值,是根据准确率跟召回率算出来的。下面是权重应该。 参考技术B 直接修改weka\classifier\tree\J48中的java文件就可以了。然后重新编译weka就可以了。 参考技术C 不懂 参考技术D 什么?

如何在 Weka Explorer 中应用分类器?

【中文标题】如何在 Weka Explorer 中应用分类器?【英文标题】:How to apply classifier in Weka's Explorer? 【发布时间】:2011-07-16 05:05:31 【问题描述】:

假设我已经构建了一个模型(例如 J4.8 树)并通过交叉验证对其进行了评估。我如何使用此模型对新数据集进行分类?我知道,我可以使用“提供的测试集”选项设置要分类的数据文件,在“更多选项”窗口中标记“输出预测”并再次运行分类。它会产生几乎我需要的东西,但它似乎是一个非常奇怪的工作流程。此外,它会重新创建所有模型,这可能会花费不必要的时间。有没有更直接的方法来使用已经构建的模型进行分类?

【问题讨论】:

【参考方案1】:

misc包中有一个特殊的类SerializedClassifier,它以模型文件为参数,有模拟训练阶段。

【讨论】:

所以,我知道没有特殊的“分类”按钮,这个选项似乎是最合适的。我接受这个答案。【参考方案2】:

有几种方法。

第一个

您可以使用命令行来保存和加载您的模型,-l 和 -d 命令行开关允许您这样做。

来自 weka 文档

-l 设置模型输入文件。如果文件名以“.xml”结尾, 加载 PMML 文件,如果失败,则加载选项 从 XML 文件。 -d 设置模型输出文件。如果文件名以“.xml”结尾, 只有选项保存到 XML 文件,而不是模型。

第二个

此外,在您生成模型后,使用第二次单击来保存和加载您的模型。见

第三个

您还可以为您的分类器生成 java 代码。这样您就可以保存分类器并再次使用它。请按照以下步骤操作。

    单击更多选项按钮。 从打开的,选择输出源代码。 为 Classifier Name 赋予更有意义的名称。

这些步骤将为您的 j48 分类器输出 java 类。 WekaJ48ForIris 下面的类是由 weka 创建的,用于 Iris 数据集。您可能需要对其进行一些重构以使其更有用。

class WekaJ48ForIris 

  public static double classify(Object[] i)
    throws Exception 

    double p = Double.NaN;
    p = WekaJ48ForIris.N26a305890(i);
    return p;
  
  static double N26a305890(Object []i) 
    double p = Double.NaN;
    if (i[3] == null) 
      p = 0;
     else if (((Double) i[3]).doubleValue() <= 0.6) 
      p = 0;
     else if (((Double) i[3]).doubleValue() > 0.6) 
    p = WekaJ48ForIris.N18c079301(i);
     
    return p;
  
  static double N18c079301(Object []i) 
    double p = Double.NaN;
    if (i[3] == null) 
      p = 1;
     else if (((Double) i[3]).doubleValue() <= 1.7) 
    p = WekaJ48ForIris.N4544b022(i);
     else if (((Double) i[3]).doubleValue() > 1.7) 
      p = 2;
     
    return p;
  
  static double N4544b022(Object []i) 
    double p = Double.NaN;
    if (i[2] == null) 
      p = 1;
     else if (((Double) i[2]).doubleValue() <= 4.9) 
      p = 1;
     else if (((Double) i[2]).doubleValue() > 4.9) 
    p = WekaJ48ForIris.N3a0872863(i);
     
    return p;
  
  static double N3a0872863(Object []i) 
    double p = Double.NaN;
    if (i[3] == null) 
      p = 2;
     else if (((Double) i[3]).doubleValue() <= 1.5) 
      p = 2;
     else if (((Double) i[3]).doubleValue() > 1.5) 
      p = 1;
     
    return p;
  

【讨论】:

以上是关于weka的explorer运行j48算法后,输出如下类容,各是啥含义?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 WEKA 机器学习用于贝叶斯神经网络和 J48 决策树

WEKA j48算法中的useLaplace参数有啥作用?

weka 代码 算法 j48 决策树 c4.5

weka J48 功能选择

Weka:如何在 J48 决策树中实现代理拆分?

如何解释 weka 分类结果 J48