【问题标题】:sklearn k-means: Distance from point to cluster centresklearn k-means:点到聚类中心的距离
【发布时间】:2018-09-30 11:29:19
【问题描述】:

我正在使用 sklearn k-means 聚类,我想知道如何计算和存储从数据中每个点到最近聚类的距离,以供以后使用。我的代码:

import numpy as np
import matplotlib.pyplot as plt
import scipy.sparse as sp
from sklearn.metrics.pairwise import euclidean_distances
from datetime import datetime
from sklearn.cluster import KMeans
from sklearn.datasets.samples_generator import make_blobs

def learn(records):

    data = [getDataFromTransaction(t) for t in records]
    batch_size = 45
    X = np.array(data)
    centers = [[1, 1, 1], [-1, -1, -1], [1, -1, 1]]
    n_clusters = len(centers)
    #X, labels_true = make_blobs(n_samples=20, centers=centers, 
    cluster_std=0.7)
    ##############################################################################
    # Compute clustering with Means
    k_means = KMeans(init='k-means++', n_clusters=3, n_init=10)
    k_means.fit(X)
    k_means_labels = k_means.labels_
    k_means_cluster_centers = k_means.cluster_centers_
    k_means_labels_unique = np.unique(k_means_labels)
    colors = ['#4EACC5', '#FF9C34', '#4E9A06']
    plt.figure()
    plt.hold(True)
    for k, col in zip(range(n_clusters), colors):
            my_members = k_means_labels == k
            cluster_center = k_means_cluster_centers[k]
            plt.plot(X[my_members, 0], X[my_members, 1], 'w',
                    markerfacecolor=col, marker='.')
            plt.plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col,
                    markeredgecolor='k', markersize=6)


    plt.title('KMeans')    
    plt.grid(True)
    plt.savefig('./'+str("clustering")+'k_.png')
    plt.show(0)
    plt.show()

抱歉格式错误,感谢您提供的任何帮助

【问题讨论】:

    标签: python scikit-learn cluster-analysis distance k-means


    【解决方案1】:

    在 k-Means 中,将点分配给集群,从而最大限度地减少与集群中心的平方偏差之和。因此,您所要做的就是采用欧几里得范数来计算每个点与它在 k-Means 中分配到的集群中心之间的差异。

    下面是伪代码:

    for i in NumClusters:
        dataInCluster = data[clusterLabels[cluster==i].rowNames,]
        distance = norm(dataInCluster-clusterCenter[i])
    

    然后您可以将距离添加为数据中的附加列。

    【讨论】:

      猜你喜欢
      • 2017-09-16
      • 2018-07-02
      • 2019-06-01
      • 2015-02-27
      • 2019-05-04
      • 2015-06-04
      • 2020-02-21
      • 2016-05-29
      • 2018-04-06
      相关资源
      最近更新 更多