You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排除非目标类别计算随机森林模型的accuracy_score?

嘿,我完全懂你的需求——你想单独计算那6个目标类别的准确率,同时又不能移除第7类数据(毕竟还要对比处理它后的效果),对吧?这好办,咱们可以通过筛选目标类别样本的方式来实现,具体方案如下:

仅计算指定6类的准确率解决方案

首先,你得先明确哪6个是你的目标类别,假设它们的标签值存在一个列表里(比如数字或字符串,都能处理),接下来我们用布尔索引筛选出对应样本,再计算准确率。

代码实现

import numpy as np
from sklearn.metrics import accuracy_score

# 替换成你实际的6个目标类别标签
target_classes = [0, 1, 2, 3, 4, 5]  # 如果是字符串就改成类似["classA", "classB"...]

# 生成掩码:标记哪些样本的真实标签属于目标类别
mask = np.isin(y, target_classes)

# 仅保留目标类别的真实标签和预测结果
y_target_only = y[mask]
y_pred_target_only = y_pred[mask]

# 计算并打印仅针对6个目标类别的准确率
print(accuracy_score(y_target_only, y_pred_target_only))

原理说明

  • np.isin(y, target_classes) 会生成一个布尔数组,每个元素对应原数据中的样本,标记该样本是否属于目标类别;
  • 用这个掩码过滤后,我们就得到了只包含6个目标类别的真实标签和预测结果,此时调用accuracy_score计算的就是你真正关注的准确率;
  • 原始数据里的第7类样本会被排除在计算之外,但原始数据集完全没被修改,满足你需要对比处理该类别后准确率的要求。

如果你的类别标签是字符串(比如"类别1""类别2"这类),只需要把target_classes换成对应的字符串列表就行,np.isin对字符串类型同样适用。

内容的提问来源于stack exchange,提问作者Sel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:56:39