método de ajuste en skthear python

Me estoy haciendo varias preguntas sobre el método de ajuste en sklearn.

Pregunta 1: cuando hago:

from sklearn.decomposition import TruncatedSVD model = TruncatedSVD() svd_1 = model.fit(X1) svd_2 = model.fit(X2) 

¿Está cambiando el contenido del modelo variable durante el proceso?

Pregunta 2: cuando hago:

 from sklearn.decomposition import TruncatedSVD model = TruncatedSVD() svd_1 = model.fit(X1) svd_2 = svd_1.fit(X2) 

¿Qué le está pasando a svd_1? En otras palabras, svd_1 ya se ha instalado y lo vuelvo a ajustar, así que, ¿qué sucede con su componente?

Pregunta 1: ¿Está cambiando el contenido del modelo variable durante el proceso?

Sí. El método de fit modifica el objeto. Y devuelve una referencia al objeto. ¡Así, cuídate! En el primer ejemplo, las tres variables model , svd_1 y svd_2 realidad se refieren al mismo objeto.

 from sklearn.decomposition import TruncatedSVD model = TruncatedSVD() svd_1 = model.fit(X1) svd_2 = model.fit(X2) print(model is svd_1 is svd_2) # prints True 

Pregunta 2: ¿Qué le está pasando a svd_1?

model y svd_1 refieren al mismo objeto, por lo que no hay absolutamente ninguna diferencia entre el primer y el segundo ejemplo.

Comentario final: Lo que sucede en ambos ejemplos es que el resultado de fit(X1) se sobrescribe con fit(X2) , como se señala en la respuesta de David Maust . Si desea tener dos modelos diferentes ajustados a dos conjuntos de datos diferentes, debe hacer algo como esto:

 svd_1 = TruncatedSVD().fit(X1) svd_2 = TruncatedSVD().fit(X2) 

Cuando llamas a fit en TruncatedSVD . Reemplazará los componentes con los construidos a partir de la nueva matriz. Algunos estimadores y transformadores en scikit-learn como IncrementalPCA tienen un ajuste parcial que construirá un modelo de manera incremental al agregar datos adicionales.