sklearn中的拟合方法

问题描述 投票:0回答:2

我问自己关于 sklearn 中拟合方法的各种问题。

问题 1:当我这样做时:

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

在此过程中变量模型的内容是否发生变化?

问题 2:当我这样做时:

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

svd_1 发生了什么?换句话说,svd_1已经被安装了,我又安装了它,那么它的组件发生了什么?

python machine-learning scikit-learn
2个回答
12
投票

问题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)
覆盖,正如 David Maust 答案中指出的那样。如果您想让两个不同的模型适合两组不同的数据,您需要执行以下操作:

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

5
投票

当您通过

fit
拨打
TruncatedSVD
时。它将用新矩阵构建的组件替换这些组件。 scikit-learn 中的一些估计器和转换器(例如 IncrementalPCA)具有
partial_fit
,它将通过添加额外数据来增量构建模型。

© www.soinside.com 2019 - 2024. All rights reserved.