随机森林增量学习 bug错误提示广播机制有问题

在使用sklearn的随机森林进行增量学习时,遇到问题:当第二次训练的数据规模增大且类别数量与初次训练不同时,代码出现错误。已排除数据异常,错误集中在类别数量变化上。初次训练类别数为1时,后续训练不受限制;但只要初次类别数超过1,后续类别数与初次不同则失败。初步推测可能需要保持增量学习中类别数的恒定以避免错误。
摘要由CSDN通过智能技术生成

问题未解决

问题描述:
使用sklearn中随机森林函数进行增量学习,
第一次训练:设置随机森林参数n_estimators = 10, warm_start = True,训练小样本容量数据,可正常训练并预测分类;
第二次训练:设置参数n_estimators = 20, 数据规模大幅增加,生成bug,无法生成预测结果,错误信息:ValueError: operands could not be broadcast together with shapes (50,3) (50,2) (50,3)

问题解决思路:

  1. 检查数据是否存在异常,测试数据是否正确 (数据ok)。
  2. 报错信息发生在二次训练阶段,检查特殊的数字 50, 3, 2 , 测试得出,50为第二次训练集数据规模,3 为第二次训练集类别种类数,2 为初次训练集类别种类数。
  3. 尝试更改第二次训练集类别个数,测试发现,即使第二次类别个数小于初次训练类别个数时仍然会出现类似错误(50,1) (50,2) (50,1),但当两次训练样本种类个数相同时(即使各自种类完全不同)代码可以正常通过。
  4. 尝试更改初次训练集类别个数,测试发现,大多数情况下只要初次训练样本种类个数不同于第二次训练样本种类个数就会生成类似错误。但当初次训练样本种类数为 1 时,第二次训练样本种类个数无论多大,都可成功运行

疑惑:

  1. 为什么初次训练样本类别数为1的时候为什么后续训练类别个数无论多少都可以执行,但一旦初次样本类别数超过1了,只要后续训练类别个数与初次样本类别数不同就无法执行。
  2. 为什么即使初次和第二次训练样本呢种类完全不同,但只要个数相同就可以正确执行。
  3. 为什么即使初次训练样本种类包含第二次训练样本种类,但只要种类数不同就无法执行。

解决方案
估计暂时只能选择保持增量学习每次迭代保证种类数的恒定。

有时间一定要去查查源码,看可不可以用更方便的方法解决这个问题

有可能是解决方案

错误代码:

from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

rows = 50
cols = 4
x_train_1 =
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值