2

具体的には、以下のコードの最後の行に小さな問題があります。「サンプル」のクラス名を見つけようとしています。つまり、1000x6 サンプルの各行に属する法線とスマーフを知る必要があるということです。 .

%% sampling
normIdx = strmatch('normal.', Book2);
normalSubset = fulldata(normIdx, :);
normal = randperm(size(normalSubset , 1));
p = (normal(1:750)-1)';

%
smurfIdx = strmatch('smurf.', Book2);
smurfSubset = fulldata(smurfIdx, :);
smurf = randperm(size(smurfSubset , 1));
a = (smurf(1:250)-1)';

%
normalSample = normalSubset (p, :);
smurfSample = smurfSubset (a, :);

%
sample = [normalSample ; smurfSample]

%
sample = sample(randperm(1000),:);

%
idx = [a ; p];
K1 = Book2(idx (sample==1), :)

K1 は 1000 のサンプル クラス ラベルに等しくなければならず、そのうち 750 は正常で、250 はスマーフである必要があり、それらはサンプルの同じ行に正確に対応する必要があります。Book2 にはクラス ラベルが含まれており、サンプルが派生した完全なデータもあります。

Atm K1 の結果:

Index exceeds matrix dimensions

サンプルのデータを fulldata のデータに一致させる簡単な方法があるかもしれませんが、fulldata に繰り返しデータが存在する可能性があるかどうかはわかりません...したがって、マッチングは行われず、sampleランダムであるため、何については捨てられますクラスラベルをサンプリングに一致させることができます。

4

1 に答える 1

1

これはあなたが意味するものですか?:

%
shuffle = randperm(1000);
sample = sample(shuffle,:);

%
idx = [a ; p];
K1 = Book2(idx (shuffle), :);
于 2012-11-16T09:59:47.343 に答える