En la caja de herramientas sklearn-python, hay dos funciones transform
y fit_transform
about sklearn.decomposition.RandomizedPCA
. La descripción de dos funciones es la siguiente
Pero, ¿cuál es la diferencia entre ellos?
python
python-2.7
scikit-learn
tqjustc
fuente
fuente
est.fit_transform(X)
es siempre equivalente aest.fit(X).transform(X)
, pero generalmente más rápido.Respuestas:
Aquí la diferencia que puede usar pca.transform solo si ya ha calculado PCA en una matriz
si quieres usar
.transform
necesitas enseñar la regla de transformación a tu pcaEn particular, la transformada PCA aplica el cambio de base obtenido con la descomposición PCA de la matriz X a la matriz Z.
fuente
fit_transform
es la combinación de dos funcionesfit
ytransform
?En la api del estimador de scikit-learn ,
fit()
: utilizado para generar parámetros del modelo de aprendizaje a partir de datos de entrenamientotransform()
: parámetros generados a partir delfit()
método, aplicados al modelo para generar un conjunto de datos transformado.fit_transform()
: combinación defit()
ytransform()
api en el mismo conjunto de datosConsulte el Capítulo 4 de este libro y la respuesta de stackexchange para obtener más claridad
fuente
Estos métodos se utilizan para centrar / caracterizar la escala de un dato dado. Básicamente, ayuda a normalizar los datos dentro de un rango particular.
Para ello, utilizamos el método Z-score.
Hacemos esto en el conjunto de datos de entrenamiento.
1. Fit (): El método calcula los parámetros μ y σ y los guarda como objetos internos.
2. Transform (): el método que utiliza estos parámetros calculados aplica la transformación a un conjunto de datos en particular.
3. Fit_transform (): une el método fit () y transform () para la transformación del conjunto de datos.
Fragmento de código para escalamiento / estandarización de funciones (después de train_test_split).
Aplicamos la misma transformación de parámetros (conjunto de entrenamiento con los mismos dos parámetros μ y σ (valores)) en nuestro conjunto de pruebas.
fuente
Diferencia genérica entre los métodos:
Tanto fit_transform como transform devuelven la misma matriz de documentos y términos.
Fuente
fuente
Aquí la diferencia básica entre
.fit()
&.fit_transform()
:.ajuste():
Se usa en el aprendizaje supervisado tener dos objetos / parámetros (x, y) para ajustar el modelo y hacer el modelo para ejecutar, donde sabemos que lo que vamos a predecir
.fit_transform ():
Se usa en el aprendizaje no supervisado que tiene un objeto / parámetro (x), donde no sabemos, qué vamos a predecir.
fuente
En términos simples, fit_transform significa hacer algunos cálculos y luego hacer una transformación (digamos, calcular las medias de las columnas a partir de algunos datos y luego reemplazar los valores faltantes). Entonces, para el conjunto de entrenamiento, debe calcular y hacer la transformación.
Pero para el conjunto de pruebas, el aprendizaje automático aplica la predicción basada en lo que se aprendió durante el conjunto de entrenamiento y, por lo tanto, no necesita calcular, solo realiza la transformación.
fuente
Por qué y cuándo usar cada uno:
Todas las respuestas son bastante buenas, pero haría énfasis en POR QUÉ y CUÁNDO usar cada método.
ajustar (), transformar (), ajustar_transformar ()
Por lo general, tenemos un problema de aprendizaje supervisado con (X, y) como conjunto de datos, y lo dividimos en datos de entrenamiento y datos de prueba:
Imagine que estamos ajustando un tokenizador, si ajustamos X, estamos incluyendo datos de prueba en el tokenizador, ¡pero he visto este error muchas veces!
Lo correcto es encajar ÚNICAMENTE con X_train , porque no conoce "sus datos futuros", por lo que no puede usar los datos de X_test para ajustar nada.
Luego, puede transformar sus datos de prueba, pero por separado, por eso existen diferentes métodos.
Consejo final:
X_train_transformed = model.fit_transform(X_train)
equivale a:,X_train_transformed = model.fit(X_train).transform(X_train)
pero el primero es más rápido.Tenga en cuenta que lo que llamo "modelo" normalmente será un escalador, un transformador tfidf, otro tipo de vectorizador, un tokenizador ...
fuente