计算样本误差的数量在平均误差的一定范围内

时间:2018-07-31 10:00:50

标签: java neural-network

好吧,我真的不知道如何回答这个问题,但是基本上我想确定我的样本数据中有多少误差落在平均误差的某个百分比范围内,例如-5%到5%。

在这里输入我的代码

  public void ErrorAnaysis(ArrayList<Marks> Set)
    {
        double sse = 0;
        double AvgError;
        double total=0;
        int count = 0;

        for(Marks mark: Set)
        {
            total+= Math.abs(mark.marks[3] - neuron.FnetLinear(mark.marks[0], mark.marks[1], mark.marks[2]));
            sse += Math.pow((mark.marks[3] - neuron.FnetLinear(mark.marks[0], mark.marks[1], mark.marks[2])),2);
            count++;
        }
        AvgError = total/count;

        System.out.println("Average error: " + AvgError + "\n SSE: " + sse + "\n");

        for(Marks mark: Set)
        {
            ///????
        }

    }

我正在使用神经元基于其他3个标记来预测标记,然后从实际标记中减去该标记以获得误差,然后计算这些误差的平均值。 接下来,我要确定这些错误中有多少属于我的平均错误的某个百分比范围内。我将如何在代码中进行计算?

1 个答案:

答案 0 :(得分:1)

您要检查的准确度/精度是否在avg范围内,例如:

Math.abs(avg - aDouble) < 0.05

应确保aDouble为-5%,围绕avg为5%,完整的本地测试为:

public static void main(String... args) {
    double avg = 0.90;
    List<Double> list = new ArrayList<>();
    list.add(0.8503);
    list.add(0.89);
    list.add(0.90);
    list.add(0.9488);

    list.add(0.8309); // this will fail;
    list.add(0.849999); // this will fail;
    list.add(0.95001); // this will fail;

    int inRangeRate = 0;
    for (Double aDouble : list) {
        if (Math.abs(avg - aDouble) < 0.05) {
            inRangeRate++;
        }
    }
    System.out.println("In Range Count: " + inRangeRate);
}

它将给您:

In Range Count: 4