在图形坐标中查找最接近的值

时间:2015-03-12 16:20:52

标签: java algorithm graph

我在Java中有List<Summary>个对象,其中每个Summary对象包含2个字段 - 数量和天数 将该数据绘制在图表上,其中x轴是天,y轴是数量 我在图表上的参考点和所有进一步的计算都基于y0和y1 让我们假设我的数据集如下

Y           X
100 (y0)    0
90  (y1)    1
80          2
75          5    
73          7
48          9
60          10
45          12

2个简单的规则 - 1 - 选择最接近的值 2 - 如果恰好在两者之间选择更高的值

假设我想找出X为50%的Y1 =(50 * 90)/ 100 = 45,这让我得到8天

同样地,假设我想找出X的80%Y1 =(80 * 90)/ 100 = 72.由于我们在Y轴上没有完全匹配,我们选择了关闭,即73所以这让我产生了7天(这里应用了规则1)

同样地,假设我想找出X为60%的Y1 =(60 * 90)/ 100 = 54.因为我们在Y轴上没有完全匹配,因为54正好在在48和60的中间,这使我得到10(应用规则2)

在java中实现这一目标的最佳方法是什么?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找最低的residual sum of squares。这将适合一系列或多或少在一行中的点。

我会通过这些步骤解决这个问题。

  1. 了解回归的作用。它最适合于一条线的着名方程y = mx + b。 x是你的日子,y是你的数量。 m是线的斜率(你的是负数,实际上是-4.124),b是截距(你的接近100,实际上是95.086)。
  2. 在Java中编写线性回归。这些在线有很多,你可以搜索它,但如果你从头开始编写,你会是一个更好的人。
  3. 使用步骤2的输出,进行一些重新排列并根据y找到x。
  4. 在第3步(你的第一个例子:45)的等式中加入y,你就会想出几天。 (我得到了12.14,而不是你的8.注意最后一点是{12,45}。)。
  5. 舍入到列表中最近的一天。
相关问题