Dans la boîte à outils sklearn-python, il existe deux fonctions transform
et fit_transform
à propos sklearn.decomposition.RandomizedPCA
. La description de deux fonctions est la suivante
Mais quelle est la différence entre eux?
Voici la différence que vous ne pouvez utiliser pca.transform que si vous avez déjà calculé PCA sur une matrice
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]])
si vous voulez utiliser .transform
vous devez enseigner la règle de transformation à votre 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]:
En particulier, PCA transform applique le changement de base obtenu avec la décomposition PCA de la matrice X à la matrice Z.
Dans scikit-learn estimator api ,
fit()
: utilisé pour générer les paramètres du modèle d'apprentissage à partir des données d'apprentissage
transform()
: paramètres générés à partir de la méthode fit()
, appliqués au modèle pour générer l'ensemble de données transformé.
fit_transform()
: combinaison de fit()
et transform()
api sur le même jeu de données
Commander Chapitre 4 de ceci livre & réponse de stackexchange pour plus de clarté
Ces méthodes sont utilisées pour centrer/mettre à l'échelle les données données. Il aide fondamentalement à normaliser les données dans une plage particulière
Pour cela, nous utilisons la méthode Z-score.
Nous faisons cela sur l'ensemble de données de formation.
1. Fit (): La méthode calcule les paramètres μ et σ et les enregistre en tant qu'objets internes.
2. Transformer (): La méthode utilisant ces paramètres calculés applique la transformation à un ensemble de données particulier.
3. Fit_transform (): joint les méthodes fit () et transform () pour la transformation du jeu de données.
Extrait de code pour Feature Scaling/Standardization (after train_test_split).
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_tranform(X_train)
sc.tranform(X_test)
Nous appliquons la même transformation (ensemble d'apprentissage aux mêmes deux paramètres µ et σ (valeurs)) sur notre ensemble d'essai.
Différence générique entre les méthodes:
Fit_transform et transform retournent tous deux la même matrice Document-term.
Voici la différence fondamentale 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.