1

我一直在使用 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 工具箱中没有可用的函数对我来说似乎很奇怪。

有人知道吗?另外,有没有比我上面描述的更快的方法来找到每个模式被“分配”到的神经元?

4

1 回答 1

0

要找到命中数,您必须使用神经网络 ( ) 从所有输入 ( )net中获取输出 ( ):yX

y = net(X);

然后,可以简单地找到每个神经元的“命中”:

numhits = sum(y,2);

关于您关于“找到与每种模式相关的神经元”的问题:也许您想多了?看来您可以简单地执行以下操作:

y = net(pattern) neuronNumber = find(y)

我希望这是有道理的。如果我在这里不正确,请提供一些澄清,我会调整我的答案。

于 2016-02-05T20:49:28.993 回答