2024-09-30 12:28:37 发布
网友
如何在sklearn中计算收敛过程中的簇异质性? 聚类异质性由每个样本点相对于指定聚类的欧几里得距离之和给出。这表示每个步骤的值不同。在
对于最终k-means模型的集群异构性,可以执行以下操作。在
首先创建模型并使其适合某些数据(在我的示例中,我使用sklearn make blob来创建3个blob的数据点)。在
import numpy as np from sklearn.cluster import KMeans from sklearn.metrics.pairwise import pairwise_distances_argmin, euclidean_distances from sklearn.datasets.samples_generator import make_blobs np.random.seed(0) batch_size = 45 centers = [[1, 1], [-1, -1], [1, -1]] X, labels_true = make_blobs(n_samples=3000, centers=centers, cluster_std=0.7) k_means = KMeans(init='k-means++', n_clusters=3, n_init=10) k_means.fit(X)
模型预测了这些簇。
模型拟合好后,我们需要得到所有星团的质心。你可以用这个。在
然后我们需要知道X中的所有数据点属于哪个集群。为此,您可以使用pairwise_distances_argmin此函数返回任何一组点作为其最近质心的簇。在
pairwise_distances_argmin
k_means_labels = pairwise_distances_argmin(X, k_means_cluster_centers)
然后需要计算所有集群的异构性。为此,我们需要以下for循环和euclidean_distances函数。euclidean_distances计算点之间的欧几里德距离。在
euclidean_distances
for i,j in enumerate(set(k_means_labels)): positions=X[np.where(k_means_labels == i)] output=sum(euclidean_distances(positions,k_means_cluster_centers[j].reshape(1,-1))) print('cluster {} has a heterogeneity of {}'.format(i,output))
在这个循环中,我们得到属于一个集群的X的所有值。计算所有点到该簇质心的欧几里德距离。取总和并打印输出。在
在我的例子中,输出是这样的。在
cluster 0 has a heterogeneity of [ 754.20784445] cluster 1 has a heterogeneity of [ 852.41305495] cluster 2 has a heterogeneity of [ 843.7821897]
据我所知,您只能在拟合模型之后才能得到异质性得分,而不能在使用sklearn实现拟合模型的过程中获得。在
对于最终k-means模型的集群异构性,可以执行以下操作。在
首先创建模型并使其适合某些数据(在我的示例中,我使用sklearn make blob来创建3个blob的数据点)。在
模型预测了这些簇。
模型拟合好后,我们需要得到所有星团的质心。你可以用这个。在
^{pr2}$然后我们需要知道X中的所有数据点属于哪个集群。为此,您可以使用
pairwise_distances_argmin
此函数返回任何一组点作为其最近质心的簇。在然后需要计算所有集群的异构性。为此,我们需要以下for循环和
euclidean_distances
函数。euclidean_distances
计算点之间的欧几里德距离。在在这个循环中,我们得到属于一个集群的X的所有值。计算所有点到该簇质心的欧几里德距离。取总和并打印输出。在
在我的例子中,输出是这样的。在
据我所知,您只能在拟合模型之后才能得到异质性得分,而不能在使用sklearn实现拟合模型的过程中获得。在
相关问题 更多 >
编程相关推荐