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方法修改对象.它返回对象的引用.因此,保重!在第一个示例中,所有三个变量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引用相同的对象,因此第一个和第二个示例之间绝对没有区别.

最后备注:
在两个例子中发生的是,拟合(X1)的结果被拟合(X2)覆盖,如answer by David Maust中所指出的.如果你想要将两个不同的模型拟合到两个不同的数据集,你需要做类似的事情这个:

svd_1 = TruncatedSVD().fit(X1)
svd_2 = TruncatedSVD().fit(X2)
点击查看更多相关文章

转载注明原文:python sklearn中的fit方法 - 乐贴网