使用 Weka 使用“一类分类器”进行训练和测试
Posted
技术标签:
【中文标题】使用 Weka 使用“一类分类器”进行训练和测试【英文标题】:Train and Test with 'one class classifier' using Weka 【发布时间】:2017-10-12 16:53:27 【问题描述】:假设我有以下火车组:
f1,f2,f3, label
1,2,3, 0
1.2,2.3,3.3, 0
1.25,2.25,3.25, 0
我想获得以下测试集的分类:
f1,f2,f3, label
6,7,8, ?
1.1,2.1,3.1, ?
9,10,11, ?
当我使用 Weka 和“一类分类器”时,首先我加载训练集并使用测试选项中的 使用训练集 选项进行分类,然后选择 提供测试集选项并加载上面的测试集。问题是我对所有测试集实例都得到了相同的分类,并且我得到了一个警告,训练和测试集不兼容,做你想用 inputMappedClassifier 包装吗?。以上只是一个简单的例子,我也遇到了这些问题,因为注入了一个巨大的异常数据集。
我做错了什么?
【问题讨论】:
OneClassClassifier 在数据集中有多个类时使用,但您希望将其设为二元分类问题(此类或异常值)。看到这个weka.sourceforge.net/doc.packages/oneClassClassifier/weka/…。如果数据集中只有类,则使用 SVM。请参阅此weka.wikispaces.com/LibSVM 和单类数据集的示例 【参考方案1】:我认为,既然您正在执行 oneClassClassification,那么您的测试数据应该是(这里假设所有测试数据行都不是异常值):
f1,f2,f3, label
6,7,8, 0
1.1,2.1,3.1, 0
9,10,11, 0
如果您启用对测试数据的预测,您可能会得到:
=== 对测试集的预测 ===
inst# actual predicted error prediction
1 1:true 1:true 1
2 1:true ? ?
3 1:true 1:true 1:true
这意味着在测试数据中: a) 实例 1 不是异常值 b) 实例 2 是异常值 c) 实例 3 不是异常值
【讨论】:
以上是关于使用 Weka 使用“一类分类器”进行训练和测试的主要内容,如果未能解决你的问题,请参考以下文章
使用 StratifiedRemoveFolds 示例在 weka 中创建训练和测试集