Dans la boîte à outils sklearn-python, il y a deux fonctions transform
et fit_transform
environ sklearn.decomposition.RandomizedPCA
. La description de deux fonctions est la suivante
Mais quelle est la différence entre eux?
python
python-2.7
scikit-learn
tqjustc
la source
la source
est.fit_transform(X)
est toujours équivalent àest.fit(X).transform(X)
, mais généralement plus rapide.Réponses:
Voici la différence, vous ne pouvez utiliser pca.transform que si vous avez déjà calculé PCA sur une matrice
si vous souhaitez l'utiliser,
.transform
vous devez enseigner la règle de transformation à votre PCAEn particulier, la transformée PCA applique le changement de base obtenu avec la décomposition PCA de la matrice X à la matrice Z.
la source
fit_transform
c'est la combinaison de deux fonctionsfit
ettransform
?Dans l' API d'estimation scikit-learn ,
fit()
: utilisé pour générer des paramètres de modèle d'apprentissage à partir de données d'entraînementtransform()
: paramètres générés à partir de lafit()
méthode, appliqués sur le modèle pour générer un ensemble de données transformé.fit_transform()
: combinaison defit()
ettransform()
api sur le même jeu de donnéesConsultez le chapitre 4 de ce livre et la réponse de stackexchange pour plus de clarté
la source
Ces méthodes sont utilisées pour centrer / mettre à l'échelle les caractéristiques d'une donnée donnée. Cela aide essentiellement à normaliser les données dans une plage particulière
Pour cela, nous utilisons la méthode du Z-score.
Nous faisons cela sur l'ensemble de données d'apprentissage.
1. Fit (): La méthode calcule les paramètres μ et σ et les enregistre en tant qu'objets internes.
2. Transform (): 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 la mise à l'échelle / la normalisation des fonctionnalités (après train_test_split).
Nous appliquons la même transformation de paramètre (ensemble d'entraînement, les deux mêmes paramètres μ et σ (valeurs)) sur notre ensemble de test.
la source
Différence générique entre les méthodes:
Fit_transform et transform retournent tous deux la même matrice Document-term.
La source
la source
Voici la différence fondamentale entre
.fit()
&.fit_transform()
:.en forme():
est utilisé dans l'apprentissage supervisé ayant deux objet / paramètre (x, y) pour ajuster le modèle et faire le modèle à exécuter, où nous savons que ce que nous allons prédire
.fit_transform ():
est utilisé dans l'apprentissage non supervisé ayant un objet / paramètre (x), où nous ne savons pas, ce que nous allons prédire.
la source
En termes simples, fit_transform signifie faire un calcul puis effectuer une transformation (par exemple, calculer la moyenne des colonnes à partir de certaines données, puis remplacer les valeurs manquantes). Donc, pour l'ensemble d'entraînement, vous devez à la fois calculer et effectuer une transformation.
Mais pour l'ensemble de test, l'apprentissage automatique applique la prédiction en fonction de ce qui a été appris pendant l'ensemble d'entraînement et il n'a donc pas besoin de calculer, il effectue simplement la transformation.
la source
Pourquoi et quand utiliser chacun d'eux:
Toutes les réponses sont assez bonnes, mais je mettrais l'accent sur POURQUOI et QUAND utiliser chaque méthode.
fit (), transform (), fit_transform ()
Habituellement, nous avons un problème d'apprentissage supervisé avec (X, y) comme ensemble de données, et nous le divisons en données d'entraînement et données de test:
Imaginez que nous installions un tokenizer, si nous ajustons X, nous incluons des données de test dans le tokenizer, mais j'ai vu cette erreur plusieurs fois!
Le correct est de s'adapter UNIQUEMENT à X_train , car vous ne connaissez pas "vos futures données", vous ne pouvez donc pas utiliser les données X_test pour ajuster quoi que ce soit!
Ensuite, vous pouvez transformer vos données de test, mais séparément, c'est pourquoi il existe différentes méthodes.
Dernier conseil:
X_train_transformed = model.fit_transform(X_train)
équivaut à:,X_train_transformed = model.fit(X_train).transform(X_train)
mais le premier est plus rapide.Notez que ce que j'appelle "modèle" sera généralement un scaler, un transformateur tfidf, un autre type de vectoriseur, un tokenizer ...
la source