【问题标题】:Python how to get the max number in each clusterPython如何获取每个集群中的最大数量
【发布时间】:2020-11-09 02:22:36
【问题描述】:

我正在研究 k-mean 算法来聚类数字列表,假设我的列表是

 my_list = [13, 15, 13, 23, 45, 25, 7]

如何使用 k-mean 将相似数字分组? 所以输出是这样的:

clusters = {
    1 : [7],
    2 : [13, 15, 13],
    3 : [23, 25],
    4 : [45]
}

然后随机选择一个数字来代表每个簇?

(例如每个集群中的最大值),分别选择7、15、25和45。我该怎么做?

【问题讨论】:

  • 不清楚你在问什么。您是要我们向您展示如何从头开始进行 k 均值聚类吗?似乎寻找许多在线教程或使用图书馆可能会更好。或者您只是在问如何从您的集群字典中选择最大值,如标题所示?

标签: python k-means hierarchical-clustering


【解决方案1】:
mylist.sort(reverse=True)
print(mylist[0])

如果你想从最小值到最大值,可以使用 sort() 进行排序。

如果你想从最大值到最小值,可以用 sort(reverse=True) 进行排序 希望对我有所帮助

对于集群:

clusters = {
1 : [7],
2 : [13, 15, 13],
3 : [23, 25],
4 : [45]
}
for i in clusters:
    a = clusters[i]
    a.sort(reverse=True)
    print(a[0])

【讨论】:

  • 问题不是关于排序,而是关于 k-mean 聚类。
【解决方案2】:

如果我有一个数组 (X)

  X=array([[0.85142858],[0.85566274],[0.85364912],[0.81536489],[0.84929932],[0.85042336],[0.84899714],[0.82019115], [0.86112067],[0.8312496 ]])

然后我运行以下代码

from sklearn.cluster import AgglomerativeClustering

cluster = AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='ward')
cluster.fit_predict(X)

for i in range(len(X)):
    print("%4d " % cluster.labels_[i], end=""); print(X[i])

我得到了结果

1 [0.85142858]
   3 [0.85566274]
   3 [0.85364912]
   0 [0.81536489]
   1 [0.84929932]
   1 [0.85042336]
   1 [0.84899714]
   0 [0.82019115]
   4 [0.86112067]
   2 [0.8312496]

如何获得每个集群中的最大数量?像这样

0: 0.82019115
1: 0.85142858
2: 0.8312496
3: 0.85566274
4: 0.86112067

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-11
    • 2020-07-19
    • 2019-06-24
    • 2018-11-05
    • 2019-11-24
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多