gpt4 book ai didi

Java - WEKA - 向训练集添加新类别

转载 作者:行者123 更新时间:2023-11-29 09:11:45 26 4
gpt4 key购买 nike

我正在使用 WEKA 训练分类 Java 程序。最初有几个类别,比如说 10 个,系统必须使用这些初始类别并开始训练。为了做到这一点......:

String [] categories = {"cat1", "cat2", ..., "cat10"};

public SomeClassifier(String[] categories) {

// Creates a FastVector of attributes.
FastVector attributes = new FastVector(3);

// Add attribute for holding property one.
attributes.addElement(new Attribute(P1_ATTRIBUTE, (FastVector) null));

// Add attribute for holding property two.
attributes.addElement(new Attribute(P2_ATTRIBUTE, (FastVector) null));

// Add values attribute.
FastVector values = new FastVector(categories.length);
for (int i = 0; i < categories.length; i++) {
values.addElement(categories[i]);
}

attributes.addElement(new Attribute(CATEGORY_ATTRIBUTE, values));

// Create dataset with initial capacity of 25, and set index
Instances myInstances = new Instances(SOME_NAME, attributes, 25);
myInstances.setClassIndex(myInstances.numAttributes() - 1);
}

好的,现在,时间过去了,我想向我的训练集添加一个新类别(比方说,“cat11”),它已经在训练中取得了一些成功。我怎样才能做到这一点? WEKA 文档说“属性一旦创建,就无法更改”。所以,也许我可以从 Instances 对象中取出 Attribute,重新创建 Attribute,然后再次插入它……否则会把一切都搞砸吗?

提前致谢。

最佳答案

好吧,显然,没有办法使用朴素贝叶斯的这种实现来做这样的事情。这是因为在初始化分类器时,附加到分类器的所有类别总和必须为 1,而在训练分类器时,概率 != 0 的新类别将导致分类器以总和 > 1 的奇怪方式运行。 Morevoer ,分类器可能会在类别数量的影响下初始化其算法(条件概率和迭代的计算),并且在创建后添加新类别意味着以某种方式重建算法。

那么,这留下了一个悬而未决的问题......我可以使用什么分类机制来允许我随着时间的推移引入新类别?

关于Java - WEKA - 向训练集添加新类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11986159/

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