Java 在weka中组合多个已保存分类器

Java 在weka中组合多个已保存分类器,java,c#,machine-learning,weka,Java,C#,Machine Learning,Weka,拥有庞大的分布式数据集,这些数据集经过训练可以生成分类器。所有数据集都具有相同的属性,并且使用单一的算法J48进行训练。 我面临的问题是如何将这些分类器组合成一个单独的分类器,用于测试和预测数据。 我正在使用weka工具编写代码。已将weka jar转换为dll。使用C#语言。 在C#或Java中的任何帮助都会大有裨益。 如果需要任何其他信息,您可以自由询问。 谢谢如果您在N个训练集上创建N个分类器,然后组合N个分类器生成单个分类器,我认为这是不可能的。因为第一,数据不同;第二,因此模式将有所不

拥有庞大的分布式数据集,这些数据集经过训练可以生成分类器。所有数据集都具有相同的属性,并且使用单一的算法J48进行训练。 我面临的问题是如何将这些分类器组合成一个单独的分类器,用于测试和预测数据。 我正在使用weka工具编写代码。已将weka jar转换为dll。使用C#语言。 在C#或Java中的任何帮助都会大有裨益。 如果需要任何其他信息,您可以自由询问。
谢谢

如果您在N个训练集上创建N个分类器,然后组合N个分类器生成单个分类器,我认为这是不可能的。因为第一,数据不同;第二,因此模式将有所不同。相反,我会做的是,如果我对N个结果感到满意,我会将所有N个数据集结合起来,并从中开发一个单一的模型来测试和预测看不见的数据。

完全有可能实现您的要求。您可以从N个不同但兼容的数据集构建N个不同的分类器,并将它们的输出组合成一个更高阶的新数据集。这是一种层次化的组合分类器的方法,而且有很多种方法。它被称为“集成”或“分类器集成”。有大量的技术文章详细介绍了如何做到这一点

一种办法是: 1.训练/获取N个不同的分类器。 2.构建一个新的数据集,其概率输出为一组已知的实例,每行一个实例,每列一组输出概率。和正确的/已知的类。 3.扔掉旧的属性,只保留已计算和已知的输出prob类。 4.用这个高阶数据集训练一个新的模型/分类器(不需要使用整个数据,只需要一个中等的子样本)。 5.对于每个新实例,如前所述,获取较低级别的概率(使用N个分类器),并对这些新构造的实例应用较高级别的分类器


希望能有所帮助。

谢谢你的回复。但是我的工作是针对分布式环境。因此,大型数据集将被分发,每个这样的分布式环境将生成自己的分类器,然后发送给中央控制,然后再由中央控制将它们结合起来。你提到的方法不可行,因为我们的目标是非常大的数据集,数据量达到TB,将这些数据传输到中央服务器将是一个巨大的开销。还有其他选择吗?您是否考虑过分类器的集合或多数投票?顺便问一下,在不同但兼容的数据集上使用不同的分类器有助于减少预测误差,改进通用模型。这在不同的技术文章中得到了数学证明。这是所谓的“打包”、“提升”等方法的基础,这些方法是“集成”的特殊情况。