scikit - método de ajuste en python sklearn
sklearn datasets make (2)
Cuando llamas a fit
en TruncatedSVD
. Reemplazará los componentes con aquellos construidos a partir de la nueva matriz. Algunos estimadores y transformadores en scikit-learn como IncrementalPCA tienen un partial_fit
que construirá incrementalmente un modelo agregando datos adicionales.
Me estoy haciendo varias preguntas sobre el método de ajuste en sklearn.
Pregunta 1: cuando lo haga:
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD()
svd_1 = model.fit(X1)
svd_2 = model.fit(X2)
¿El contenido del modelo de variable cambia en absoluto durante el proceso?
Pregunta 2: cuando lo haga:
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD()
svd_1 = model.fit(X1)
svd_2 = svd_1.fit(X2)
¿Qué está pasando con svd_1? En otras palabras, svd_1 ya se ha ajustado y lo coloco de nuevo, entonces, ¿qué ocurre con su componente?
Pregunta 1: ¿El contenido del modelo de variable cambia en absoluto durante el proceso?
Sí. El método de fit
modifica el objeto. Y devuelve una referencia al objeto. Por lo tanto, ¡ten cuidado! 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é está pasando con 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.
Observación final: Lo que sucede en ambos ejemplos es que el resultado del fit(X1)
se sobreescribe por 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)