Я пытаюсь получить метрику расстояния (силуэт) для дендрограммы, изменяя один параметр, nclusters_max, с целью построения результата.
Все работает нормально, если я явно записываю список intчисла, которые я хотел бы оценить:
for i in [4,5,6,7,8,9,10,11,12]:
dendrogram, IDs = dendrogram(encoding, n_samples=0, n_clusters_max=i, label_clusters=True, return_clusters=True)
silhouette = metrics.silhouette_score(encoding, IDs, metric='euclidean')
print(i, silhouette)
, который производит вывод:
4 0.25495732
5 0.27900532
6 0.20914535
7 0.21244033
8 0.21475217
9 0.21835302
10 0.21925814
11 0.20929264
12 0.21342315
Однако, когда я пытаюсь быть более кратким (и экономить усилия), создавая список чисел сlist(np.arange(4,13))
, то есть:
nclusters = list(np.arange(2,14))
for i in nclusters:
dendrogram, IDs = dendrogram(encoding, n_samples=1, n_clusters_max=i, label_clusters=True, return_clusters=True)
silhouette = metrics.silhouette_score(encoding, IDs, metric='euclidean')
print(i, silhouette)
Я получаю ошибку TypeError: The second argument must be a number
.
nclusters_max должен быть типа (int), но я не понимаю разницу между тем, как я получаю значениядля этой переменной, и почему это может быть проблемой из моей функции дендрограммы?