python中的fit方法

python中的fit方法,python,model,scikit-learn,Python,Model,Scikit Learn,我在问自己关于sklearn中fit方法的各种问题 问题1:当我这样做时: from sklearn.decomposition import TruncatedSVD model = TruncatedSVD() svd_1 = model.fit(X1) svd_2 = model.fit(X2) from sklearn.decomposition import TruncatedSVD model = TruncatedSVD() svd_1 = model.fit(X1) svd_2

我在问自己关于sklearn中fit方法的各种问题

问题1:当我这样做时:

from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD()
svd_1 = model.fit(X1)
svd_2 = model.fit(X2)
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD()
svd_1 = model.fit(X1)
svd_2 = svd_1.fit(X2)
在此过程中,变量模型的内容是否发生了变化

问题2:当我这样做时:

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

svd_1发生了什么?换句话说,svd_1已经安装好了,我再次安装它,那么它的组件发生了什么变化?

当您在
TruncatedSVD
上调用
fit
时。它将用新矩阵构建的组件替换这些组件。scikit中的一些估计器和变换器学习起来像是有一个
部分拟合
,它将通过添加额外数据来增量构建模型。

问题1:在这个过程中,变量模型的内容会发生任何变化吗

对。
fit
方法修改对象。并返回对该对象的引用。因此,小心!在第一个示例中,所有三个变量
model
svd_1
svd_2
实际上都指向同一个对象

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
问题2:svd_1发生了什么

model
svd_1
指的是同一个对象,因此第一个示例和第二个示例之间绝对没有区别

最后一句话: 在这两个示例中发生的情况是,
fit(X1)
的结果被
fit(X2)
覆盖,如中所述。如果要将两个不同的模型安装到两组不同的数据,则需要执行以下操作:

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