我正在尝试解决一个问题,即我需要将彼此最相似的电池单元分组以形成可靠的电池组。这似乎是一个聚类问题,但我只需要从 100 个中找到前 10 个最相似的单元格。
有什么办法可以解决这个问题吗?
我正在尝试解决一个问题,即我需要将彼此最相似的电池单元分组以形成可靠的电池组。这似乎是一个聚类问题,但我只需要从 100 个中找到前 10 个最相似的单元格。
有什么办法可以解决这个问题吗?
这通常称为最近邻搜索。
最常见的方法需要距离度量。考虑到电池组的特性,它们之间的距离有多近?
正如您所提到的,它可以通过聚类来解决,但鉴于您需要彼此的前 n 个,您可以执行以下操作:
假设您有 nxm 的矩阵 X(n-电池 m-每个的特征/属性)
在伪代码中,它将是这样的:
def kclosest(frame, battery_id, metric = "euclidean", top = 10):
"""
Return the top n closest from battery id
"""
distances = list()
for index, row in frame.iterrows():
d = metric(frame[frame.id == battery_id].values, row)
distances.append(d)
return sorted(distances)[1:top] # The closest point will always be the itself that's why we get from 1 to top