为什么 sklearn 潜在狄利克雷分配的拟合度和partial_fit会返回不同的结果



奇怪的是,它似乎是完全相同的适合和partial_fit的代码。

您可以在以下链接中看到代码:

https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L478

不完全相同的代码; partial_fit使用total_samples

" total_samples:整数,可选(默认值=1e6( 文档总数。仅用于partial_fit方法。

https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L184

(部分适合(https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L472

(适合(https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L510

以防万一您感兴趣:当您的数据集非常大时,partial_fit是一个很好的候选者。因此,与其遇到可能的内存问题,不如分小批量执行拟合,这称为增量学习

因此,在您的情况下,您应该考虑到默认值的值total_samples 1000000.0 .因此,如果您不更改此数字并且您的实际样本数更大,那么您将从fit方法和fit_partial得到不同的结果。或者,可能是您在fit_partial中使用小批量,而不是涵盖您提供给fit方法的所有样品。即使您这样做正确,您也可能得到不同的结果,如文档中所述:

  • "增量学习者本身可能无法应对新的/看不见的目标类。在这种情况下,您必须使用 classes= 参数将所有可能的类传递给第一个partial_fit调用。
  • "[...]选择一个合适的算法是,随着时间的推移,它们对每个示例的重视程度并不相同[...]">

SKlearn文档:https://scikit-learn.org/0.15/modules/scaling_strategies.html#incremental-learning

相关内容

  • 没有找到相关文章

最新更新