Я реализую алгоритм k-средних с нуля и написал функцию для нахождения среднего значения всех точек в кластере. Прежде чем я покажу код, взгляните на структуру данных.
центроиды содержат координаты центроидов
животные - это дикт, имя животного в качестве ключа и координаты этого конкретное животное в качестве значения
кластер является диктом, который содержит имя животного, которое также является ключом к диктату животных
Вот средняя функция, которую я создал, и определенная структура данных для удобства
'' '
centroids = np.random.rand(2,3)
clusters = {0:['a','b', 'i'], 1:['c', 'j']}
ani = {'a':[1,2,3], 'b':[4,5,6], 'c':[2,4,6]}
fru = {'i' : [10,20,30], "j":[5,8,9]}
new_points = [[],[]]
#average of cluster 1 will be [(2+5)/2, (4+8)/2, (6+9)/2]
for i in range(len(clusters)):
#range(3) is the number of feature for each element
for b in range(3):
sum = 0
for k in ani.keys():
if k in clusters[i]:
sum += ani[k][b]
for k in fru.keys():
if k in clusters[i]:
sum += fru[k][b]
sum = sum/len(clusters[i])
new_points[i].append(sum)
' ''
Я почти уверен, что есть намного лучший способ реализовать эту функцию, но я не могу думать о Любые. Может кто-нибудь предложить такой лучший способ