gpt4 book ai didi

java - Weka J48 分类不遵循树

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:50:05 25 4
gpt4 key购买 nike

我原来的树要大得多,但由于我被这个问题困扰了很长一段时间,所以我决定尝试简化我的树。我结束了这样的事情:

arvore

如您所见,我只有一个名为“LarguraBandaRede”的属性,具有 3 个可能的标称值“Congestionado”、“Livre”和“Merda”。

之后,我从 weka 导出了 j48.model 以用于我的 java 代码。

通过这段代码,我导入了模型以用作分类器:

ObjectInputStream objectInputStream = new ObjectInputStream(in);
classifier = (J48) objectInputStream.readObject();

之后我开始创建我的属性的数组列表和实例文件

for (int i = 0; i <features.length; i++) {
String feature = features[i];
Attribute attribute;
if (feature.equals("TamanhoDados(Kb)")) {
attribute = new Attribute(feature);
} else {
String[] strings = null;
if(i==0) strings = populateAttributes(7);
if(i==1) strings = populateAttributes(10);
ArrayList<String> attValues = new ArrayList<String>(Arrays.asList(strings));
attribute = new Attribute(feature,attValues);
}
atts.add(attribute);
}

其中 populateAttributes 给出了每个属性的可能值,在本例中为“Livre, Merda, Congestionado”; LarguraBandaRede 和 Resultado 的“Sim,Nao”,我的类属性。

Instances instances = new Instances("header",atts,atts.size());
instances.setClassIndex(instances.numAttributes()-1);

创建我的实例后是时候创建我的实例文件了,也就是我试图分类的实例

Instance instanceLivre = new DenseInstance(features.length);
Instance instanceMediano = new DenseInstance(features.length);
Instance instanceCongestionado = new DenseInstance(features.length);
instanceLivre.setDataset(instances);
instanceMediano.setDataset(instances);
instanceCongestionado.setDataset(instances);

然后我为每个实例设置“LarguraBandaRede”的 3 个可能值。 “instanceLivre”与“Livre”、“instanceMediano”与“Merda”和“instanceCongestionado”与“Congestionado”。

之后我只使用 classifyInstance 方法对这 3 个实例进行分类

System.out.println(instance.toString());
double resp = classifier.classifyInstance(instance);
System.out.println("valor: "+resp);

这是我的结果:

result

如您所见,Merda 为“LarguraBandaRede”的实例被分类为与 Congestionado 相同的类,类“Nao”。但这没有任何意义,因为上面的树清楚地表明,当“LarguraBandaRede”是“Merda”或“Livre”时,类应该相同。

这就是我的问题。这是怎么发生的以及如何解决?

提前致谢。

编辑

我不知道这个:

weka's index

模型的工作方式有所不同。但是,在为标称属性提供可能值时,我们必须遵循此顺序。

最佳答案

为了您的populateAttributes 方法,您是否检查过 weka 标称属性索引是否相等?

关于java - Weka J48 分类不遵循树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44916914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com