韦卡:列车和测试设备不兼容



我正在尝试使用weka和naive bayes分类器对一些web帖子进行分类。

首先,我手动分类了许多帖子(大约100个负面和100个正面),并创建了一个.arff文件,格式如下:

@relation classtest
@attribute 'post' string
@attribute 'class' {positive,negative}
@data
'RT @burnreporter: Google has now indexed over 30 trillion URLs. Wow. #LeWeb',positive
'A special one for me  Soundcloud at #LeWeb ',positive
'RT @dianaurban: Lost Internet for 1/2 hour at a conference called #LeWeb. Ironic, yes?',negative
.
.
.

然后我打开Weka Explorer加载该文件并应用StringToWordVector过滤器将帖子拆分为单个单词属性。

然后,在对我的数据集进行同样的操作后,选择(在weka的分类选项卡中)naive bayes分类器并选择选择测试集,它返回Train and test set are not compatible。我能做什么?谢谢

可能在训练集和测试集中属性的顺序不同。

您可以使用批处理筛选,如中所述http://weka.wikispaces.com/Batch+过滤

我使用了批处理过滤器,但仍然有问题。以下是我所做的:

java-cp/usr/share/java/weka.jar weka.filters.unspervised.attribute.NumericToNominal-R last-b-i trainData.arff-o trainDataProcessed.csv.arff-R testData.arff-s testDataProcessed-csv.arff-

然后我得到下面的错误:

输入文件格式不同。

稍后。我想出了两种方法,使经过训练的模型在提供的测试集上工作。

方法1。使用知识流。例如下面这样的例子:CSVLoader(用于训练集)->classAssigner->TrainingSetMaker-->(您选择的分类器)->ClassfierPerformanceEvaluator-TextViewer。CSVLoader(用于测试集)->classAssigner->TestgSetMaker-->(与上面的分类器实例相同)->PredictionAppender->CSVSaver。然后从CSVLoader或arffLoder加载训练集的数据。将对模型进行训练。之后从测试集的加载程序加载数据。它将在提供的测试集上评估模型(例如分类器),您可以从文本查看器(连接到ClassifierPerformanceEvaluator)中查看结果,并从连接到PredictionAppender的CSVSaver或arffSaver中获取保存的结果。另外一列"classified as"将添加到输出文件中。在我的例子中,如果类标签不可用,我会对所提供的测试集中的类列使用"?"。

方法2。将"训练集"one_answers"测试集"合并为一个文件。然后,完全相同的滤波器可以应用于训练集和测试集。然后,您可以通过应用实例过滤器来分离训练集和测试集。因为我在测试集中使用"?"作为类标签。它在实例筛选器索引中不可见。因此,只需选择那些在应用实例过滤器时可以在要删除的属性值中看到的索引。您将只得到剩下的测试数据。将其保存并加载到分类器页面的供应测试集中。这一次它会起作用。我想是类属性导致了不兼容的训练和测试集问题。尽可能多的分类器需要标称类属性。其值根据http://weka.wikispaces.com/Why+do+I+get+the+error+message+%27 training+and+test+set+are+not compatible%27%3F

最新更新