python sklearn中的fit方法



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

问题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已经被拟合了,我再次拟合它,那么它的组件发生了什么?

问题1:变量模型的内容在过程中是否发生了任何变化?

是的。fit方法修改对象。它返回对对象的引用。因此,小心!在第一个示例中,所有三个变量modelsvd_1svd_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发生了什么?

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

最后备注:在这两个例子中发生的情况是,fit(X1)的结果被fit(X2)覆盖,正如David Maust在回答中指出的那样。如果你想让两个不同的模型适应两组不同的数据,你需要做这样的事情:

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

TruncatedSVD上调用fit时。它将用根据新矩阵构建的组件替换这些组件。scikit中的一些估计器和转换器(如IncrementalPCA)有一个partial_fit,它将通过添加额外数据来逐步构建模型。

相关内容

  • 没有找到相关文章

最新更新