好的,我真的不知道这个问题是怎么表达的,但基本上我正在努力确定我的样本数据中有多少误差在平均误差的某个百分比范围内,比如说-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个标记的标记,然后从实际标记中减去它来获得误差,然后计算这些误差的平均值。我接下来要做的是确定这些错误中有多少在我的平均错误的某个百分比范围内。我该如何在代码中进行计算?
这就是您想要检查avg
周围范围内的准确性/精度是否为:
Math.abs(avg - aDouble) < 0.05
应确保aDouble
在avg
周围分别为-5%和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