Saltar al contenido

¡Qué y por qué detrás de fit_transform () y transform () en scikit-learn!

octubre 2, 2021
1H3u1vH26WK1OQmPj50hiOw

¡Qué y por qué detrás de fit_transform () y transform () en scikit-learn!

Chetna Khanna

25 de agosto de 2020·3 min de lectura

Scikit-learn es la biblioteca más útil para el aprendizaje automático en el lenguaje de programación Python. Tiene muchas herramientas para construir un modelo de aprendizaje automático y también es bastante fácil de usar. Sin embargo, a veces nos cuesta comprender algunos de los métodos muy simples que generalmente usamos siempre al construir nuestro modelo de aprendizaje automático.

Uno de esos métodos es fit_transform () y otro es transformar(). Ambos son los métodos de clase. sklearn.preprocessing.StandardScaler () y utilizados casi juntos al escalar o estandarizar nuestros datos de prueba y entrenamiento.

Foto de Tekton de Unspalsh

La motivacion Para escribir este blog surgieron varias preguntas publicadas sobre estos métodos en un curso en línea sobre aprendizaje automático.

La pregunta es:

¿Por qué usamos fit_transform () en los datos de entrenamiento pero transform () en los datos de prueba?

Todos sabemos que llamamos al método fit_transform () en nuestros datos de entrenamiento y al método transform () en nuestros datos de prueba. Pero la pregunta real es ¿por qué hacemos esto? Mi motivo es explicar este simple pero confuso punto de la manera más simple posible. ¡Entonces empecemos!

Supongamos que estamos construyendo un modelo de k-vecino más cercano y tenemos que escalar nuestras características. La forma más común de escalar las características es a través de la clase StandardScaler de scikit-learn.

Nota:

  1. La estandarización de datos es el proceso de cambiar la escala de los atributos para que tengan la media como 0 y la varianza como 1.
  2. El objetivo final de realizar la estandarización es reducir todas las características a una escala común sin distorsionar las diferencias en el rango de los valores.
  3. En sklearn.preprocessing.StandardScaler (), el centrado y el escalado ocurren de forma independiente en cada característica.

La fórmula mágica que realiza la estandarización:

1*R6O8lOicqfK9zLQtqEMtAQ

Imagen del autor

Ahora profundicemos en el concepto.

fit_transform ()

fit_transform () se usa en los datos de entrenamiento para que podamos escalar los datos de entrenamiento y también aprender los parámetros de escalado de esos datos. Aquí, el modelo creado por nosotros aprenderá la media y la varianza de las características del conjunto de entrenamiento. Estos parámetros aprendidos se utilizan luego para escalar nuestros datos de prueba.

Entonces, ¿qué está sucediendo realmente aquí? 🤔

El método de ajuste consiste en calcular la media y la varianza de cada una de las características presentes en nuestros datos. El método de transformación está transformando todas las características utilizando la media y la varianza respectivas.

Ahora, queremos que el escalado también se aplique a nuestros datos de prueba y, al mismo tiempo, no queremos estar sesgados con nuestro modelo. Queremos que nuestros datos de prueba sean completamente nuevos y un conjunto sorpresa para nuestro modelo. El método de transformación nos ayuda en este caso.

Artículo relacionado – Quiere saber sobre Multicolinealidad? Leer aquí

transformar()

Usando el método de transformación, podemos usar la misma media y varianza que se calcula a partir de nuestros datos de entrenamiento para transformar nuestros datos de prueba. Por lo tanto, los parámetros aprendidos por nuestro modelo utilizando los datos de entrenamiento nos ayudarán a transformar nuestros datos de prueba.

Ahora la pregunta es ¿por qué hicimos esto? 🙃

¡Aquí está la lógica simple detrás de esto!

Si también usamos el método de ajuste en nuestros datos de prueba, calcularemos una nueva media y varianza que es una nueva escala para cada característica y dejaremos que nuestro modelo también conozca nuestros datos de prueba. Por lo tanto, lo que queremos mantener como una sorpresa ya no es desconocido para nuestro modelo y no obtendremos una buena estimación de cómo se está desempeñando nuestro modelo en los datos de prueba (no vistos), que es el objetivo final de construir un modelo utilizando el aprendizaje automático. algoritmo.

Este es el procedimiento estándar para escalar nuestros datos mientras se construye un modelo de aprendizaje automático para que nuestro modelo no esté sesgado hacia una característica particular del conjunto de datos y, al mismo tiempo, impida que nuestro modelo aprenda las características / valores / tendencias de nuestros datos de prueba.

Espero que esta explicación le ayude a comprender la lógica simple detrás de estos métodos.

Referencia:

sklearn.preprocessing.StandardScaler – documentación de scikit-learn 0.23.2

Estandarizar características eliminando la media y escalando a la varianza de la unidad La puntuación estándar de una muestra se calcula como…

scikit-learn.org

close