使用 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 中创建训练和测试集

Weka 中的训练和测试集不兼容

如何使用 weka 实现决策树?

WEKA - 分类 - 训练和测试集

weka中用J48(即C4.5)算法对数据集进行训练建模与测试,结果不是很理想,

如何在 Weka 中尝试使用多数投票