問題タブ [pca]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
7931 参照

r - PCoA の散布図を色分けする方法

だから私はこれが初めてです。次のデータ マトリックスで PCoA を実行する必要があります。ADE4、labdsv、Ginko、Aabel ソフトウェアを使用して解析を実行できます。気になるのは、散布図でラベルを色分けする方法です。私のマトリックスは、次の順序で存在/不在マトリックスです。

私が望むのはA1、 、A2、およびA3を赤でB1B2青で、すべてのEものを黒で表すことです。どんな助けでも大歓迎です。

0 投票する
3 に答える
2060 参照

java - 大きなマトリックスでJavaでPCAを行う

pca で分析するデータを含む非常に大きな行列 (約 500000 * 20000) があります。これを行うには、ParallelColt ライブラリを使用していますが、共分散行列の固有ベクトルと固有値を取得するために特異値分解と固有値分解の両方を使用しています。しかし、これらのメソッドはヒープを浪費し、「OutOfMemory」エラーが発生します...

また、SparseDoubleMatrix2D (データは非常にまばらです) を使用してもエラーが残るので、どうすればこの問題を解決できますか?

ライブラリを変更しますか?

0 投票する
3 に答える
2505 参照

r - 回帰とPCAの視覚的比較

SOで別の角度から議論されているブログCerebralMasticationに触発されて、回帰とPCAを比較する方法を完成させようとしています。忘れる前に、これの核心の多くをJDLongとJoshUlrichに感謝します。これを次の学期のコースで使用します。すみません、これは長いです!

更新:ほとんど機能する別のアプローチを見つけました(可能であれば修正してください!)。一番下に投稿しました。私が思いついたよりもはるかに賢くて短いアプローチ!

私は基本的に、以前のスキームをある程度まで実行しました。ランダムデータを生成し、最適な線を見つけ、残差を描画します。これは、以下の2番目のコードチャンクに示されています。しかし、私はまた、ランダムな点(この場合はデータ点)を通る線に垂直な線を描くためのいくつかの関数を掘り下げて書きました。これらは正常に機能すると思います。これらは、機能する証拠とともにFirstCodeChunkに表示されます。

ここで、2番目のコードチャンクは@JDLongと同じフローを使用してすべての動作を示し、結果のプロットの画像を追加しています。黒、赤のデータは残差がピンクの回帰であり、青は1番目のPCであり、水色は法線である必要がありますが、明らかにそうではありません。これらの法線を描画するFirstCodeChunkの関数は問題ないように見えますが、デモンストレーションでは何かが正しくありません。何かを誤解しているか、間違った値を渡しているに違いないと思います。私の法線は水平になっています。これは便利な手がかりのようです(しかし、これまでのところ、私にはわかりません)。誰かがここで何が悪いのかわかりますか?

おかげで、これはしばらくの間私を悩ませてきました... 問題を示すプロット

最初のコードチャンク(法線を描画し、それらが機能することを証明する関数):

2番目のコードチャンク(デモンストレーションをプロット):

############ アップデート

Vincent Zoonekyndのページで、私が望んでいたものをほぼ正確に見つけました。しかし、それは完全には機能しません(明らかに機能するために使用されます)。これは、垂直軸を介して反射された最初のPCの法線をプロットするそのサイトからのコードの抜粋です。

そしてここに結果があります:

ここに画像の説明を入力してください

0 投票する
1 に答える
8396 参照

r - 共分散行列にゼロがある場合、Rでprincomp()関数を使用する方法は?

princomp()R で関数を使用しているときに、次のエラーが発生しました: "covariance matrix is not non-negative definite".

これは、共分散行列で一部の値がゼロになっている (実際にはゼロに近いが、丸め中にゼロになる) ためだと思います。

共分散行列にゼロが含まれている場合に PCA を続行するための回避策はありますか?

