python sklearn 中的拟合方法
fit method in python sklearn
我在问自己关于 sklearn 中 fit 方法的各种问题。
问题一:当我做的时候:
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-learn 中的一些估算器和转换器,例如 IncrementalPCA 有一个 partial_fit
,它将通过添加额外的数据逐步构建模型。
问题一:变量模型的内容在这个过程中有没有变化?
是的。 fit
方法修改对象。它 returns 对象的引用。因此,保重!在第一个示例中,所有三个变量 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)
我在问自己关于 sklearn 中 fit 方法的各种问题。
问题一:当我做的时候:
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-learn 中的一些估算器和转换器,例如 IncrementalPCA 有一个 partial_fit
,它将通过添加额外的数据逐步构建模型。
问题一:变量模型的内容在这个过程中有没有变化?
是的。 fit
方法修改对象。它 returns 对象的引用。因此,保重!在第一个示例中,所有三个变量 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)