如何为 K 均值聚类算法找到 silhouette_score
How to find silhouette_score for K-means cluster Algorithm
我正在尝试为 K 均值聚类算法找到 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)
这是错误:
你发布的代码示例对我有用。
然而,正如错误消息所述,您预测的标签中唯一标签 (n_labels
) 的数量不大于 1。这意味着您的算法将所有点分配给同一个集群。如果您查看 Silhouette 分数的 documentation,您会注意到在这种情况下未定义指标:
Note that Silhouette Coefficient is only defined if number of labels
is 2 <= n_labels <= n_samples - 1.
或许可以考虑使用不同的指标。 Here 是一些例子。或者在计算 Silhouette 分数之前检查预测中的唯一标签的数量。
我正在尝试为 K 均值聚类算法找到 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)
这是错误:
你发布的代码示例对我有用。
然而,正如错误消息所述,您预测的标签中唯一标签 (n_labels
) 的数量不大于 1。这意味着您的算法将所有点分配给同一个集群。如果您查看 Silhouette 分数的 documentation,您会注意到在这种情况下未定义指标:
Note that Silhouette Coefficient is only defined if number of labels is 2 <= n_labels <= n_samples - 1.
或许可以考虑使用不同的指标。 Here 是一些例子。或者在计算 Silhouette 分数之前检查预测中的唯一标签的数量。