Sklearn-pythonツールボックスには、fit_transform
についてのtransform
とsklearn.decomposition.RandomizedPCA
の2つの関数があります。 2つの機能の説明は次のとおりです。
しかし、それらの違いは何ですか?
ここで、すでに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に適用します。
scikit-learn estimator apiで、
fit()
:トレーニングデータから学習モデルパラメーターを生成するために使用
transform()
:fit()
メソッドから生成されたパラメーター。変換されたデータセットを生成するためにモデルに適用されます。
fit_transform()
:同じデータセット上のfit()
とtransform()
apiの組み合わせ
チェックアウト第4章これから book &より明確に stackexchange から
これらの方法は、指定されたデータの中心化/機能スケーリングに使用されます。基本的に特定の範囲内のデータを正規化するのに役立ちます
これには、Zスコア法を使用します。
データのトレーニングセットでこれを行います。
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つのパラメーターμとσ(値))パラメーター変換を適用します。
メソッド間の一般的な違い:
Fit_transformとtransformの両方が同じDocument-termマトリックスを返します。
ここで、基本的な違い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.