Weka, 无法使最近邻方法在当前测试和训练集上工作

目前我在使用Weka,并尝试使用最近邻方法对我的测试集进行分类。我的训练集和测试集都有11列数值数据,最后一列是用于分类的列。两者都已通过Weka工具从.csv转换为.arff格式。

预览训练集

预览测试集

首先,我上传了训练集,并在“分类”选项卡下的“测试选项”中选择了“使用训练集”。我选择了“IBk”分类器,并将邻居数量设置为10。得到的(糟糕的)输出如下:

训练集分类

接下来,我选择了“提供的测试集”并上传了我的测试集。除了标题外,只有最后一列是空的。但当我尝试运行时,得到的输出显示没有一个被分类:

测试集分类

此时我完全不知道该怎么办。据我所知,我的测试集和训练集是正确的,因为它们除了列中的数值不同外是相同的,我只是在训练集上训练后尝试使用我的测试集… 显然我做错了什么。


回答:

问题在于测试集上的评估,其类属性被设置为?empty。你会在训练集上得到一些结果,因为对于训练数据,你知道所有数据标签。但对于测试集,你的标签是未知的,你怎么知道分类器预测的y对于给定实例是正确的类,还是仅仅是误分类?这就是为什么:你可以得到测试实例的预测标签,但你无法进行任何评估

以下内容仅为假设,与你的数据无关:

例如,在训练数据上,你可能会得到如下结果:

=== 训练数据上的错误 ===正确分类的实例           4               80      %错误分类的实例         1               20      %Kappa统计量                          0.6154平均绝对误差                      0.2429均方根误差                  0.4016相对绝对误差                 50.0043 %根相对平方误差             81.8358 %总实例数                5     

但对于未知测试数据,输出可能如下所示:

=== 测试数据上的错误 ===总实例数                0     忽略的未知类实例                  5     === 混淆矩阵 === a b   <-- 分类为 0 0 | a = 1 0 0 | b = -1

然而,你可以得到未知数据实例的预测如下:

=== 测试数据上的预测 === 实例#     实际  预测 错误 预测 (特征1,特征2,特征3,特征4)     1        1:?        1:1       1 (1,7,1,0)     2        1:?        1:1       1 (1,5,1,0)     3        1:?       2:-1       0.786 (-1,1,1,0)     4        1:?       2:-1       0.861 (1,1,1,1)     5        1:?       2:-1       0.861 (-1,1,1,1)        === 混淆矩阵 ===         a b   <-- 分类为         2 1 | a = 1     0 2 | b = -1

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注