La siguiente explicación se basa en la fit_transform
de Imputer
la clase, pero la idea es la misma para fit_transform
las otras clases scikit_learn gusta MinMaxScaler
.
transform
reemplaza los valores faltantes con un número. Por defecto, este número es el medio de las columnas de algunos datos que elija. Considere el siguiente ejemplo:
imp = Imputer()
# calculating the means
imp.fit([[1, 3], [np.nan, 2], [8, 5.5]])
Ahora el ordenador ha aprendido a usar una media (1 + 8) / 2 = 4.5 para la primera columna y una media (2 + 3 + 5.5) / 3 = 3.5 para la segunda columna cuando se aplica a datos de dos columnas:
X = [[np.nan, 11],
[4, np.nan],
[8, 2],
[np.nan, 1]]
print(imp.transform(X))
obtenemos
[[4.5, 11],
[4, 3.5],
[8, 2],
[4.5, 1]]
Entonces, fit
el imputador calcula los medios de las columnas a partir de algunos datos, y transform
aplica esos medios a algunos datos (que simplemente reemplaza los valores faltantes con los medios). Si ambos datos son iguales (es decir, los datos para calcular las medias y los datos a los que se aplican las medias), puede utilizarlos, fit_transform
que es básicamente un fit
seguido de a transform
.
Ahora tus preguntas:
¿Por qué podríamos necesitar transformar datos?
"Por varias razones, muchos conjuntos de datos del mundo real contienen valores faltantes, a menudo codificados como espacios en blanco, NaN u otros marcadores de posición. Sin embargo, estos conjuntos de datos son incompatibles con los estimadores de aprendizaje de scikit que suponen que todos los valores en una matriz son numéricos" ( fuente )
¿Qué significa ajustar el modelo en los datos de entrenamiento y transformarlos en datos de prueba?
El uso fit
de una impresora no tiene nada que ver con el fit
utilizado en el ajuste del modelo. Por lo tanto, usar los fit
datos de entrenamiento de la computadora solo calcula los medios de cada columna de datos de entrenamiento. El uso transform
de datos de prueba reemplaza los valores faltantes de datos de prueba con medios que se calcularon a partir de los datos de entrenamiento.