我是集群和神经网络的新手,我刚刚开始使用自组织映射(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的哪个簇?
答案 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的每个节点
根据数据项调整节点矢量值
结束循环