2

openCV で主成分分析 ( PCA ) を使用しています。私が興味を持っているケースのコンストラクター入力は次のとおりです。

PCA(InputArray data, InputArray mean, int flags, double retainedVariance);

InputArray の「データ」に関して、ドキュメントには適切なフラグを次のように指定する必要があると記載されています。

CV_PCA_DATA_AS_ROWは、入力サンプルが行列の行として格納されていることを示します。 CV_PCA_DATA_AS_COLは、入力サンプルが行列列として格納されていることを示します。

私の質問は、「サンプル」という用語の使用に関するもので、この文脈におけるサンプルとは何かがわかりません。

たとえば、4セットのデータがあり、説明のためにそれらを AD とラベル付けするとします。これで、A から D までの各セットに8 つの要素が含まれます。これらは、次のように InputArray として使用する Mat 変数に設定されます。

ここに画像の説明を入力

問題は、それは次のとおりです。

  • 私のセットはサンプルですか?
  • 私のデータ要素はサンプルですか?

別の尋ね方:

  • 4 つのサンプルがありますか (CV_PCA_DATA_AS_COL)
  • または、8 つのサンプル (CV_PCA_DATA_AS_ROW) を 4 セット持っていますか?

?

推測として、私はCV_PCA_DATA_AS_COLを選択します (つまり、4 つのサンプルがあります) - しかし、それは私の頭がどこにあるのかということです... 正しい用語を学ぶまでは、「サンプル」という言葉はどちらの推論にも当てはまるようです。

4

1 に答える 1

0

うーん...

そのため、PCA::project ステップのドキュメントの背後にあるロジックを逆にすることで答えが見つかりました...

Mat PCA::project(InputArray vec)

vec – 入力ベクトル; PCA フェーズで使用される入力データと同じ次元と同じレイアウトを持つ必要があります。つまり、CV_PCA_DATA_AS_ROW が指定されている場合、vec.cols==data.cols (ベクトル次元)

つまり、'sample' は 'set' と同等であり、要素は 'dimension' です。

(そして私の推測は正しかった:)

于 2015-07-19T06:37:27.583 に答える