Saltar al contenido

¿Normalizar los datos antes o después de dividir los datos de entrenamiento y prueba?

Solución:

Primero debe dividir los datos en entrenamiento y conjunto de prueba (el conjunto de validación también podría ser útil).

No olvide que los puntos de datos de prueba representan datos del mundo real. La normalización de características (o estandarización de datos) de las variables explicativas (o predictoras) es una técnica utilizada para centrar y normalizar los datos restando la media y dividiendo por la varianza. Si toma la media y la varianza de todo el conjunto de datos, estará introduciendo información futura en las variables explicativas de entrenamiento (es decir, la media y la varianza).

Por lo tanto, debe realizar la normalización de características sobre los datos de entrenamiento. Luego, realice la normalización en las instancias de prueba también, pero esta vez utilizando la media y la varianza de las variables explicativas de entrenamiento. De esta manera, podemos probar y evaluar si nuestro modelo puede generalizarse bien a puntos de datos nuevos e invisibles.

Para una lectura más completa, puede leer mi artículo Escalado y normalización de características en pocas palabras


Como ejemplo, asumiendo que tenemos los siguientes datos:

>>> import numpy as np
>>> 
>>> X, y = np.arange(10).reshape((5, 2)), range(5)

dónde X representa nuestras características:

>>> X
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]

y Y contiene la etiqueta correspondiente

>>> list(y)
>>> [0, 1, 2, 3, 4]

Paso 1: crear conjuntos de entrenamiento / prueba

>>> X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

>>> X_train
[[4 5]
 [0 1]
 [6 7]]
>>>
>>> X_test
[[2 3]
 [8 9]]
>>>
>>> y_train
[2, 0, 3]
>>>
>>> y_test
[1, 4]

Paso 2: normaliza los datos de entrenamiento

>>> from sklearn import preprocessing
>>> 
>>> normalizer = preprocessing.Normalizer()
>>> normalized_train_X = normalizer.fit_transform(X_train)
>>> normalized_train_X
array([[0.62469505, 0.78086881],
       [0.        , 1.        ],
       [0.65079137, 0.7592566 ]])

Paso 3: normalizar los datos de prueba

>>> normalized_test_X = normalizer.transform(X_test)
>>> normalized_test_X
array([[0.5547002 , 0.83205029],
       [0.66436384, 0.74740932]])

puedes usar ajustar y luego transformar aprender

normalizer = preprocessing.Normalizer().fit(xtrain)

transformar

xtrainnorm = normalizer.transform(xtrain) 
xtestnorm = normalizer.transform(Xtest) 
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *