使用以下值:
double[] predicted = {2,2,3};
double[] expected = {2,1,3};..。尽管预测数组和预期数组之间存在方向差异: 2,2与2,1,但下面的方向对称java算法给出了100%的结果
double d = 0;
for (int i = 1; i < expected.length || i < predicted.length; i++) {
double ex_i = expected[i];
double ex_i_ = expected[i-1];
double pr_i = predicted[i];
double pr_i_ = predicted[i-1];
if(((ex_i-ex_i_)*(pr_i-pr_i_))>=0) {
d+=1;
}
}
return (100/(expected.length-1))*d;方向对称是正常的,还是我的算法错了?
发布于 2014-12-09 04:47:29
阿。我找到这个作为参考:,它看起来像t_(i) = t_(i-1),d_i = 1,因为(t_i - t_(i-1))(t^i - t^(i-1))将是0。然而,这似乎是一个糟糕的测试,因为(t^i - t^(i-1)可能是非零的,这将使度量偏离。
我认为测试真的应该是:
如果(t_i - t_(i-1))与(t^i - t^(i-1))具有相同的符号或如果(t_i - t_(i-1)) = (t^i - t^(i-1)) = 0,
则d_i = 1,
否则
d_i = 0。
注意:我使用t^不是指数,而是"t hat",就像维基百科中的链接一样。
准确地说:看起来你的算法就像那篇文章中描述的那样工作,但我怀疑列出的文章提供了一个有统计意义的测试。
https://stackoverflow.com/questions/27365196
复制相似问题