Перегруппировать кортежи в другую группу с помощью метода kmeans, используя только число в позиции 0Python

Программы на Python
Anonymous
Перегруппировать кортежи в другую группу с помощью метода kmeans, используя только число в позиции 0

Сообщение Anonymous »

Код: Выделить всё

liste = [ (1, ["A",1,"C"]) , (3, ["A",1,"C"]) , (1000.256, ["B",1,"C"]) , (1002, ["C",1,"C"]) , (5, ["D",1,"C"]) , (999.3, ["E",1,"C"]) , (2.5, ["F",1,"C"])]

xxx=np.array(liste,dtype=object)

best_n_clusters,best_silhouette_score=None,-1
range_n_clusters=[2,3,4,5,6,7,8,9,10,11]

for n_clusters in range_n_clusters:
clusterer=KMeans(n_clusters=n_clusters)
cluster_labels=clusterer.fit(xxx)
silhouette_avg=silhouette_score(xxx,cluster_labels)
if silhouette_avg>best_silhouette_score:
best_silhouettescore=silhouette_avg
best_n_clusters=n_clusters

kmeans=KMeans(n_clusters=best_n_clusters)
cluster_labels=kmeans.fit(xxx)

for r in range(best_n_clusters):
group=xxx[cluster_labels==i]
print(f"Groupe {r+1} : {group}")
У меня есть исходный список, состоящий из кортежей. В первой позиции [0] это число, в позиции [1] список значений. Я хотел бы перегруппировать кортежи в разные группы, объединить кортежи, число которых находится в позиции [0] достаточно близко.
Здесь, в этом примере, мне нужны 2 списка при выходе при печати:
  • [ (1, ["A",1,"C"]) , (3, ["A",1,"C"]) , (5, ["D",1,"C"]) , (2.5, ["F",1,"C"])]
  • [ (1000.256, [" B",1,"C"]) , (1002, ["C",1,"C"]) , (999.3, ["E",1,"C"])].
Я хотел бы использовать метод kmeans для группировки этой точки, я считаю этот метод достаточно эффективным для этого, и определить наилучшее количество групп с помощью метода силуэта . Я уже использовал этот метод для группировки точек по координатам, но здесь есть только значение, число в позиции [0], чтобы перегруппировать их, и у меня возникают некоторые проблемы с этим.
У меня проблема в том, что структура, которую я даю для этого, "clusterer.fit(xxx)" возвращает ошибку: "установка элемента массива с помощью последовательности".
Как я могу решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/787 ... ber-in-pos

Вернуться в «Python»