我有以下数据集:
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可以做到这一点吗?