votingclassifier supervised stable sklearn scikit org learning learn instalar index español auto_examples machine-learning scikit-learn

machine learning - supervised - Ajustar datos frente a transformar datos en scikit-learn



supervised learning sklearn (3)

En scikit-learn , todos los estimadores tienen un método de fit() y, dependiendo de si están supervisados ​​o no, también tienen un método de predict() o de transform() .

Estoy en el proceso de escribir un transformer para una tarea de aprendizaje no supervisada y me preguntaba si hay una regla de oro donde poner qué tipo de lógica de aprendizaje. La documentación oficial no es muy útil a este respecto:

fit_transform(X, y=None, **fit_params)
Ajustar a los datos, luego transformarlo.

En este contexto, ¿qué significa ajustar datos y transformar datos ?


Como lo explican otras respuestas, el fit no necesita hacer nada (excepto de devolver el objeto transformador). Está ahí para que todos los transformadores tengan la misma interfaz y funcionen bien con cosas como tuberías.
Por supuesto, algunos transformadores necesitan un método de fit (piense en tf-idf, PCA ...) que realmente hace las cosas.
El método de transform necesita devolver los datos transformados.

fit_transform es un método de conveniencia que encadena las operaciones de ajuste y transformación. Puede obtenerlo gratis (!) Derivando su clase de transformador personalizado de TransformerMixin e implementando el fit y la transform .

Espero que esto lo aclare un poco.


En este caso, llamar al método de fit no hace nada. Como puede ver en este ejemplo , no todos los transformadores necesitan realmente hacer algo con métodos de fit o transform . Mi conjetura es que cada clase en scikit-learn debe implementar el ajuste, la transformación y / o la predicción para que sea consistente con el resto del paquete. Pero supongo que esto es realmente una exageración.


Fitting encuentra los parámetros internos de un modelo que se utilizará para transformar los datos. La transformación aplica los parámetros a los datos. Puede ajustar un modelo a un conjunto de datos y luego transformarlo en un conjunto completamente diferente.

Por ejemplo, usted ajusta un modelo lineal a los datos para obtener una pendiente e interceptar. Luego, utiliza esos parámetros para transformar (es decir, asignar) valores nuevos o existentes de x a y .

fit_transform solo hace los dos pasos hacia los mismos datos.

Un ejemplo de scikit: Usted ajusta los datos para encontrar los componentes principales. Luego, transforma sus datos para ver cómo se asigna a estos componentes:

from sklearn.decomposition import PCA pca = PCA(n_components=2) X = [[1,2],[2,4],[1,3]] pca.fit(X) # This is the model to map data pca.components_ array([[ 0.47185791, 0.88167459], [-0.88167459, 0.47185791]], dtype=float32) # Now we actually map the data pca.transform(X) array([[-1.03896057, -0.17796634], [ 1.19624651, -0.11592512], [-0.15728599, 0.29389156]]) # Or we can do both "at once" pca.fit_transform(X) array([[-1.03896058, -0.1779664 ], [ 1.19624662, -0.11592512], [-0.15728603, 0.29389152]], dtype=float32)