根据发生的距离和频率从一组项目中选择一个项目

时间:2019-04-19 18:28:40

标签: python algorithm

存在一组点(或项目,没关系)。每个点a与集合中的其他点有特定距离。可以通过功能retrieve_dist(a, b)检索距离。

这个问题是关于(在Python中)编程从该组点中选择一个点进行替换的算法。选择点:

i)必须与所有已经选择的点保持最大距离,同时要遵守(ii)中的要求

ii)在该计算中,样本中已经选择的点出现的次数必须承载重量。即选择频率更高的点应该更重。

例如假设ab已被选择(分别为100和10次)。然后,当要选择下一个点时,与a的距离比其与b的距离要重要得多,这与已经选择的样本中a的出现频率一致。


我可以尝试的方法:

如果没有重量/频率,这将很容易实现。我可以做到:

distances = defaultdict(int)
for new_point in set_of_points:
    for already_selected_point in selected_points:
        distances[new_point] += retrieve_dist(new_point, already_selected_point)

然后,我按每个元组中的第二个条目对distances.items()进行排序,然后将得到所需的项目进行选择。

但是,当已经选择的点的频率开始起作用时,我似乎无法解决这个问题。

专家可以帮忙吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

解决您的问题的方法是将new_model = tensorflow.keras.models.load_model('path_to_my_model.h5') 设为selected_points,而不是list。在这种情况下,每个新点与seta(以及所有其他点)的比较次数已经达到发现的次数。

如果每个点通常被发现多次,则可以使用b来提高性能,键为点,而值为每个点被选择的次数。在那种情况下,我认为您的算法将是

dict