5

我正在使用 Weka GUI 在在线帖子上运行 NaiveBayes 分类器。我正在尝试跟踪错误预测的实例(在线帖子),以便我可以进一步了解如何改进这些功能。

目前,我有一个解决方法:我生成包含唯一 ID 的数据,当我导入到 Weka 时,我删除了唯一 ID。然后我附加了预测附加程序,它将预测结果保存到 .arff 文件中。我通读了文件以查找性能不佳的实例。对于错误分类的实例,我使用某些特征值,为每个实例提供足够唯一的值,并从包含唯一 ID 的原始数据中找到具有相同值的实例。如您所见,这是一个真正耗时的过程。

我很想知道是否有办法忽略一个特征,在我的例子中是一个实例的唯一 ID,同时在运行分类器时将其作为数据的一部分。

谢谢你。

4

3 回答 3

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) 是标识符,因此它与预测一起列在输出中。(-distribution 选项是输出所有类标签的预测分数)。您可以从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)

希望你觉得这很有帮助..

于 2012-10-02T09:00:35.503 回答
5

对于迟到这个问题的任何人,可以在 GUI 中进行。这是我从 Mark Hall(来自 Weka 项目)那里得到的答案:

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

于 2013-08-14T12:06:31.013 回答
3

详细说明 Nicholas 的回答:如果您想从 GUI 执行此操作,除了选择 FilteredClassifier 之外,您还应该在“测试选项”框中打开“更多选项...”并将标识符属性的索引输入到“输出附加属性”字段。要启用此字段,您必须先勾选“输出预测”框。

在 Weka 3.7 中,必须通过左键单击字段(例如 PlainText)将附加属性指定为“输出预测”所选方法的参数。

于 2014-01-15T12:03:15.770 回答