【问题标题】:How to find silhouette_score for K-means cluster Algorithm如何找到 K-means 聚类算法的剪影分数
【发布时间】:2020-11-19 23:31:50
【问题描述】:

我正在尝试为 K-means 聚类算法找到 silhouette_score。实际上我正在使用其他 4 种算法,我必须找到所有四种算法的 silhouette_score。我正在尝试首先找到 k-mean 集群,并对所有其他集群使用相同的代码。

import pandas as pd
import numpy as np

from sklearn.datasets import load_wine
df = load_wine()

from sklearn.preprocessing import MinMaxScaler

X_scaled_data = MinMaxScaler().fit_transform(df.data)

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3).fit(X_scaled_data)

from sklearn.metrics import silhouette_score

silhouette_avg = silhouette_score(X_scaled_data, kmeans.labels_)
print("For n_clusters =", 3, "The average silhouette_score is :", silhouette_avg)

这是错误:

【问题讨论】:

    标签: algorithm machine-learning data-science cluster-analysis k-means


    【解决方案1】:

    您发布的代码示例对我有用。

    但是,正如错误消息所述,您预测的标签中唯一标签 (n_labels) 的数量不超过 1。这意味着您的算法将所有点分配给同一个集群。如果您查看 documentation 的剪影分数,您会注意到在这种情况下,指标没有定义:

    请注意,剪影系数仅在标签数量时定义 是 2

    也许考虑使用不同的指标。 Here 是一些例子。或者在计算剪影分数之前检查预测中唯一标签的数量。

    【讨论】:

      猜你喜欢
      • 2019-08-17
      • 2020-03-10
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2018-02-27
      • 1970-01-01
      • 2015-04-11
      相关资源
      最近更新 更多