k均值聚类映射

时间:2020-05-02 10:37:55

标签: python-3.x scikit-learn k-means

我正在使用sklearn的K-Means聚类,并想使用训练有素的K-Means模型将计算出的K-Means聚类标签替换为质心值。

我正在使用的代码如下:

# Initialize K-Means clustering model-
kmeans_conv1 = KMeans(n_clusters = 5)

# Train model on training data (compute k-means clustering)-
kmeans_conv1.fit(conv1_nonzero.reshape(-1, 1))

# number of clusters used-
kmeans_conv1.n_clusters
# 5

# Get centroids-
kmeans_conv1.cluster_centers_
'''
array([[-0.05669265],
       [ 0.06742188],
       [-0.08835593],
       [ 0.03749201],
       [ 0.0896403 ]], dtype=float32)
'''


# Clustered labels of each data point-
kmeans_conv1.labels_

set(kmeans_conv1.labels_)                                             
Out[142]: {0, 1, 2, 3, 4}

# Get clustered label for each data point-
clustered_labels = kmeans_conv1.labels_

当前,我正在使用if-else条件将标签映射为如下的质心值:

new_clusters = []


for clabel in clustered_labels:
    if clabel == 0:
        new_clusters.append(kmeans_conv1.cluster_centers_[0][0])
    elif clabel == 1:
        new_clusters.append(kmeans_conv1.cluster_centers_[1][0])
    elif clabel == 2:
        new_clusters.append(kmeans_conv1.cluster_centers_[2][0])
    elif clabel == 3:
        new_clusters.append(kmeans_conv1.cluster_centers_[3][0])
    elif clabel == 4:
        new_clusters.append(kmeans_conv1.cluster_centers_[4][0])

最后,我希望“ new_clusters”列表或np.array变量包含质心值而不是群集标签。

但是,没有使用if-else条件的话,还有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

这就足够了:

AppTranslations.of(context).mapText("user.name")

答案 1 :(得分:0)

找到了这种方法:

Persistent