2012-09-23 18 views
4

我正在使用Weka GUI在在线帖子上运行NaiveBayes分类程序。我试图追踪错误预测的实例(在线帖子),以便我可以进一步学习如何改进功能。如何忽略某个功能,并将其作为Weka GUI中的功能集的一部分进行设置

目前,我有一个工作要做到这一点:我生成的数据包含唯一ID,当我导入Weka时,我删除了uniqueID。然后附上预测appender,将预测结果保存到.arff文件。我通过文件读取来查找性能不佳的实例。对于错误分类的实例,我使用某些特征值为每个实例提供了足够的值,并从包含唯一ID的原始数据中找到具有相同值的实例。正如你所看到的,这是一个真正耗时的过程。

我很想听听是否有忽视一个功能,这在我的情况是一个实例的唯一ID的方式,同时保持它作为数据的一部分运行时分类。

谢谢。

回答

5

我不确定weka GUI是否有直接的选择。但是,您可以通过命令行实现相同的功能

java weka.classifiers.meta.FilteredClassifier -F weka.filters.unsupervised.attribute.RemoveType -W weka.classifiers.trees.RandomForest -t G:\pub-resampled-0.5.arff -T G:\test.csv.arff -p 1 -distribution > G:\out.txt 

在上例中,第一个属性是一个标识符(字符串)。 RemoveType过滤器将在构建模型时删除所有字符串字段。但是,您仍然可以通过将参数传递给-p来请求weka将该标识符作为输出的一部分(预测)。在我的情况下,第一个属性(partner_id)是标识符,因此它会与预测一起列在输出中。 ( - 分配选项是输出所有类别标签的预测分数)。你可以得到更多的细节来自http://weka.wikispaces.com/Instance+ID

=== Predictions on test data === 

inst#  actual predicted error distribution (partner_id) 
    1  1:?  2:0  0,*1 (8i7t3) 
    2  1:?  2:0  0,*1 (8i7u1) 
    3  1:?  2:0  0,*1 (8i7um) 
    4  1:?  2:0  0.1,*0.9 (8i7ux) 
    5  1:?  2:0  0,*1 (8i7va) 
    6  1:?  2:0  0,*1 (8i7vb) 
    7  1:?  2:0  0,*1 (8i7vf) 

希望对您有所帮助..

+0

谢谢!知道我可以输出一个属性真的很有帮助。所以实际上我的标识符是数字的,所以我在数字上运行removeType。我的标识符刚刚消失,当我尝试输出属性时,它不会回来。是因为它是数字吗?字符串属性不会消失? –

+0

@JinaHuh您是否表示必须将其中一个属性作为预测分数的一部分?为什么不在你的arff文件中将该标识符标记为字符串并尝试? – naresh

+0

如何在arff中将标识符标记为字符串? –

5

对于没有人来对这个问题晚,可能这样做在GUI中。下面是我从马克·霍尔得到的答案(从Weka的项目):

的FilteredClassifier是在GUI或命令行只是 像任何其他分类可用。只需使用您的基本分类器 和删除过滤器(在训练/测试 数据传递到基本分类器之前删除ID等)对其进行配置。

3

详细阐述Nicholas的答案:如果你想从GUI做到这一点,除了选择FilteredClassifier,你应该在“测试选项”框中打开“更多选项...”并输入索引标识符属性添加到“输出附加属性”字段中。要启用此字段,您必须先勾选“输出预测”框。

在Weka的3.7,另外的属性必须被指定为“输出的预测”通过左击的字段(例如明文)所选择的方法的参数。