PCAを使用するMNISTデータセットのサイズを縮小しようとしています。トリックは、私はディメンションを減らしながら分散の特定のパーセンテージ(例えば80%)を維持しなければならないということです。私はScikitを使用して学びます。私はpca.get_variance の比率をやっていますが、それは9.7や.97や.097のような異なるドットの位置で私に同じ値を与えます。私もpca.get_variance()を試していますが、私はそれが答えではないと仮定します。私の質問は、私が一定の分散率で次元を減らしていることを保証する方法です。次元削減分散をパーセンテージで維持しながらPCAを使用する
2
A
答えて
1
n_components
引数を渡さずにPCAを適用すると、PCAオブジェクトのexplained_variance_ratio_
属性が必要な情報を提供します。この属性は、対応する固有ベクトルに関連付けられた分散の割合を示します。ここでは、現在の安定したPCAドキュメントから直接コピーの例である:あなたのケースでは
>>> import numpy as np
>>> from sklearn.decomposition import PCA
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
>>> pca = PCA(n_components=2)
>>> pca.fit(X)
PCA(copy=True, n_components=2, whiten=False)
>>> print(pca.explained_variance_ratio_)
[ 0.99244... 0.00755...]
、あなたがexplained_variance_ratio_
属性にnp.cumsum
を適用する場合は、主成分の数は、あなたが最初の位置に対応しておく必要があります要素が0.832以上のnp.cumsum(pca.explained_variance_ratio_)
にあります。
関連する問題
- 1. 次元削減:ユークリッド距離を維持していないT-SNE、PCA
- 2. PCAを適用して分散の割合を維持する
- 3. PCAを使用した次元削減MATLAB
- 4. スパース行列の次元削減(TSNE/PCA)
- 5. 次元削減のためのPCA MATLAB
- 6. Kerasを使用した次元削減
- 7. scikit-learn PCAを使用して分散が最も大きい次元を見つける
- 8. PCA説明分散分析
- 9. CLDNNの次元削減(テンソルフロー)
- 10. Googleグラフのツールチップ:値を削除し、パーセンテージを維持する
- 11. t-SNEの次元削減を使用してクラスタリングを実行する
- 12. matplotlibを使用したオフセットのない3次元散布図
- 13. ランダムフォレストを使用した分類モデルの単語の袋で次元削減を行う方法
- 14. 1次元ベクトルの次元数を減らすためのコンボリューション
- 15. 改行を維持しながら空白を削除する
- 16. plot matplotlibを維持しながら注釈を削除する
- 17. SIFTの次元削減画像
- 18. Isomap "非線形次元削減"
- 19. 2次元配列の削減
- 20. 多次元配列を減らす
- 21. 多次元配列を減らす
- 22. Julia distribute関数:分散次元を指定する
- 23. Java Swing - さまざまな画面で妥当な次元を維持する
- 24. 主成分分析(PCA)は、分散が同じままでデータフレームの位置
- 25. PCA sklearn - どの次元をとるのですか
- 26. フォームを維持しながら辞書から要素を削除する
- 27. 親子関係を維持しながらXMLにLinqを使用して多次元XML文書をロードする最良の方法は何ですか?
- 28. 次元削減後の最も有益な機能の取得
- 29. sklearnのPCAによる次元を小さくする
- 30. PCAの下でデータに非シングルトンの次元が一致しない理由
これは物事を少しはっきりさせるものですが、50%、60%などのように一定の割合で分散を保存するにはどうすればよいですか?私は、PCAのn_componentをチューニングすることと関係があると思います。 – decipher
LDAを実行するには、n_componentsを指定せずに保持する必要がある数を特定し、必要なレベルの分散を達成するために必要なコンポーネント数を使用してLDAを再実行します。あるいは、LDAによって生成された固有ベクトルのサブセットを使用して、データから平均を減算し、行列を乗算することによって、変換を自分で行うことができます。後者はより効率的ですが、より多くのコードが必要です。 – bogatron