我的任务是根据数字尺寸--直径、厚度--和分类尺寸--材料、热处理等--查找相似的零件。我有一个包含100万个零件的清单。作为一名程序员,我的方法是将所有部件放在一个列表中,弹出第一个部件,并将其作为一个新的“簇”,根据尺寸比较列表中的其余部件。当列表中的一个部分与分类维度和数字维度匹配时--在5%以内--我将把该部分添加到集群中并从初始列表中删除。一旦列表中的所有零件都与初始群集零件的尺寸进行了比较,我将从列表中弹出下一个零件,然后重新开始,填充群集,直到原始列表中没有任何零件。这是一种程序化的方法。我不确定这是否是将零件分类到“簇”的最有效方法,或者k-means聚类是否会是更好的方法。
发布于 2018-02-04 18:53:11
定义“更好”。
你所做的似乎与“领导者”集群有关。但这是一种非常原始的集群形式,通常不会产生有竞争力的结果。但是有一百万个点,你的选择是有限的,而且kmeans不能很好地处理分类数据。
但是,在你决定什么是“更好的”之前,你的贪婪方法可能没有什么“错”。
一种明显的优化方法是首先根据分类属性拆分所有数据(因为您希望它们完全匹配)。这只需要对数据集和哈希表进行一次遍历。如果剩下的部分足够小,您可以在每个部分上尝试kmeans (但如何选择k)或DBSCAN (可能使用已有的相同阈值)。
https://stackoverflow.com/questions/48600277
复制相似问题