En este artículo, discutiremos la diferencia entre ‘transform’ y ‘fit_transform’ en sklearn usando Python .
En la ciencia de datos y el aprendizaje automático, los métodos como fit(), transform() y fit_transform() proporcionados por el paquete scikit-learn son una de las herramientas vitales que se utilizan ampliamente en el preprocesamiento de datos y el ajuste de modelos. La tarea aquí es discutir cuál es la diferencia entre fit() , transform y fit_transform() y cómo se implementan usando funciones integradas que vienen con este paquete.
- El método de ajuste (datos) se utiliza para calcular la media y la desviación estándar de una característica determinada que se utilizará más para escalar.
- El método transform(data) se utiliza para realizar el escalado utilizando la media y la desviación estándar calculadas mediante el método .fit().
- El método fit_transform() realiza ajustes y transformaciones.
Todos estos 3 métodos están estrechamente relacionados entre sí. Antes de comprenderlos en detalle, tendremos que dividir el conjunto de datos en conjuntos de datos de entrenamiento y prueba en cualquier problema típico de aprendizaje automático. Todos los pasos de procesamiento de datos realizados en el conjunto de datos de entrenamiento también se aplican al conjunto de datos de prueba, pero en un formato ligeramente diferente. Esta diferencia podría entenderse bien cuando entendamos estos tres métodos.
Paquetes Requeridos
pip install scikit-learn
pip install pandas
Consideremos que tendremos que realizar el escalado como uno de los pasos de procesamiento de datos a realizar. Para demostrar este ejemplo, consideremos un conjunto de datos de iris incorporado.
Ejemplo:
Python3
from sklearn import datasets import pandas as pd iris = datasets.load_iris() data = pd.DataFrame(iris.get('data'), columns=[ 'sepal length', 'petal length', 'sepal width', 'sepal width']) data.head()
Producción:
Dividamos los datos como divisiones de entrenamiento y prueba.
Python3
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( data.iloc[:, :-1], data['sepal width'], test_size=0.33, random_state=42)
Ahora realicemos una escala estándar en la columna de ancho de sépalo. Escalar en general significa convertir la columna a una escala numérica común. El escalado estándar en particular convierte la columna de interés transformándola en un rango de números con media = 0 y desviación estándar = 1.
El método fit()
La función de ajuste calcula la formulación para transformar la columna en función de la escala estándar , pero no aplica la transformación real. El cálculo se almacena como un objeto de ajuste. El método fit no devuelve nada.
Ejemplo:
Python3
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(data['sepal width'])
Producción:
StandardScaler()
El método transform()
El método de transformación aprovecha el objeto de ajuste en el método de ajuste() y aplica la transformación real en la columna. Entonces, fit() y transform() es un proceso de dos pasos que completa la transformación en el segundo paso. Aquí, a diferencia del método fit(), el método de transformación devuelve la array realmente transformada.
Ejemplo:
Python3
scaler.transform(data['sepal width'])
Producción:
El método fit_transform()
Como discutimos en la sección anterior, fit() y transform() es un proceso de dos pasos, que se puede reducir a un proceso de una sola vez usando el método fit_transform. Cuando se usa el método fit_transform, podemos calcular y aplicar la transformación en un solo paso .
Ejemplo:
Python3
scaler.fit_transform(X_train)
Producción:
Como podemos ver, el resultado final de fit(), transform() y fit_transform() será el mismo. Ahora, tendremos que asegurarnos de que se aplique la misma transformación al conjunto de datos de prueba. Sin embargo, no podemos usar el método fit() en el conjunto de datos de prueba, porque sería un enfoque incorrecto, ya que podría introducir sesgos en el conjunto de datos de prueba . Entonces, intentemos usar el método transform() directamente en el conjunto de datos de prueba.
Ejemplo:
Python3
scaler.transform(X_test)
Producción:
Como podemos ver, ambos tienen salidas diferentes, esta podría ser una de las razones por las que sklearn ha dividido este tipo de paso de procesamiento de datos en dos.
Publicación traducida automáticamente
Artículo escrito por jssuriyakumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA