为什么“partial_fit”方法比“适合”方法花费的时间长得多

时间:2014-10-17 10:09:04

标签: python scikit-learn

我正在玩scikit-learn库的字典学习,我想根据一系列图像构建一个字典。我尝试使用partial_fit的{​​{1}}方法,并注意到它比MiniBatchDictionaryLearning花了更长的时间。我的代码看起来如何(使用lena的例子):

fit

这需要很长时间才能完成,而如果我将import numpy as np from scipy.misc import lena from sklearn.decomposition import MiniBatchDictionaryLearning from sklearn.feature_extraction.image import extract_patches_2d lena = lena() lena = lena[::2, ::2] + lena[1::2, ::2] + lena[::2, 1::2] + lena[1::2, 1::2] height, width = lena.shape patch_size = (7, 7) data = extract_patches_2d(lena, patch_size) data = data.reshape(data.shape[0], -1) dico = MiniBatchDictionaryLearning(n_components=100, n_iter=500,transform_algorithm ='lars', alpha=1,transform_n_nonzero_coefs=5,verbose=1) dicObj = dico.partial_fit(data) 替换为partial_fit ......则需要几秒钟。

(我有scikit-learn 15.2)

为什么会这样?

1 个答案:

答案 0 :(得分:0)

这很可能是因为partial_fit旨在调用小批量数据。

方法fit实际上和partial_fit一样 - 它调用在线字典学习功能。区别在于fit使用对象构造中指示的批处理大小,默认情况下为3,而partial_fit对您提供的完整数据起作用(如果您提供的话,这可能需要很长时间)许多样本。partial_fit不是为此而制作的。

Here是函数,因此您可以查看发生的情况。