我正在尝试使用 weka 对垃圾邮件和非垃圾邮件进行分类。
将 100 条带标签的垃圾邮件消息和另外 100 条带标签的非垃圾邮件消息作为训练数据集,我将stringtowordvector
其用作过滤器来训练分类器。结果crossValidateModel
非常好。但是我想使用独立的测试集来评估分类器,以确保将任何其他味精从训练集中分类出来是可靠的。
我的问题:
我也必须使用stringtowordvector
测试数据集来创建一个独立的 .arff 文件,该文件独立于训练 arff 文件。两个数据集中出现的同一个词分别具有 2 个不同的属性索引,在这些2 个.arff 文件。例如,单词“money”10
在训练 .arff 文件中具有矩阵索引,但在测试 .arff 文件中它被索引为50th
属性。
我担心已经训练好的分类器会与 2 个数据集中的所有这些词不匹配,因为它们具有不同的矩阵索引。更具体地说,{1 1,2 1,3 5}
训练中的向量 .arff 代表"i want to to to to to...."
,但在测试 .arff 文件中,这个相同的向量代表"money does not not not not ....."
。那么,这个验证怎么能可靠呢?
使用crossValidateModel
时,它使用来自同一个 arff 文件的实例,因此 weka 必须将索引与单词正确匹配。我的目标是用大量标记的数据集训练它,然后用它来分类任何单个未标记的味精。每次我想对单个味精进行分类时,我都必须将此味精转换为一个 .arff 文件,该文件具有与训练 .arff 文件完全不同的属性列表和矩阵索引。(我没有使用 windows 工具,我在我的程序中使用了 weka .jar api)。有什么帮助吗?