mat*_*ver 4 python cluster-analysis k-means python-3.x scikit-learn
您可以使用 1 行代码轻松提取轮廓分数,该代码对所有集群的分数求平均值,但是如何从 scikit 学习轮廓分数的实现中提取每个中间分数?我希望能够分别为每个集群提取相同的分数,而不仅仅是获得总分。
metrics.silhouette_score(x, y, metric='euclidean')
Run Code Online (Sandbox Code Playgroud)
如果您的数据如下所示:
num_clusters = 3
X, y = datasets.load_iris(return_X_y=True)
kmeans_model = KMeans(n_clusters=num_clusters, random_state=1).fit(X)
cluster_labels = kmeans_model.labels_
Run Code Online (Sandbox Code Playgroud)
您可以使用metrics.silhouette_samples计算每个样本的轮廓系数,然后取每个集群的平均值:
sample_silhouette_values = metrics.silhouette_samples(X, cluster_labels)
means_lst = []
for label in range(num_clusters):
means_lst.append(sample_silhouette_values[cluster_labels == label].mean())
Run Code Online (Sandbox Code Playgroud)
print(means_lst)
[0.4173199215409322, 0.7981404884286224, 0.45110506043401194] # 1 mean for each of the 3 clusters
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3766 次 |
| 最近记录: |