sklearnでのPCAの使い方

5419 ワード

作者:Roygood来源:ブログ園

原文リンク
最近、データ分析の実験をしていて、PCAデータの次元ダウンを行う準備をしている間に疑問が生じました.訓練セットとテストセットを一緒に次元ダウンできない以上、どのようにテストセットの次元を訓練セットと同じように下げるか、sklearnが提供する方法にtranformがこの機能を実現しているのを見て、豁然としています.sklearnのLDAと他の降次元方法に似たような機能があるかどうか分かりませんが、大物の指摘を歓迎します.もし後で勉強したら,帰ってきて穴を埋めなさい.

1.関数の原型とパラメータの説明


ここでは重要なパラメータをいくつか選んで説明します.
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)
  • n_components:int,float,Noneまたはstring,PCAアルゴリズムで保持する主成分個数、すなわち保持する特徴個数、n_components=1で、元のデータを1次元に下げます.stringとして割り当てられた場合、n_などcomponents='mle'は、要求された分散率を満たすように、特徴個数を自動的に選択します.値が割り当てられていない場合、デフォルトではNoneで、フィーチャーの個数は変更されません(フィーチャーデータ自体は変更されます).
  • copy:TrueまたはFalse、デフォルトではTrue、つまり元のトレーニングデータをコピーする必要があるかどうか.
  • whiten:TrueまたはFalse、デフォルトではFalse、すなわち、各フィーチャーが同じ分散を持つように白化されているかどうか.

  • 2.PCAオブジェクトの属性

  • explained_variance_ratio_:n_componentsに値が割り当てられていない場合、すべてのフィーチャーは数値を返し、解釈分散の和は1に等しい.
  • n_components_:保持されているフィーチャーの数を返します.

  • 3.PCA常用方法

  • fit(X):PCAモデルをデータXで訓練する.
  • fit_Transform(X):PCAモデルをXで訓練し、次元を下げたデータを返します.
  • inverse_Transform(newData):次元を下げたデータを元のデータに変換しますが、完全に同じではない可能性があります.少し違います.
  • transform(X):データXをディメンションダウン後のデータに変換し、モデルトレーニングが完了したら、新しく入力したデータに対してtransformメソッドでディメンションダウンすることもできます.

  • 4.簡単な例

    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) newX = pca.fit_transform(X) print(X) Out[365]: [[-1 -1] [-2 -1] [-3 -2] [ 1 1] [ 2 1] [ 3 2]] print(newX) Out[366]: array([[ 1.38340578, 0.2935787 ], [ 2.22189802, -0.25133484], [ 3.6053038 , 0.04224385], [-1.38340578, -0.2935787 ], [-2.22189802, 0.25133484], [-3.6053038 , -0.04224385]]) print(pca.explained_variance_ratio_) [ 0.99244289 0.00755711] 

    最初の特徴は99.24%でデータセット全体を表現できることがわかり、1次元に下げることができます.
    pca = PCA(n_components=1)
    newX = pca.fit_transform(X)
    print(pca.explained_variance_ratio_)
    [ 0.99244289]