Я выполняю кластеризацию иерархии, используя scipy.cluster, за которым следует fcluster с другим ограничением. Я также хочу использовать scikit Silhouette_score. Я вижу сообщение Как рассчитать оценку силуэта fcluster scipy, используя оценку силуэта scikit-learn? Однако я получил ошибку «слишком много логических индексов»??
Мои коды следующие:
import fastcluster
from sklearn import metrics
from scipy.cluster import hierarchy as hac
Temps=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
Distance=[]
#read the Distance obtained as a list then
Distances=np.array(Distances)
Z=fastcluster.linkage(Distances, "complete", "euclidean")
for Cutoff in Temps:
results=hac.fcluster(Z,Cutoff,'distance')
metrics.silhouette_score(Distances, results, metric="euclidean")
Отчет об ошибке был:
Traceback (most recent call last):
File "Clustering_2.py", line 93, in <module>
main(argv)
File "Clustering_2.py", line 69, in main
silscore=metrics.silhouette_score(Distances, results,metric='euclidean')
File "/home/wangz18/site-packages2/sklearn/metrics/cluster/unsupervised.py", line 93, in silhouette_score
return np.mean(silhouette_samples(X, labels, metric=metric, **kwds))
File "/home/wangz18/site-packages2/sklearn/metrics/cluster/unsupervised.py", line 157, in silhouette_samples
for i in range(n)])
File "/home/wangz18/site-packages2/sklearn/metrics/cluster/unsupervised.py", line 187, in _intra_cluster_distance
a = np.mean(distances_row[mask])
ValueError: too many boolean indices
в чем проблема? пожалуйста, порекомендуйте. Спасибо
fastcluster
иhac
и определениеDistances
иCutoff
? - person maxymoo   schedule 12.05.2016silhouette_score
? Согласно документам, первый аргумент X должен быть X : массив [n_samples_a, n_samples_a], если метрика == «предварительно вычисленная», или [n_samples_a, n_features] в противном случае . Я понимаю, что это означает, что если вы не установитеmetric
на «предварительно вычисленный», он ожидает матрицу признаков, а не расстояний. - person patrick   schedule 17.05.2016metrics.silhouette_score(Distances, results, metric="precomputed")
должно избавиться от [the|an] ошибки. Cf docs: Если X — это сам массив расстояний, используйте metric=precomputed - person patrick   schedule 18.05.2016