给定小数据框架:
preference_values =
Column_name
-20.0
-19.7
...
-19.4
19.1我想用上面所有的数据值来计算silhouette_score。
from sklearn.cluster import AffinityPropagation
af = AffinityPropagation(preference=-20.0, affinity='precomputed').fit(X) # where X is the similarity matrix
cluster_centers_indices = af.cluster_centers_indices_
labels = af.labels_
n_clusters = len(np.unique(labels))
n_cluster_list.append(n_clusters)
from sklearn.metrics import silhouette_samples, silhouette_score
silhouette_score(frechet, labels, metric="precomputed") # frechet is a Frechet distance matrix calculated before怎么在循环中完成呢?我需要避免将"preference_values“的每个值都放在1乘1。
已更新
我要:
af = AffinityPropagation(preference=-20.0, affinity='precomputed').fit(X)
af = AffinityPropagation(preference=-19.7, affinity='precomputed').fit(X)
...
af = AffinityPropagation(preference=-19.4, affinity='precomputed').fit(X)
af = AffinityPropagation(preference=-19.1, affinity='precomputed').fit(X)并将所有结果存储在一个新的数据格式中。
发布于 2019-09-11 14:06:41
您首先需要为不同的首选项值获取标签。从那里你可以打印这些值。
from sklearn.cluster import AffinityPropagation
for k in preference_values:
af = AffinityPropagation(preference=k).fit(X)
labels = af.labels_
score = silhouette_score(X, labels, metric="precomputed")
print("Preference: {0}, Silhouette score: {1}".format(k,score))https://stackoverflow.com/questions/57890300
复制相似问题