Как я могу узнать, к какому кластеру самоорганизующейся карты (SOM) принадлежит элемент в python? - PullRequest
0 голосов
/ 28 июня 2019

Я новичок в кластеризации и нейронных сетях, и я только начал использовать самоорганизующиеся карты (SOM) для выполнения некоторой кластеризации. У меня есть 15-мерный набор данных, и я создал сом со следующим кодом:

size = 20
from minisom import MiniSom    
som = MiniSom(size, size, 15, sigma=0.3, learning_rate=0.9, random_seed=149)
som.train_random(data, 650000, verbose=True)

И я построил сом следующим образом:

plt.figure()
plt.pcolor(som.distance_map().T, cmap='Blues')
plt.colorbar()

plt.show()

Мой вопрос: если у меня есть новый 15-мерный элемент, как я могу узнать, к какому кластеру сом относится?

1 Ответ

0 голосов
/ 28 июня 2019

Лучшее соответствие единиц (BMU)

for t in itertools.count():
        i =  np.random.choice(range(len(data)))
        bmu = self.find_bmu(data[i])

В поисках лучшей подходящей единицы

создать карту n x n со значениями вектора случайных узлов

цикл, в то время как s

вычислить, что означает "закрытый" узел, на основе s

вычислить скорость обучения на основе s

выбрать случайный элемент данных

определить узел карты, ближайший к элементу данных (BMU)

для каждого узла, близкого к BMU

настроить значения вектора узла в соответствии с элементом данных

конец петли

СОМ - BMU

...