[2021] ¡Qué y por qué son fit_transform() y transform() en scikit-learn! {HD}

1H3u1vH26WK1OQmPj50hiOw


25 de agosto de 2020·3 minutos de lectura

Scikit-learn es la biblioteca de aprendizaje automático más útil 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 resulta difícil entender algunos de los métodos muy simples que generalmente usamos cuando creamos nuestro modelo de aprendizaje automático.

Uno de esos métodos es ajuste_transformar() y otro es transformar(). Ambos son métodos de clase. sklearn.preprocesamiento.StandardScaler() Y casi se usan juntos al escalar o estandarizar nuestros datos de prueba y entrenamiento.

Foto de Tekton por Unspalsh

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

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 verdadera pregunta es ¿por qué estamos haciendo esto? Mi motivo es explicar este punto simple pero confuso de la manera más sencilla posible. ¡Empecemos entonces!

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

Nota:

  1. La estandarización de datos escala los atributos para tener 0 media y 1 varianza.
  2. El objetivo final de la estandarización es reducir todas las características a una escala común sin sesgar las diferencias en el rango de valores.
  3. En sklearn.preprocessing.StandardScaler(), el centrado y la escala se realizan de forma independiente para cada función.

La fórmula mágica para la estandarización:

imagen del autor

Ahora profundicemos en el concepto.

ajuste_transformar()

fit_transform() se aplica a los datos de entrenamiento para que podamos escalar los datos de entrenamiento y también aprender los parámetros de escala de estos datos. Al hacerlo, el modelo que creamos aprende 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á pasando 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 transforma todas las características usando cada media y varianza.

Ahora queremos que la escala se aplique también 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 una sorpresa para nuestro modelo. El método de transformación nos ayuda con esto.

Artículo relacionado – ¿Quieres saber más? multicolinealidad? leer aquí

transformar()

Con el método de transformación, podemos usar la misma media y varianza calculadas a partir de nuestros datos de entrenamiento para transformar nuestros datos de prueba. Por lo tanto, los parámetros aprendidos por nuestro modelo usando los datos de entrenamiento nos ayudan a transformar nuestros datos de prueba.

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

Aplicando el método de ajuste también a nuestros datos de prueba, calculamos una nueva media y varianza, que es una nueva escala para cada característica, y también le decimos a nuestro modelo nuestros datos de prueba. Entonces, lo que queremos sorprender es que nuestro modelo ya no sea desconocido y no obtengamos una buena estimación del rendimiento de nuestro modelo a partir de los datos de prueba (invisibles), que es el objetivo final de construir un modelo usando el aprendizaje automático. Algoritmo.

Esta es una forma estándar de escalar nuestros datos al construir un modelo de aprendizaje automático para que nuestro modelo no se centre en una característica específica del conjunto de datos mientras evita que nuestro modelo aprenda las características/valores/tendencias de nuestros datos de prueba.

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

Relación:

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

Estandarice características eliminando la media y escalando a la varianza unitaria El valor estándar de una muestra se calcula como…





[2021] ¡Qué y por qué son fit_transform() y transform() en scikit-learn! {HD}

Artículos recomendados

Deja una respuesta

Tu dirección de correo electrónico no será publicada.