Может кто-нибудь предложить лучший способ найти средства кластера - PullRequest
0 голосов
/ 14 апреля 2020

Я реализую алгоритм 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)

' ''

Я почти уверен, что есть намного лучший способ реализовать эту функцию, но я не могу думать о Любые. Может кто-нибудь предложить такой лучший способ

...