छोटे डेटा फ्रेम को देखते हुए:

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)

और सभी परिणामों को एक नए डेटाफ़्रेम में संग्रहीत करें

0
Mamed 11 सितंबर 2019, 16:26

1 उत्तर

सबसे बढ़िया उत्तर

आपको पहले विभिन्न वरीयता मूल्यों के लिए लेबल प्राप्त करने की आवश्यकता है। वहां से आप मानों को प्रिंट कर सकते हैं।

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))
1
user2874583 11 सितंबर 2019, 17:06