如何使用warm_start

我想使用warm_start参数将训练数据添加到我的随机森林分类器中。我希望它可以这样使用:

clf = RandomForestClassifier(...)

clf.fit(get_data())

clf.fit(get_more_data(), warm_start=True)

但是该warm_start参数是构造函数参数。那我做这样的事吗?

clf = RandomForestClassifier()

clf.fit(get_data())

clf = RandomForestClassifier (warm_start=True)

clf.fit(get_more_data)

这对我来说毫无意义。对构造函数的新调用是否会丢弃先前的训练数据?我想我缺少了一些东西。

回答:

的基本模式(摘自Miriam的答案):

clf = RandomForestClassifier(warm_start=True)

clf.fit(get_data())

clf.fit(get_more_data())

将是正确使用API​​的方式。

但是这里有一个问题。

正如文档所说的那样:

设置为True时,重用上一个调用的解决方案以适应并向集合添加更多估计量,否则,仅适应一个全新的森林。

这意味着,唯一warm_start可以为您做的就是添加新的DecisionTree。以前所有的树木似乎都没有被破坏过!

让我们通过一些来源进行检查:

  n_more_estimators = self.n_estimators - len(self.estimators_)

if n_more_estimators < 0:

raise ValueError('n_estimators=%d must be larger or equal to '

'len(estimators_)=%d when warm_start==True'

% (self.n_estimators, len(self.estimators_)))

elif n_more_estimators == 0:

warn("Warm-start fitting without increasing n_estimators does not "

"fit new trees.")

这基本上告诉我们,在进行新的拟合之前,您需要增加估计量!

我不知道sklearn在这里有什么样的用途。我不确定,如果合适,增加内部变量并再次合适是否正确使用,但我以某种方式对此表示怀疑(尤其n_estimators是不是公共类变量)。

对于这里的核心学习而言,您的基本方法(关于该库和该分类器)可能不是一个好主意!我不会进一步追求这一点。

以上是 如何使用warm_start 的全部内容, 来源链接: utcz.com/qa/399333.html

回到顶部