如何在Java中创建混淆矩阵

时间:2016-09-23 09:33:20

标签: java machine-learning confusion-matrix

我需要在java中创建混淆矩阵。数据以平面文本文件的形式提供。我有两个文本文件。一个文件的实际数据看起来像这样

Amit: PersonName
Sam St: Address
第二个文件中的

预测数据看起来像这样。

val Array(a,b) = line.split("\\s+").map(_.toInt)

有没有人知道如何创建混淆矩阵并计算所需的所有误报,假阴性,真阴性和真阳性。

2 个答案:

答案 0 :(得分:1)

所以基本上混淆矩阵是2D matrix,大小为n*n。其中n代表要预测的可能类别的数量。

现在我们需要维护n个类别的索引数组。例如:

{Cat, Dog, Lion, Tiger}

假设您有预测值和实际值的列表:

Act       Pred
Cat       Cat
Cat       Dog
Dog       Lion
Lion      Lion
etc       etc

现在假设这个数组可以转换为与前一个数组对应的坐标列表:

A    P
0    0
0    1
etc  etc

现在2D array中要更新的条目属于上述索引。

代码看起来像这样:

    String[] a = new String[] {"airplanes", "butterfly", "flower", "grand_piano", "starfish", "watch"};
    Category = Arrays.asList(a);
    int [][] confMatrix = new int[6][6];
    for (Instance inst : predictedValues ) {
          String outLabel = inst.getPredictedLabel();
          String actualLabel = inst.getLabel();
          int outLabelIndex = Category.indexOf(outLabel);
          int actualLabelIndex =    Category.indexOf(actualLabel);
          confMatrix[actualLabelIndex][outLabelIndex] += 1;
    }

答案 1 :(得分:0)

我有类似的要求。除了自己计算之外,您还可以使用一些现有功能。我发现例如https://github.com/habernal/confusion-matrix