2014-09-27 38 views
0

我正在使用Weka对数据集进行分类。每个数据点都是我想要概括的五个主题之一。Weka分类;跨预定义主题进行交叉验证

我想使每个主题成为一个测试集,以便我可以训练主题1-4并测试主题5,然后在主题1,3,4和5上进行训练,然后测试2,等等。

有没有一种方法可以让Weka自动地用一个数据集预先执行一次?也就是说,我可以指示Weka按主题进行交叉验证吗?

如果已经询问了此问题,我对冗余表示歉意。如果确实如此,那么我将非常感谢帮助我指导答案的任何帮助。

谢谢!

回答

0

有迹象表明,我能想到的几个方法可以帮助让你想要的结果:

  1. 当你在你的问题已经列出,您可以生成5个不同的训练集,其余主题作为测试集。如果您打算使用Weka界面(提供训练数据,构建分类器并提供测试集,重复),则每个模型都需要单独进行培训。这可能是最快的,如果它是一次性的。

  2. 您可以使用带有RemoveWithValues过滤器的FilteredClassifier。如果主题编号是可用属性(我猜这些数据不是模型数据的一部分,但是如果使用这种方法也可能需要属性过滤),那么这可能能够移除特定主题的培训案例。

  3. 如果您愿意使用Java编写解决方案,您将能够操纵数据并一次构建五个分类器中的每一个。我在想这个模型的算法如下所述。如果你打算进行这个过程很多,这可能是更好的解决方案。

算法:

for each topic t 
    training_data = all cases not containing topic t 
    testing_data = training_set cases containing topic t 
    build classifier using training_data, testing_data 
    save classifier 
end for