web-dev-qa-db-fra.com

Quelle est la différence entre 'transform' et 'fit_transform' dans sklearn

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

enter image description hereenter image description here

Mais quelle est la différence entre eux?

74
tqjustc

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.

17
Donbeo

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

enter image description here

Commander Chapitre 4 de ceci livre & réponse de stackexchange pour plus de clarté

50
Ronak Poriya

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.

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.

27
shaurya uppal

Différence générique entre les méthodes:

  • fit (raw_documents [ y]): apprendre un dictionnaire de vocabulaire de tous les jetons des documents bruts.
  • fit = fit_transform (raw_documents [ y]): apprenez le dictionnaire de vocabulaire et renvoyez la matrice terme-document. Cela équivaut à un ajustement suivi de la transformation, mais mis en œuvre plus efficacement.
  • transform (raw_documents): Transforme les documents en matrice de termes de document. Extraire les compteurs de jetons à partir de documents en texte brut en utilisant le vocabulaire associé à fit ou celui fourni au constructeur.

Fit_transform et transform retournent tous deux la même matrice Document-term.

Source

3
Nikita Jain

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.
1
a zEnItH