princomp()[FYI : 共分散行列の取得は、呼び出し内の中間ステップです。このエラーを再現するためのデータ ファイルは、ここからダウンロードできます - http://tinyurl.com/6rtxrc3]

0 投票する
2 に答える
12170 参照

python - Python での OpenCV PCA 計算

サイズが128x128のOpenCV(Python)を介して一連のテスト画像をロードし、それらをベクトル(1、128x128)に再形成し、それらをすべてマトリックスに入れてPCAを計算します。私は新しいcv2ライブラリを使用しています...

コード:

そして、PCA部分で常に失敗します(画像の読み込みとすべてをテストしましたが、結果のマトリックスは本来あるべき姿です)...私が得るエラーは次のとおりです。

ファイル「main.py」の 22 行目

平均、固有ベクトル = cv.PCACompute(matrix_test、np.mean(matri_test、軸 = 0))

cv2.error: /path/to/OpenCV-2.3.1/modules/core/src/matmul.cpp:2781: エラー: (-215) _mean.size() == 関数 operator() の mean_sz

0 投票する
2 に答える
5569 参照

algorithm - PCA:共分散行列の固有値を見つける:次数Nの多項式を解く

私が正しく理解していれば、PCAの原則は非常に単純です。

  1. データベクトルの共分散行列Cを計算します。
  2. det(C --e *** I)= 0を解いて、行列**Cの固有値eを見つけます。
  3. 行列Cの固有ベクトルを(それらの固有値から)計算します。

最初:この説明は正しいですか?

2番目:多項式方程式det( C --e *** I)= 0の機械解法のための任意のアルゴリズム?これは一般的な数学の質問であることを理解しています(次数** nの多項式の根を見つける)。

3番目: C /C++でのPCAの簡単な実装はありますか

どうもありがとう。

0 投票する
1 に答える
3047 参照

r - 凸多角形を使用した R の主成分分析バイプロット

次のコードを使用して、添付のバイプロットを作成しました。

これにより、x と Y の軸と 10 個のデータ ポイントのそれぞれを示すバイプロットが生成されます。

10 個のデータ ポイントが 2 つの異なるグループ (一方のグループに 5 個、他方のグループに 5 個) で構成されているとします。2 つのグループの分割を表示するために、各グループの周りに最小凸多角形を使用してバイプロットを作成するにはどうすればよいですか?

0 投票する
1 に答える
2297 参照

android - PCACompute Opencv リターン固有ベクトル = 0

PCACompute を呼び出すと固有ベクトルがすべて 0 になるため、Android Opencv2.3.1 の PCACompute にこの問題があります。その後、次のコードを使用して、100X100 マットを 1 つのマット 1X10000 に変換します。

その後、10枚の写真を撮ると、次のコードを使用して写真のすべてのマットを1つのマットに挿入します:

その後、次のコードで PCACompute を呼び出します。

したがって、datiOriginali は 10 行と 10000 列の入力 Mat であり、平均と固有ベクトルは出力行列です。平均行列では結果が得られますが、固有ベクトルではすべて 0 になります。この問題の解決を手伝ってもらえますか? よろしくお願いします。

0 投票する
0 に答える
1539 参照

android - OpenCVで固有値を使用して顔認識を実行するにはどうすればよいですか?

PCACompute以下に示すようにOpenCVの関数を使用した後、Mat代表平均とMat固有ベクトルがあります。

datiOriginaliは私の入力Matmeanは平均値Mateigenvectorsは固有ベクトルMatです。

そこから、次のように PCAProject を使用しました。

datiOriginaliは常に入力Matmeanありeigenvectors、で計算されたものと同じでPCAComputeありres、出力Matです。

固有値を使用して顔認識を実行するにはどうすればよいですか? 上記のように計算されたトレーニング画像と新しい画像の間のユークリッド距離を計算する方法がわかりません。

0 投票する
1 に答える
1439 参照

android - PCA 認識 OpenCV 2.3

opencv2.3 と android 2.2 に問題があります。顔を取得する 10 枚の画像のセットがあり、functin PCACompute と PCAProjet を使用して、PCA の部分空間を計算し、画像をこの部分空間に投影します。
だから、私は固有ベクトルを持つマット、平均値を持つマット、そしてマットの結果を持っています。
私の質問は、新しい画像で顔認識を実行するにはどうすればよいですか? どのデータを比較する必要がありますか? 固有値、固有ベクトル?
誰かが私を助けてくれることを願っています。
前もって感謝します。
マルコ