【发布时间】:2021-07-05 08:13:39
【问题描述】:
我知道这里有许多其他问题,询问哪些聚类算法可用于一维数据,但我的问题是如何计算 平衡 聚类?
例如我有一个清单
l = [46, 48, 68, 46, 48, 68, 63, 62, 63, 63, 69, 54, 64, 61, 66, 54, 64, 67, 46, 48]
我知道我需要 3 个集群。但是使用 KMeans 聚类会给我带来好处
l = np.array(l, dtype=np.int16)
l = np.expand_dims(l, axis=1)
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
labels = kmeans.fit_predict(l)
print(labels)
> array([0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 0, 0])
显然聚类是完全不平衡的:
print(np.unique(labels, return_counts=True))
> (array([0, 1, 2]), array([ 6, 12, 2], dtype=int64))
那么,有没有办法在 Python 中对一维数据进行聚类,并具有或多或少的平衡聚类?
【问题讨论】:
标签: python python-3.x cluster-analysis k-means