我一直在使用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工具箱中没有可用的功能似乎很奇怪,因为存在可视化此类结果的功能。
有人知道吗? 此外,是否有一种更快的方法来找到每个模式被“分配”的神经元而不是我上面描述的模式?
答案 0 :(得分:0)
要查找命中数,您必须使用神经网络(net
)从所有输入(y
)获取输出(X
):
y = net(X);
然后,"命中"对于每个神经元,只需简单地找到:
numhits = sum(y,2);
关于你的问题"找到与每种模式相关的神经元":也许你过度思考了?看起来你可以这样做:
y = net(pattern)
neuronNumber = find(y)
我希望这是有道理的。如果我在这里不正确,请提供一些说明,我会调整我的答案。