我有一个数据集,其中的类是不平衡的。类别为“ 1”或“ 0”,其中类别“ 1”:“ 0”的比率为5:1。如何在带有随机森林的sklearn中计算每个类别的预测误差以及相应的重新平衡权重,类似于以下链接:http : //www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#平衡
您可以将样本权重参数传递给随机森林拟合方法
sample_weight : array-like, shape = [n_samples] or None
样品重量。如果为None,则对样本进行平均加权。在每个节点中搜索拆分时,将忽略创建净净值为零或负权重的子节点的拆分。在分类的情况下,如果拆分会导致任何单个类在任一子节点中都具有负权重,则也将忽略拆分。
在较旧的版本中,存在一种preprocessing.balance_weights
为给定样本生成平衡权重的方法,以使类别变得均匀分布。它仍然存在,在内部但仍可用的preprocessing._weights模块中,但已不建议使用,并将在以后的版本中删除。不知道确切的原因。
更新资料
有些澄清,您似乎很困惑。sample_weight
一旦记住它的目的是平衡训练数据集中的目标类别,用法就很简单。也就是说,如果您具有X
作为观察值和y
作为类(标签),则len(X) == len(y) == len(sample_wight)
和sample witght
1维数组的每个元素代表对应对的权重(observation, label)
。对于您的情况,如果1
类被表示为0
类的5次,并且您平衡了类分布,则可以使用简单
sample_weight = np.array([5 if i == 0 else 1 for i in y])
分配5
所有0
实例的权重和1
所有1
实例的权重。请参阅上面的链接以获取更多巧妙的balance_weights
权重评估功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句