我一直在使用 Matlab 的工具箱进行自组织地图,即newsom
和相关的函数族。我正在将 SOM 聚类应用于大量文档,并且我已经使用plotsomhits(net, features)
来可视化为每个神经元分配了多少模式/文档。但是,我似乎在工具箱中找不到任何函数来检索数据结构中的这些命中,而不仅仅是将它们可视化。
现在我知道我可以自己找到命中,在一个简单的for
循环中选择最大化每个模式的负距离度量的神经元:
nweights = net.IW{1}; % retrieve weights
mx = -Inf; winner = 1;
for i = 1:length(nweights)
distance = negdist(nweights(i, :), pattern);
if distance > mx % update index of winner
mx = distance;
winner = i;
end
end
然而,鉴于存在用于可视化此类结果的函数,SOM 工具箱中没有可用的函数对我来说似乎很奇怪。
有人知道吗?另外,有没有比我上面描述的更快的方法来找到每个模式被“分配”到的神经元?