sklearn KMeans 的替代算法,通过相似性分隔值?

数据挖掘 Python scikit-学习 聚类 k-均值
2022-03-11 22:55:14

我有以下数据集:

        node        bc cluster
1    russian  0.457039       1
48       man  0.286875       1
155    woman  0.129939       0
3        bit  0.092721       0
5      write  0.065424       0
98       age  0.064347       0
97     escap  0.062675       0
74      game  0.062606       0

然后我按值执行 kMeans 聚类,bc将节点分成两个不同的组。现在使用下面的代码,我得到了上面的结果(聚类结果在cluster列中)。

    bc_df = pd.DataFrame({"node": bc_nodes, "bc": bc_values})
    bc_df = bc_df.sort_values("bc", ascending=False)
    km = KMeans(n_clusters=2).fit(bc_df[['bc']])
    bc_df.loc[:,'cluster'] = km.labels_
    print(bc_df.head(8))

这非常好,但我希望它的工作方式略有不同,并将前 4 个节点选择到第一个集群中,然后将其他节点选择到第二个集群中,因为它们彼此更相似。

我可以对 kMeans 做一些调整,或者你知道另一种算法sklearn可以做到这一点吗?

1个回答

欢迎,德米特里!

一个非常第一个红色警报......如果你在做集群,那么让它告诉你谁和谁相似!如果你已经知道你的集群,那你为什么要进行集群呢?!

关于算法:是的,还有更多,例如Spectral Clustering,它利用不同的相似性度量(通过高斯核或 K-NN 连接矩阵)来查找集群或DBSCAN,它基于数据密度的相似性点。

如果您需要更多帮助,请在此处发表评论!

祝你好运!