当前位置: 首页 > 面试题库 >

在sklearn中使用RandomForestClassifier进行不平衡分类

韩志专
2023-03-14
问题内容

我有一个数据集,其中的类是不平衡的。类别为“ 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 witght1维数组的每个元素代表对应对的权重(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权重评估功能。



 类似资料:
  • 嘿,伙计们,我有一个任务,我应该读取用户输入的字符串,并使用堆栈检查平衡符号。因此,如果字符串是“{[()]}”,那么字符串是平衡的,因为每个开口都有一个闭合。我的想法是使用一个循环来检查给定字符串中的每个字符,如果该字符串有一个开瓶器,比如“([{”那么它确实是stack.push(char),如果该字符是一个closer”)]}”,那么我需要使用stack。pop(char)。我遇到的问题是,

  • 我按照此处找到的指南设置了一个 4 节点 Kubernetes 集群:https://www.tecmint.com/install-a-kubernetes-cluster-on-centos-8/ 它有一个主节点和3个工作节点。 我正在运行一个名为“hello world”的部署,它基于bashofmann/rancher演示映像,有20个副本。我还创建了一个名为hello world的nod

  • 首先,很抱歉,如果我的术语不准确,我对Kafka很陌生,我已经尽可能多地读过了。我们有一个使用kafkastreams的服务,kafka版本:2.3.1。流应用程序具有一个流拓扑,该流拓扑从“topica”读取,执行转换并发布到另一个主题“topicb”,然后由拓扑的另一个流消费,并使用Ktable(localstore)聚合它。侦听器将ktable更改发布到另一个主题中。 主题有24个分区。我们

  • 当我们的kafka主题中有多个分区时,分区重新平衡是一件常见的事情吗? 这并不一定意味着我们的应用程序存在延迟或问题? 我一直看到分区被撤销和重新分配的日志。

  • 我有一个使用Spring Boot和Netflix OSS构建的微服务。我使用过中央配置服务器、Eureka和Zuul。由于可伸缩性,服务的多个实例运行在不同的端口上。所有实例都在Eureka中注册,但请求只会发送到最后一个注册的服务器。 ZUUL配置

  • Eureka是否提供开箱即用的负载平衡,是否需要另一个依赖项? 为什么是丝带而不是尤里卡? 为什么通过API网关使用负载平衡? Spring-cloud-starter-loadbalancer,为什么需要这个? 客户端平衡还是服务器端负载平衡,为什么用一个胜过另一个?