如何使用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