如何排除非目标类别计算随机森林模型的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
相关产品推荐
相关产品推荐

