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
如何在 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算法后,输出如下类容,各是啥含义?的主要内容,如果未能解决你的问题,请参考以下文章