1

私は 2 つのデータセットを持っています。オリジナルにはすべてのラベルと各変数の説明がありますが、2 つ目はこのデータセットの縮小版で、特定の実験に使用されますが、元のデータセットに含まれる変数に関する情報はありません。 . そのため、両方のデータセットを一致させようとしています。

ここでの私の質問は、元のデータセットの行が新しいデータセットに存在するかどうか、両方のマトリックス次元でわずかなデータ削減が実行されているかどうかを確認するにはどうすればよいですか?

より具体的には、元のデータセットは 24481 x 117 のマトリックスで、新しいデータセットは 24188 x 97 のマトリックスです。ただし、ここでの問題は、どの行または列が新しいデータセットに含まれているか、または含まれていないかについての情報がないことです

4

2 に答える 2

0

交差関数を使用するとうまくいきました。データ削減は両方の次元で実行されているため、最初に行列内の最初の 2 つの列ベクトルの交点を探します (少なくとも列の順序が削減で保持されていると仮定します)。

>> M = magic(5)

M =

  17    24     1     8    15
  23     5     7    14    16
   4     6    13    20    22
  10    12    19    21     3
  11    18    25     2     9

>> X = M([2,3,5], [1,2,4,5])

X =

  23     5    14    16
   4     6    20    22
  11    18     2     9

>> [c,xi, mi]=intersect(X(:,1),M(:,1))

miは、縮小された行列 X に存在する元の行列 M のすべての行の列インデックス ベクトルです。行列の最初の 2 行について同じことを行うと、元の行列 M から選択されたすべての列の行インデックス ベクトルが得られました。

>> [c,xi, mi]=intersect(X(1,:),M(1,:))

このソリューションには欠点があります。元の行列の最初の行または列が新しいセットで選択されていない場合、元の行列から比較されたベクトルのインデックスを移動しますが、幸いにもそれほど多くはありません;)。

>> [c,xi, mi]=intersect(X(1,:),M(2,:))
于 2013-03-09T05:39:33.317 に答える
0

できることは、元のデータのサイズと一致するように、要素の数を減らして行列をゼロで埋めることです。次に使用します

find(A==B)

ABは行列です

于 2013-03-05T17:16:16.307 に答える