ArturMelnyk-analyst/Healthcare-Data-Cleaning

GitHub: ArturMelnyk-analyst/Healthcare-Data-Cleaning

端到端的医疗保险索赔数据清洗项目,专为欺诈检测建模构建干净、结构化且经过完整性验证的数据基础。

Stars: 0 | Forks: 1

🩺 医疗保险欺诈检测 – 数据清洗项目 作者:Artur Melnyk 数据集:Kaggle - Medicare Provider Fraud Detection 📌 项目概述 本项目致力于为检测 Medicare 医疗索赔中的欺诈行为构建一个干净且结构合理的数据基础。主要工作包括: • 清洗和标准化八个相互关联的原始数据集 • 确保索赔和受益人记录之间的引用完整性 • 实施能够保持训练数据规模的异常值处理 • 执行类型转换、缺失值填充和特征工程 • 为下游的建模或探索性分析准备数据 📁 使用的数据集 处理了以下原始 CSV 数据集: • Train 和 Test 主表 • Train_Beneficiary 和 Test_Beneficiary • Train_Inpatient 和 Test_Inpatient • Train_Outpatient 和 Test_Outpatient 🔧 核心清洗操作 ✅ 缺失值处理 • 日期解析为 datetime 类型,并强制转换错误值 • 数值字段使用中位数进行填充 • 分类字段使用众数进行填充 • 保留稀疏但相关的列以维持模式对齐 ✅ 异常值处理 最初的 IQR 过滤导致了大量的行丢失。该问题已通过缩尾处理得到修正,该方法在限制极端值的同时,保持了完整的数据集规模。 python CopyEdit def winsorize_column(series): Q1 = series.quantile(0.25) Q3 = series.quantile(0.75) IQR = Q3 - Q1 return series.clip(Q1 - 1.5 * IQR, Q3 + 1.5 * IQR) ✅ 数据类型转换 • 日期:pd.to_datetime(..., errors='coerce') • 分类:使用 .astype('category') 以提高内存效率 ✅ 特征工程 • AgeAtDeathOrLastClaim:根据 DOB 和 DOD 字段派生 🔍 数据完整性与结构检查 • 确认了 BeneID 在所有索赔和受益人文件中的一致性 • 验证了训练集/测试集的模式一致性(PotentialFraud 目标变量除外) • 执行了 .info() 和 .isnull().sum() 以进行结构验证 📈 关系图展示了数据集之间是如何通过 BeneID 连接的。 ⚠️ 面临的挑战 • 在最初的异常值过滤期间,进行了过度激进的行删除 • 为了模式的稳定性,保留了极度稀疏的字段(例如 ClmProcedureCode_6) • 在清洗的同时保留了行数,以用于真实的模型训练 ✅ 最终输出 • 经过清洗、验证和对齐的数据集,具有 0 个不匹配的 BeneID • 可直接用于建模、可视化和统计分析 📌 下一步建议 • 对分类变量应用标签编码或独热编码 • 分析并可能删除非常稀疏的列 • 构造提供者级别的聚合特征(例如索赔数量) • 探索针对 PotentialFraud 的类别不平衡处理方法 ⚠️ 下游 AI Agent 导出 在 `notebooks/clean_data.ipynb` 中生成的清洗后数据集可以作为 Parquet 文件在本地导出,供关联的 Healthcare AI Agent 项目下游使用。 本代码库仍是上游的医疗数据清洗流水线。下游的 AI Agent 项目将使用清洗并验证后的 Parquet 输出,而不是重复原始 CSV 的清洗过程。 原始和处理后的数据集已有意从 GitHub 中排除。要在本地重新生成 Parquet 文件: 1. 将原始的 Kaggle CSV 数据集放入 `data/raw/` 目录中 2. 运行 `load_data.ipynb` 3. 运行 `clean_data.ipynb` 📊 **演示文稿:** 在[此处(PDF)](docs/Healthcare_Data_Cleaning_Presentation.pdf)查看摘要演示文稿
标签:Apex, Kaggle, Medicare, NoSQL, Python, 健康医疗, 医疗保险, 医疗保险索赔, 医疗欺诈检测, 异常值处理, 探索性数据分析, 数据完整性验证, 数据清洗, 数据科学, 数据预处理, 无后门, 机器学习, 特征工程, 监督学习, 缩尾处理, 缺失值插补, 资源验证, 逆向工具