如何修改代码从混淆矩阵提取真阳、真阴、假阳、假阴对应样本数据集
实现方案
你可以通过numpy.select(可读性更高)或者扩展嵌套np.where的方式实现四类结果的标记,同时可以额外新增字段标注是否为正确预测。
方法1:使用numpy.select(更推荐,逻辑清晰易维护)
import pandas as pd import numpy as np df_test = pd.DataFrame(x_test) # 定义四个分类的判断条件 conditions = [ (y_test == 1) & (y_pred == 1), # 真阳性 (y_test == 0) & (y_pred == 0), # 真阴性 (y_test == 0) & (y_pred == 1), # 假阳性 (y_test == 1) & (y_pred == 0) # 假阴性 ] # 定义条件对应的分类标签 labels = [ 'true positive', 'true negative', 'false positive', 'false negative' ] # 生成分类结果列 df_test['case'] = np.select(conditions, labels) # 新增字段标记是否为正确预测,满足你同时标注正确分类的需求 df_test['is_correct_prediction'] = df_test['case'].isin(['true positive', 'true negative']) df_test.head(5)
方法2:扩展嵌套np.where(和你原有写法逻辑一致)
如果你不想调整原有代码的结构,也可以直接扩展嵌套层级实现:
import pandas as pd import numpy as np df_test = pd.DataFrame(x_test) df_test['case'] = np.where( (y_test == 1) & (y_pred == 1), 'true positive', np.where( (y_test == 0) & (y_pred == 0), 'true negative', np.where( (y_test == 0) & (y_pred == 1), 'false positive', 'false negative' ) ) ) # 新增正确预测标记字段 df_test['is_correct_prediction'] = ~df_test['case'].str.contains('false') df_test.head(5)
后续你可以直接通过条件筛选取出对应分类的样本,比如提取所有假阴性样本的代码为df_test[df_test['case'] == 'false negative']。
内容的提问来源于stack exchange,提问作者Ankita
相关产品推荐
相关产品推荐

