Yogesh942134/Mini-Project-VI
GitHub: Yogesh942134/Mini-Project-VI
一个基于Streamlit的MGNREGA数据欺诈检测系统,结合规则评分与孤立森林模型进行风险评分与可视化。
Stars: 0 | Forks: 0
# MGNREGA 欺诈检测系统
一个基于 Streamlit 的仪表板,用于检测 MGNREGA(莫罕达斯·甘地国家农村就业保障法案)数据中的潜在欺诈行为,采用基于规则的评分与机器学习异常检测相结合的混合方法。
## 功能特性
- **混合欺诈检测**:结合基于规则的专家系统与孤立森林(Isolation Forest)机器学习模型
- **现代深色界面**:采用渐变风格的定制化界面
- **交互式可视化**:使用 Plotly 进行风险分析图表展示
- **风险评分**:每个地区都会获得一个复合欺诈概率评分(0-1)
- **数据导出**:可下载包含欺诈评分的处理结果
## 工作原理
### 基于规则的标记
系统从六个关键领域标记异常:
| 标记 | 条件 | 依据 |
|------|-----------|-----------|
| 工人比例 | 工人数量 > 1.5 × 工作卡数量 | 可能存在虚假/幽灵工人 |
| 工资偏差 | 实际工资 >1.5 倍或 <0.5 倍平均值 | 工资操纵 |
| 完成比例 | >80% 的家庭完成 100 天 | 目标不切实际 |
| 女性比例 | <20% 或 >80% | 偏离规定的 33% 参与率 |
| 单位工作量成本 | 高于 95 百分位 | 项目成本虚高 |
| 支付延迟 | <50% 的付款在 15 天内完成 | 违反 MGNREGA 指南 |
### 机器学习模型
- **算法**:孤立森林(Isolation Forest,无监督异常检测)
- **污染率**:5%(预计约 5% 的数据为异常)
- **特征**:从原始数据中构建的 6 个比率/指标
### 最终评分计算
```
final_probability = 0.6 * ML_score + 0.4 * rule_based_score
```
## 安装
### 先决条件
- Python 3.9 或更高版本
- pip 包管理器
### 安装设置
1. 克隆或下载本仓库:
git clone
cd mini-project-vi
2. 创建虚拟环境:
python -m venv .venv
3. 激活虚拟环境:
# Windows
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate
4. 安装依赖:
pip install -r requirements.txt
## 使用方法
1. 运行 Streamlit 应用:
streamlit run app.py
2. 打开浏览器访问 `http://localhost:8501`
3. 上传包含 MGNREGA 地区数据的 CSV 文件
4. 查看欺诈分析结果并下载处理后的数据
### 必需的 CSV 列
输入 CSV 必须包含以下列:
| 列名 | 描述 |
|--------|-------------|
| district_name | 地区名称 |
| Total_No_of_Workers | 总雇佣工人数量 |
| Total_No_of_JobCards_issued | 发放的工作卡数量 |
| Wages | 支付的总工资 |
| Persondays_of_Central_Liability_so_far | 至今生成的人日数 |
| Average_Wage_rate_per_day_per_person | 每人每日平均工资 |
| Total_No_of_HHs_completed_100_Days_of_Wage_Employment | 完成 100 天工资就业的家庭数量 |
| Total_Households_Worked | 总工作家庭数 |
| Total_Exp | 总支出 |
| Number_of_Completed_Works | 完成工程数量 |
| Women_Persondays | 女性人日数 |
| percentage_payments_gererated_within_15_days | 15 天内付款比例(%) |
## 项目结构
```
mini-project-vi/
├── app.py # Main Streamlit application
├── preprocess.py # Data processing and ML model
├── utils.py # Visualization functions
├── requirements.txt # Python dependencies
├── .gitignore # Git ignore rules
└── README.md # This file
```
## 输出指标
系统为每个地区生成三个关键输出:
1. **fraud_score**:触发的基于规则标记的总和(0-6)
2. **model_probability**:机器学习模型异常评分(0-1)
3. **final_probability**:综合风险评分(0-1)
## 可视化图表
- **Top 10 高风险地区**:横向条形图展示风险最高的地区
- **风险分布**:环形图展示高风险/中风险/低风险类别分布
## 风险等级
| 等级 | 评分范围 | 颜色 |
|----------|-------------|-------|
| 高风险 | > 0.7 | 红色 |
| 中风险 | 0.4 - 0.7 | 橙色 |
| 低风险 | <= 0.4 | 绿色 |
## 许可证
本项目仅用于教育目的。
## 贡献
欢迎提交问题与改进建议。
标签:Apex, DFIR, Kubernetes, MGNREGA, Plotly, Python, Streamlit, 云计算, 代码示例, 仪表盘, 供应链监督, 公共资金监控, 公开数据, 关键词SEO, 前端界面, 印度农村就业保障计划, 孤立森林, 异常检测, 数据分析, 数据导出, 无后门, 机器学习, 概率模型, 欺诈检测, 治理与审计, 规则引擎, 访问控制, 逆向工具, 风险评分