2

こんにちは、私はデータセットを持っていますdataset A。このデータセットは 500x10 のサンプルで構成されています。dataset Bこれらの各行のクラスラベルである別のものがあります。

Dataset A   | Dataset B 
1 0.2 | 0.3 = Green 
2 0.1 | 0.1 = Red 
3 0.2 | 0.4 = Blue

等々...

データセット A から青と赤の割合を選択したいので、それを percentOfA と呼び、データセット B のそれに対応する別のデータセットを用意し、A から選択したResultOfA色の割合に色を一致させるだけのデータセットを呼び出します。

したがって、新しいデータセットpercentOfAは次のようになります。

1 0.2 | 0.4 
2 0.2 | 0.4 
3 0.2 | 0.4 
4 0.1 | 0.1 

青が 75%、赤が 25% の場合、新しいものは次のresultOfAようになります。

1 Blue.
2 Blue.
3 Blue.
4 Red. 

これはmatlabでどのように達成されますか?

申し訳ありませんが、コードを表示してみますが、ドキュメントでこれに関するものを見つけることができません。

新しい編集:

だから私はこれをよりよく説明する方法について少し迷っています。データセット B には、青、緑、赤などの 500x1 の色が含まれています

このデータセット B はデータセット A と一致しますが、データセット A にはそれらの色を構成する数値が含まれています。

私がやりたいのは、データセット B を使用して青色の 75% を選択し、選択した色で行番号を追跡し、それらの行番号を使用してデータセット A からデータを取り出し、新しいデータセットに入れることだけです。 .

そのため、私の「新しいデータセット」は、データセット A (数値) の青色の 75% と赤色の 25% になります。

4

2 に答える 2

0

findを決定するために最初に使用します。blueidx=find(B==0.4);

blue次に、これらの行の 75% をランダムに選択します。

n = numel(idx);
n75 = round(n*0.75);
r = randperm(n);
idx_blue = idx(r(1:n75));

の対応するblueAは次のとおりです。A_blue = A(idx_blue);

手順を繰り返してred行を選択します。

HTH。

于 2012-07-19T16:48:38.143 に答える
0

crossvalind特にパラメーターを使用して、バイオインフォマティクス ツールボックスの関数を使用することを検討してGroupください。この機能を独自にコーディングする必要がないため、作業が大幅に楽になります。

あなたの場合、次のようなことをするだけです:

percentage = 75;
[train, test] = crossvalind('HoldOut', B, size(A, 1), percentage/100);
percentOfA = A(train, :);
resultOfA = B(train, :);
于 2012-07-19T07:05:32.613 に答える