预测文本数据标签中的测试数据用WEKA设置?(Predicting text data labels

2019-08-17 15:17发布

我使用的Weka GUI在数据集中训练(使用SVM)SVM分类。 在.arff文件中的数据是

@relation Expandtext

@attribute message string 
@attribute Class {positive, negative, objective}

@data

我把它变成文字的袋字符串到字向量,运行SVM和得到一个体面的分类率。 现在,我有我的测试数据我想预测自己的标签,我不知道。 此外它的头信息是相同的,但每一个类被标有问号(?),即

'Musical awareness: Great Big Beautiful Tomorrow has an ending\u002c Now is the time does not', ?

再次我预处理它,字符串到字向量,类是在相同的位置作为训练数据。

我去了“分类”菜单,加载了我训练的SVM模型,选择测试数据“提供的测试数据”,加载并右键单击该模型说:“重新评估目前的测试集模式”,但它给了我错误的测试和训练是不兼容的。 我不知道为什么。

我要对这个错误的方式来标记的测试数据? 我究竟做错了什么?

Answer 1:

对于几乎所有的机器学习算法,训练数据和测试数据必须具有相同的格式。 这意味着,双方必须具有相同的特点,即在WEKA属性,以相同的格式,包括类。

这个问题可能是你预处理的训练集和测试独立设置,且StrintToWordVectorFilter将为每一组不同的特点。 因此,模型,接受了有关训练集,是不相容的测试集。

什么您更希望做的是初始化训练集的过滤器,然后把它在训练和测试集。

现在的问题Weka的:ReplaceMissingValues的测试文件这一问题的交易,但我会在这里重复相关部分:

Instances train = ...   // from somewhere
Instances test = ...    // from somewhere
Filter filter = new StringToWordVector(); // could be any filter
filter.setInputFormat(train);  // initializing the filter once with training set
Instances newTrain = Filter.useFilter(train, filter);  // configures the Filter based on train instances and returns filtered instances
Instances newTest = Filter.useFilter(test, filter);    // create new test set

现在,你可以训练SVM和应用测试数据生成的模型。

如果培训和测试必须在单独运行或程序,它应该是可能的序列化与模型一起初始化过滤器。 当加载(反序列化)的模型,您还可以加载过滤器并将其应用在测试数据。 他们现在应该compatibel。



文章来源: Predicting text data labels in test data set with Weka?