我已经测量了拟合线的点。我在x方向上测量的点数是该点的第一个值(例如X1),该点的第二个值是在y方向上测量的点。
X1(2,9)
X2(9,3)
X3(5,4)
X4(6,4)
这意味着,例如在X3中,我在x方向上测量了5个点,在y方向上,我测量了4个点。使用x方向上的点,我将在x方向上拟合一条直线,使用y方向上的点,我将在y方向上拟合一条直线。为了获得更好的结果,x方向和y方向上的点越多越好。例如,最好选择X4,然后再选择X1,因为在X1中我在y方向上有9点,但是在x方向上只有2点,这在x方向上给我差的结果。在X4中,我同时拥有:x和y方向上的大量点。因此,我可以肯定的是,这些线已经足够好了。所以我想找到这个X#,在x和y方向上有(最高)点数
答案 0 :(得分:0)
您是否尝试过检查代码?看来您的X处于升序,而您的Y则沿相反的顺序。也许像在变量中插入x和y值,然后按照您希望的顺序对它们进行排序。
答案 1 :(得分:0)
您需要编写一个对点的“适合度”进行排名的函数。
def fitness(point):
'''
ranks a point by the total number of points,
minus the difference between the number of x and y points.
uses total number of points as a secondary rank
'''
num_points = sum(point)
xydiff = max(point) - min(point)
return num_points - xydiff, num_points
应根据您希望如何加权点来调整上述功能。
>>> points = [(2,9), (9,3), (5,4), (6,4)]
>>> sorted(points, key=fitness, reverse=True)
[(6, 4), (5, 4), (9, 3), (2, 9)]
>>> max(points, key=fitness) # the most fit point
(6, 4)