SOM を作成するための良い候補になると思われるこのデータ セットがあります。したがって、次のようにテキストに変換しました。
10
12 1 0 0
13 3 0 0
14 21 0 0
19 1983 15 0
24 5329 48 0
29 4543 50 0
34 3164 32 0
39 1668 22 1
44 459 4 0
49 17 0 0
私は Octave を使用しているので、次のコマンドでデータを変換しました。
dataIn = fopen('data.txt','r');
n = fscanf(dataIn,'%d',1);
D = fscanf(dataIn,'%f'); %D is a 1 x n column matrix
D = D'; %Transpose the data D is now an n x 1 matrix
D = reshape(D, 4, []); % give D the shape of a 4 x n/4 matrix
D = D(2:4, :); % the dimensions to be used for the SOM will come from the bottom three rows
ここで、SOM スクリプトを適用して、D を使用してマップを生成しています。スクリプトはここ にあり、次のように定義された findBMU を使用しています。
%finds best matching unit in SOM O
function [r c ] = findBMU( iv,O )
dist = zeros(size(O)); for i=1:3
dist(:,:,i) = O(:,:,i)-iv(i);
iv(i);
end
dist = sum(dist.^2,3);
[v r] = min(min(dist,[],2));
[v c] = min(min(dist,[],1));
最後に、次のようなランダム マップで開始します。
そしてそれは次のようになります:
問題は、私の SOM が何を言っているのかわからないということです。読み方は?