0

ここで前の質問がありますが、サンプルデータとサンプルデータのインデックス(idx)を同時にシャッフルできないため、問題が発生していると思います。

49千行×6列のデータセットfulldataがあります。次に、fulldataの正確な行に対応する多数のクラスラベルを含むfulldata(Book2)のクラスラベルである別のデータセットがあります。

fulldata(normal。とsmurf。)から2つのクラスラベルのみを選択したかったのですが、そのうち750のnormal行と250のsmurf行が必要でした。

次に、新しいサンプルデータ(1000x6)をランダムにシャッフルしたいと思いました。

これまでは管理されていました。しかし、私は行き詰まります...ダンは前の質問を手伝いましたが、k1がBook2からネプチューンなどの他のクラスラベルのいくつかを出力することに気付きました。そうではないはずです...K1にはスマーフと通常のクラスのみが含まれている必要がありますラベル。

私がこれを尋ねる理由は、MATLABでベイジアン分類器を使用したいので、それを使用するには次のものが必要です。

Test_Data (unseen data)
Trainning_data (This is the sample data im trying to create above)
Target_class (this is the class labels that match exactly each row in sample data) 
4

3 に答える 3

2

私はあなたが欲しいと思います

idx = [smurfIdx(a);normIdx(p)];

そして、前の質問からの@Danの推奨事項を使用するようにしてください。

shuffle = randperm(1000);
sample = sample(shuffle,:);
K1 = Book2(idx (shuffle), :);
于 2012-11-16T14:20:54.867 に答える
1

質問の言い回しはやや曖昧なので、どこに行き詰まっているのかはっきりしません。しかし、私はあなたの以前の質問(これこれ)を自由に検討したので、これがあなたの問題を解決するための私の試みです:

この答えの目的のために、あなたのものと同様に、最初にランダムなデータセットを生成しましょう:

classes = {'normal.', 'smurf.', 'neptune.', 'eject.', 'portsweep.'};
fulldata = ceil(1e3 * rand(49000, 6));
Book2 = {classes{ceil(numel(classes) * rand(size(fulldata, 1), 1))}}';

「通常の」タグに対応する750行と「smurf」タグに対応する250行をランダムに選択できます。ただし、randpermデータ自体に適用して最初のN個の値を選択するのではなく(前の質問で行ったように)、ランダムインデックスのベクトルを作成し、それを使用して両方fulldataBook2配列にインデックスを付ける必要があります。

idxnormal = strmatch('normal.', Book2);            % # Find normals
idxnormal = idxnormal(randperm(numel(idxnormal))); % # Random shuffle of normals
idxsmurf = strmatch('smurf.', Book2);              % # Find smurfs
idxsmurf = idxsmurf(randperm(numel(idxsmurf)));    % # Random shuffle of smurfs
idx = [idxnormal(1:750); idxsmurf(1:250)];         % # 750 normals and 250 smurfs
idx = idx(randperm(numel(idx)));                   % # Random shuffle

idx/'Book2'にランダムなインデックスを保持fulldataするようになりました。これは、「normal」または「smurf」タグにのみ対応します。次に、対応するタグを使用してデータのサブセットを取得します。

subsetdata = fulldata(idx, :);
K1 = Book2(idx);
于 2012-11-16T14:23:25.733 に答える
0

前の質問を読んだ後、質問を理解したいと思います。私が正しい場合、あなたは最初にデータをフィルタリングし、スマーフとノーマルのみを抽出するのを忘れているだけです。

この場合、論理インデックスを調べる必要があります:http: //www.mathworks.nl/company/newsletters/articles/Matrix-Indexing-in-MATLAB/matrix.html ;jsessionid=97fa707e5059807b7ecae8969810

これを使用して、データポイントを描画する前に適切なサブセットを抽出すると、問題がないはずです。

于 2012-11-16T13:54:18.890 に答える