web-dev-qa-db-ja.com

sklearnの「transform」と「fit_transform」の違いは何ですか

Sklearn-pythonツールボックスには、fit_transformについてのtransformsklearn.decomposition.RandomizedPCAの2つの関数があります。 2つの機能の説明は次のとおりです。

enter image description hereenter image description here

しかし、それらの違いは何ですか?

74
tqjustc

ここで、すでにPCAを行列で計算している場合にのみpca.transformを使用できます。

   In [12]: pc2 = RandomizedPCA(n_components=3)

    In [13]: pc2.transform(X) # can't transform because it does not know how to do it.
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-13-e3b6b8ea2aff> in <module>()
    ----> 1 pc2.transform(X)

    /usr/local/lib/python3.4/dist-packages/sklearn/decomposition/pca.py in transform(self, X, y)
        714         # XXX remove scipy.sparse support here in 0.16
        715         X = atleast2d_or_csr(X)
    --> 716         if self.mean_ is not None:
        717             X = X - self.mean_
        718 

    AttributeError: 'RandomizedPCA' object has no attribute 'mean_'

    In [14]: pc2.ftransform(X) 
    pc2.fit            pc2.fit_transform  

    In [14]: pc2.fit_transform(X)
    Out[14]: 
    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]])

.transformを使用する場合は、変換規則をPCAに教える必要があります

In [20]: pca = RandomizedPCA(n_components=3)

In [21]: pca.fit(X)
Out[21]: 
RandomizedPCA(copy=True, iterated_power=3, n_components=3, random_state=None,
       whiten=False)

In [22]: pca.transform(z)
Out[22]: 
array([[ 2.76681156,  0.58715739],
       [ 1.92831932,  1.13207093],
       [ 0.54491354,  0.83849224],
       [ 5.53362311,  1.17431479],
       [ 6.37211535,  0.62940125],
       [ 7.75552113,  0.92297994]])

In [23]: 

特に、PCA変換は、行列XのPCA分解で得られた基底の変更を行列Zに適用します。

17
Donbeo

scikit-learn estimator apiで、

fit():トレーニングデータから学習モデルパラメーターを生成するために使用

transform()fit()メソッドから生成されたパラメーター。変換されたデータセットを生成するためにモデルに適用されます。

fit_transform():同じデータセット上のfit()transform() apiの組み合わせ

enter image description here

チェックアウト第4章これから book &より明確に stackexchange から

50
Ronak Poriya

これらの方法は、指定されたデータの中心化/機能スケーリングに使用されます。基本的に特定の範囲内のデータを正規化するのに役立ちます

これには、Zスコア法を使用します。

Z-Score

データのトレーニングセットでこれを行います。

1。Fit():メソッドは、パラメーターμおよ​​びσを計算し、内部オブジェクトとして保存します。

2。Transform():これらの計算されたパラメーターを使用するメソッドは、特定のデータセットに変換を適用します。

3。Fit_transform():は、データセットの変換のためにfit()およびtransform()メソッドを結合します。

機能のスケーリング/標準化のコードスニペット(train_test_splitの後)。

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_tranform(X_train)
sc.tranform(X_test)

テストセットに同じ(トレーニングセットの同じ2つのパラメーターμとσ(値))パラメーター変換を適用します。

27
shaurya uppal

メソッド間の一般的な違い:

  • fit(raw_documents [、y]):生文書内のすべてのトークンの語彙辞書を学習します。
  • fit_transform(raw_documents [、y]):語彙辞書を学習し、用語文書マトリックスを返します。これはfitの後に変換が続くのと同等ですが、より効率的に実装されます。
  • transform(raw_documents):ドキュメントをドキュメント用語マトリックスに変換します。 fitに適合したボキャブラリまたはコンストラクタに提供されたボキャブラリを使用して、生のテキストドキュメントからトークンカウントを抽出します。

Fit_transformとtransformの両方が同じDocument-termマトリックスを返します。

ソース

3
Nikita Jain

ここで、基本的な違いb/w .fit()&.fit_transform():

.fit(): is use in the Supervised learning having two object/parameter(x,y) to fit model and make model to run, where we know that what we are going to predict, while
.fit_transform()L is use in Unsupervised Learning having one object/parameter(x), where we don't know, what we are going to predict.
1
a zEnItH