Python中如何匹配目标数据集y与精简预测数据集的行并计算审计失败占比
随机森林审计机构风险筛选的标签匹配与占比计算
需求背景
使用随机森林算法实现审计机构筛选,目标是识别最可能发生审计失败的1000家机构,目前已生成两类验证集子集:
- 模型输出的1000家最高风险机构DataFrame:
riskiest_preds - 对照用的验证集随机抽取1000家机构DataFrame:
random_preds
两类子集均未存储机构真实分类标签,真实标签保存在Series类型的y_validate中,需要分别计算两个子集内实际审计失败(即标签值为1)的样本占比。
遇到的问题
y_validate总数据量超过3000行,存在两个操作疑问:
- 如何将
X_validate的子集和y_validate的对应标签正确匹配 - 如何统计
y_validate中指定样本的标签为1的占比
补充说明
审计失败预测概率通过RF_model.predict_proba(X_validate)生成,将概率列拼接至X_validate的副本X_validate_copy后,通过如下代码筛选高风险机构:riskiest_preds = X_validate_copy.nlargest(1000, ["RF Probability Fail"], keep='first')
解决方案
循环实现版本
FailCount = 0 risky_index = riskiest_preds.index for index in list(risky_index): if y_validate[index]==1: FailCount += 1 true_prop_fail = FailCount/1000 ## 计算结果示例:true_prop_fail = .618 FailCount_random = 0 random_index = random_preds.index for index in list(random_index): if y_validate[index]==1: FailCount_random += 1 true_prop_fail_random = FailCount_random/1000 ## 计算结果示例:true_prop_fail_random = .215
更高效的向量化实现(推荐)
利用pandas天然的索引匹配特性,无需循环即可完成计算,代码更简洁、运行效率更高:
# 计算高风险组实际审计失败占比 true_prop_fail = y_validate.loc[riskiest_preds.index].mean() # 计算随机对照组实际审计失败占比 true_prop_fail_random = y_validate.loc[random_preds.index].mean()
内容的提问来源于stack exchange,提问作者Nadia Almasalkhi
相关产品推荐
相关产品推荐

