我一直在用sklearn随机林分类器做一些实验。我正在多个批次上训练多个树,并使用以下方法合并它们:
def combine_rfs(rfList):
rf1 = rfList[0]
for i in range(1,len(rfList)):
rf1.estimators_ += rfList[i].estimators_
rf1.n_estimators = len(rf1.estimators_)
return rf1
我注意到,如果我在A类和B类中给出相同数量的样本,那么最终的树的分类倾向于40-60%的A类和40-60%的B类,尽管我本希望它在A中更多,在B中更少。
基本上我看到的是A/B中样本的比例将决定这些类别的分类比例,不管这些类别在测试数据中的实际比例是多少。
如何减轻这种影响?
最佳答案
您可以研究stratified cross-validation,一种确保测试和验证数据集中的相对类频率相同的方法。
如果您的训练集相对而言包含大量的B类,那么您的分类器将预测更多的该实例,这是有意义的。分层交叉验证通过使三个集合(训练、测试、验证)更相似来克服这个问题。
关于python - 随机森林:每个类别中样本数量的影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48578235/