我怎么知道python中元素属于哪个自组织映射(SOM)集群?

时间:2019-06-28 10:18:28

标签: python cluster-analysis som self-organizing-maps

我是集群和神经网络的新手,我刚刚开始使用自组织映射(SOM)进行一些集群。我有一个15维数据集,并使用以下代码创建了一个Som:

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)

然后我以另一种方式绘制了som:

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

plt.show()

我的问题是:如果我有一个新的15维元素,我怎么知道som的哪个簇?

2 个答案:

答案 0 :(得分:2)

我觉得MiniSom为此实现了一个功能:

som.winner(*input_data*)

返回最接近的节点。

答案 1 :(得分:0)

最佳匹配单元(BMU)

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

Finding the Best Matching Unit

  

使用随机节点矢量值创建n x n映射

     

在s个      

根据s计算“关闭”节点的含义

     

根据s计算学习率

     

选择一个随机数据项

     

确定最接近数据项(BMU)的地图节点

     

靠近BMU的每个节点

     

根据数据项调整节点矢量值

     

结束循环

SOM - BMU