問題タブ [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.
matlab - MATLABでの主成分分析
スパースデータの固有値分解を使用してPCAを実装しています。matlabにPCAが実装されていることは知っていますが、コードを書くときにすべての技術を理解するのに役立ちます。ここからのガイダンスに従っていますが、組み込み関数princompと比較して異なる結果が得られています。
誰かがそれを見て、私を正しい方向に向けることができますか?
コードは次のとおりです。
opencv - OpenCVCalcPca入力データ
「固有顔」を使って、opencvで顔認識トレーニング機能を実装しようとしています。サンプルデータはありますが、CalcPCA関数の引数に関する情報が見つかりません。私が知っているのは、データマトリックス、平均固有顔マトリックスへの参照、固有ベクトルへの参照、および固有値マトリックスへの参照が必要なことだけです。
私の質問は、平均固有顔とベクトルを取得できるように、いくつかのテスト画像行列からのデータをCalcPCAの最初の引数にどのように渡す必要があるかということです。
opencv - Cimg (またはおそらく openCV または固有ライブラリ) を使用して SVD を計算する方法は?
Cimg を使用して 3 次元配列の SVD を計算する方法について、簡単なガイドを教えてください。さらなるプロセスを高速化するために配列を小さく圧縮するために、配列の分解を取得したいだけです。どこにどのような値を入力すればよいですか?また、出力を取得するにはどうすればよいですか? 私は周りを検索しましたが、それがどのように機能するのかまだ理解できません。SVDがどのように機能するかを完全には理解していません..マトリックスを解凍するために使用できることだけを知っています。
同時に、OpenCV と Eigen ライブラリでも作業ができることがわかりました。もっと簡単な場合は、その手順を教えてください..
(SVDの代わりに私にとってはPCAがあり、そのソース/ライブラリを見つけましたが、使用方法もわかりません..)
ありがとう!
python - PCA の何が問題になっていますか?
私のコード:
アイリス データセット: http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
出力:
望ましい出力:
固有値 -[2.9108 0.9212 0.1474 0.0206]
主成分 -Same as I got but transposed
大丈夫だと思い ます
また、linalg.eig 関数の出力はどうなっていますか? ウィキペディアの PCA の説明によると、次のようになっています。
しかし、オンラインで見つけたチュートリアルの出力とは実際には一致しません。さらに、4 つの次元がある場合、eig のように 150 ではなく、4 つの固有値を持つべきだと考えました。私は何か間違ったことをしていますか?
編集: データセット内の要素の数である 150 だけ値が異なることに気付きました。また、固有値は、次元数 (この場合は 4) に等しくなるように追加する必要があります。私が理解できないのは、この違いがなぜ起こっているのかということです。単純に固有値を で割ると、len(data)
必要な結果が得られますが、その理由がわかりません。いずれにせよ、固有値の比率は変更されませんが、私にとっては重要なので、何が起こっているのかを理解したいと思います.
python - Numpy.eigとPCAの分散のパーセンテージ
したがって、linalg.eigまたはlinalg.svdを使用してPCAを計算できます。同じデータが供給されると、それぞれが異なる主成分/固有ベクトルと固有値を返します(私は現在Irisデータセットを使用しています)。
ここまたはPCAをアイリスデータセットに適用した他のチュートリアルを見ると、固有値がであることがわかります[2.9108 0.9212 0.1474 0.0206]
。このeig
方法では、使用する固有値/ベクトルの異なるセットが得られますが、これらの固有値を合計すると、次元の数(4)に等しくなり、各コンポーネントがどの程度貢献しているかを調べるために使用できます。全分散。
返される固有値を取るlinalg.eig
ことはできません。たとえば、返される値はです[9206.53059607 314.10307292 12.03601935 3.53031167]
。この場合の分散の割合は[0.96542969 0.03293797 0.00126214 0.0003702]
です。この別のページには、(「コンポーネントによって説明される変動の割合は、その固有値を固有値の合計で割ったものにすぎません。」)と書かれています。
各次元によって説明される分散は一定でなければならないので(私は思う)、これらの比率は間違っています。したがって、すべてのチュートリアルで使用される値である、によって返される値を使用すると、各ディメンションから正しい変動率を取得できますが、によって返される値をそのように使用できないsvd()
のはなぜかと思います。eig
返された結果は変数を投影するための有効な方法であると思いますが、各変数によって説明される分散の正しい比率を取得できるように変数を変換する方法はありますか?つまり、このeig
方法を使用しても、各変数の分散の比率を維持できますか?さらに、このマッピングは固有値でのみ実行できるので、実際の固有値と正規化された固有値の両方を持つことができますか?
長い記事でごめんなさい。(::)
これは、これまでに得たものです。あなたがこの行を読んだだけではないと仮定します。
c++ - OpenCV2.2でC++構文を使用するPCA+SVM
MatクラスとPCAクラスで最新のC++構文を使用してPCAとEigenfacesを機能させるのに問題があります。古いC構文は、処理を実行するためのパラメーターとしてIplImage *の配列を取り、現在のAPIは、列または行でフォーマットされたマットのみを取ります。reshape関数を使用して行アプローチを採用し、画像のマトリックスを1行に収めました。最終的にこのデータを取得し、SVMアルゴリズムを使用して検出を実行したいのですが、そうすると、すべてのデータは0のストリームになります。誰かが私を助けてくれますか?私は何が間違っているのですか?ありがとう!
私はこの質問を見ました、そしてそれは幾分関連しています、しかし私は解決策が何であるかわかりません。
これは基本的に私が持っているものです:
matlab - Matlab 主成分分析 (固有値順)
Matlab の「princomp」関数を使用したいのですが、この関数はソートされた配列で固有値を返します。この方法では、どの列がどの固有値に対応するかわかりません。マトラブの場合、
と同じです
つまり、最初の 2 つの列を交換しても何も変わりません。結果 (固有値) は次のようになります: (27,0,0) 情報 (どの固有値が元の (入力) 列に対応するか) が失われます。固有値をソートしないようにmatlabに指示する方法はありますか?
matlab - PCA係数とスコアデータから作成されたバイプロットに線をプロットするにはどうすればよいですか?
係数とスコアの出力を使用して、PCAデータのバイプロットを作成しています。バイプロットの最も遠い点の間に線を引きたいと思っています。自分で線を追加せずにプロットに線を追加する方法がわかりません(面倒です)。
私は、どの2つのポイントが互いに最も離れているかを知っています。私の係数は7x7ですが、バイプロットの最初の3列と、スコアマトリックスの列1:3を使用しています。
これらの2点の間にlineまたはplot3のいずれかで線をプロットするにはどうすればよいですか。できるようですが、その回線にどのデータを指定すればよいかわかりません。
matlab - svm 分類
私は MATLAB の初心者で、デジタル画像処理のプログラミング プロジェクト、つまりウェーブレット機能 + SVM + PCA + ANN を使用した磁気共鳴画像分類を行っています。MATLAB ツールから SVM 分類の例を実行し、それを要件に合わせて変更しました。入力ベクトルに複数の機能を格納し、SVM に新しい入力を与える際に問題に直面しています。助けてください。