Проблема самоорганизующихся карт (SOM) в MATLAB - PullRequest
3 голосов
/ 02 января 2011

У меня есть текстовый файл с данными.Мой текстовый файл:

young, myopic, no, reduced, no
young, myopic, no, normal, soft
young, myopic, yes, reduced, no
young, myopic, yes, normal, hard
young, hyperopia, no, reduced, no
young, hyperopia, no, normal, soft
young, hyperopia, yes, reduced, no
young, hyperopia, yes, normal, hard

Я прочитал мой метод загрузки текстового файла

%young=1
%myopic=2
%no=3 etc.

load iris.txt
net = newsom(1,[1 5]);
[net,tr] = train(net,1);
plotsomplanes(net);

Код ошибки:

???Неопределенная функция или метод 'plotsomplanes' для входных аргументов типа 'network'.

1 Ответ

8 голосов
/ 02 января 2011

Учитывая текстовый файл, который вы показываете, функция LOAD не будет работать. Вы должны использовать TEXTSCAN для разбора текстового файла. Затем я использую GRP2IDX для преобразования номинальных данных в числовые атрибуты (для каждого значения атрибута будет назначено 1,2,3, ..). В этом случае данные становятся:

>> data =
     1     1     1     1     1
     1     1     1     2     2
     1     1     2     1     1
     1     1     2     2     3
     1     2     1     1     1
     1     2     1     2     2
     1     2     2     1     1
     1     2     2     2     3

>> labels{:}
ans = 
    'young'
ans = 
    'myopic'
    'hyperopia'
ans = 
    'no'
    'yes'
ans = 
    'reduced'
    'normal'
ans = 
    'no'
    'soft'
    'hard'

Я должен упомянуть, что вам, вероятно, понадобится намного больший набор данных (больше экземпляров), чтобы получить какие-либо значимые результаты ...

%# read text file
fid = fopen('iris.txt');
D = textscan(fid, '%s %s %s %s %s', 'Delimiter',',');
fclose(fid);

%# convert nominal to numeric
%#data = cell2mat( cellfun(@grp2idx, D, 'UniformOutput',false) );
data = zeros(numel(D{1}),numel(D));
labels = cell(size(D));
for i=1:numel(D)
    [data(:,i) labels{i}] = grp2idx(D{i});
end

%# build SOM
net = newsom(data', [4 4]);
[net,tr] = train(net, data');
figure, plotsomhits(net, data')
figure, plotsomplanes(net)

alt text alt text

...