0
votes

Comment utiliser correctement un modèle de scaler?

scaler = MinMaxScaler(feature_range = (0, 1))
X_train[:, :, 0] = scaler.fit_transform(X_train[:, :, 0])
X_test[:, :, 0] = scaler.transform(X_test[:, :, 0])

X_train[:, :, 1] = scaler.fit_transform(X_train[:, :, 1])
X_test[:, :, 1] = scaler.transform(X_test[:, :, 1])

X_train[:, :, 2] = scaler.fit_transform(X_train[:, :, 2])
X_test[:, :, 2] = scaler.transform(X_test[:, :, 2])

X_train[:, :, 3] = scaler.fit_transform(X_train[:, :, 3])
X_test[:, :, 3] = scaler.transform(X_test[:, :, 3])

X_train[:, :, 4] = scaler.fit_transform(X_train[:, :, 4])
X_test[:, :, 4] = scaler.transform(X_test[:, :, 4])

scaler_filename = 'scaler.save'
joblib.dump(scaler, scaler_filename)
As you can see, I used MinMaxScaler to standardize each column of train/test data. After that, I saved the scaler object for posterior utilization. When I saved the scaler, can I just call the 'transform' method on the new data or do I have to call the 'fit' method too?

1 commentaires

Vous devriez utiliser des pipelines. De plus, les colonnes d'échelle des scalers individuellement. Au fur et à mesure que vous montrez la même référence d'objet et encore une fois, vous ne conservez que votre dernier scaler. Je conseillerais de simplement regarder le Docs


3 Réponses :


0
votes

Je vous suggère d'utiliser différentes scalers pour chacune de vos tables 2D. Ici, l'objet Straler que vous avez à la fin ne se souvient pas des paramètres de mise à l'échelle pour l'index 0. Peut-être que c'est peut-être le comportement souhaité, dis-moi si je me trompe ...

Si vous avez sauvegardé l'objet Scalerer à l'aide de jobliB ou de cornichon et chargez-le à partir de fichier, il contient tous les paramètres de droite pour une transformation ultérieure afin que oui, vous pouvez utiliser la transformée seule.


0 commentaires

0
votes

de Docs :

MinmaxScaler strong> Transforme les fonctionnalités en éteignant chaque fonctionnalité sur une plage donnée. P>

Cet estimateur échelle et traduit chaque fonctionnalité individuellement forte> telle que c'est dans la plage donnée de l'ensemble de l'entraînement, par ex. entre zéro et un. p> blockQuote>

Pas besoin de le faire pour chaque fonctionnalité individuellement, vous pouvez accumuler plusieurs fonctionnalités à la fois: P>

scaler = joblib.load('scaler.save')
...


0 commentaires

0
votes

Le MinmaxScaler échoue chaque colonne de données entre 0 et 1. La bonne voie, à partir d'un point de vue d'apprentissage de la machine, consiste à "apprendre" un refleer sur les données de formation, puis utilisez ensuite le Stractor appris sur les données de test. La raison de ceci est deux fois

  1. Nous supposons que vos données de formation sont suffisamment variées pour capturer les valeurs maximales et minimales au sein de l'ensemble du jeu de données (train et test)
  2. L'ensemble de test est supposé être inconnu / invisible. Vous appliqueriez une mise à l'échelle pour tester des données en «temps réel», car elle devient disponible, et vous n'avez donc pas besoin de (ou parfois à ne pas même que) former un refleer à chaque fois qu'un nouveau point de données de test devient disponible

    Je l'utiliserais comme tel xxx


0 commentaires