Weka 预测分布中 class 值的错误排序

Wrong ordering of class values in Weka Prediction Distribution

我添加了我的数据集的 class-attribute,如下所示(同样适用于训练集和测试集):

ArrayList<String> nomValues = new ArrayList<>();
nomValues.add("1");
nomValues.add("0");
datasetBinary_train.insertAttributeAt(new Attribute("class", nomValues), datasetBinary_train.numAttributes());

所以我假设值 1 位于位置 0,值 0 位于位置 1。

因此我假设 double[] 我用 NominalPrediction.distribution() 得到的 class-probability 对于 class “1” 在位置 0.

检查 classification-result 似乎反之亦然

一个预测看起来像这样。

NOM: 1.0 0.0 1.0 0.6081479321383793 0.3918520678616207

其中 1 是实际的 class,0 是预测的 class(然后是权重,接下来是分布)。我认为观察到标签“0”的概率更高,这意味着标记为“0”的实例的概率显示在索引 0

评价header说

@attribute (...)

@attribute class {1,0}

所以直到它有正确的顺序。

谁能告诉我 attribute-values 在评估中是如何排序的?如何保证选对了?

您将标签与标签索引混淆了(Weka 在内部使用基于 0 的索引来表示标签):

NOM: <actual label index> <predicted label index> <weight> <distribution>

实际标签指数为1.0(“0”),预测指数为0.0(“1”),权重为1.0,分布为“0.61 0.39”。根据分布,预测第一个标签(0.0 或“1”)。