数据集减去10%

时间:2012-11-21 10:15:55

标签: matlab

以下是对我的数据进行抽样的方法:

%%
% Normal
normIdx = strmatch('normal.', K2);
normalSubset = cluster2(normIdx, :);
normal = randperm(size(normalSubset , 1));
p = (normal(1:3495))';

%% DoS
DoSIdx = strmatch('DoS', K2);
DoSSubset = cluster2(DoSIdx, :);
DoS = randperm(size(DoSSubset , 1));
a = (DoS(1:8))';

%%
ProbeIdx = strmatch('Probe', K2);
ProbeSubset = cluster2(ProbeIdx, :);
Probe = randperm(size(ProbeSubset , 1));
d = (Probe(1:71))';

%%
normalSample = normalSubset (p, :);
%%
DoSSample = DoSSubset (a, :);
%%
ProbeSample = ProbeSubset (d, :);

%%
idx = [normIdx(p);DoSIdx(a);ProbeIdx(d)];
%
sample = [normalSample ; DoSSample ; ProbeSample]
%
shuffle = randperm(3574);
%
TestData = sample(shuffle,:);
%
TestDataLabels = K2(idx (shuffle), :);

我想知道如何从数据集中删除这10%(cluster2)?请注意,当我说10%时,我已经解决了这个问题,因此(探测器(1:71)是探测器类的10%等等

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你有一个索引向量idx,其中包含你想要保留的所有行。

在这种情况下,解决方案非常简单,要删除它们,您可以按照@ H.Munster指示的方法,但使用正确的索引:

cluster2(idx, :) = [];