3

データを含むテキストファイルがあります。私のテキストファイル:

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」。

4

1 に答える 1

8

表示しているテキスト ファイルでは、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)

代替テキスト 代替テキスト

于 2011-01-02T16:00:26.990 に答える