140 lines
3.5 KiB
Markdown
140 lines
3.5 KiB
Markdown
# Salary Analytics
|
|
|
|
A comprehensive salary analytics system that analyzes transaction data to identify salary earners, predict future salaries, and generate detailed reports.
|
|
|
|
## Features
|
|
|
|
- **Transaction Analysis**
|
|
- Keyword-based salary transaction identification
|
|
- Consistent amount transaction analysis
|
|
- Transaction type analysis
|
|
- Hypothesis overlap visualization
|
|
|
|
- **Salary Earner Classification**
|
|
- Verified salary earners identification
|
|
- Likely salary earners identification
|
|
- High earner detection
|
|
- Salary pattern analysis
|
|
|
|
- **Machine Learning**
|
|
- Salary prediction models
|
|
- Separate models for consistent and inconsistent earners
|
|
- Feature engineering
|
|
- Model evaluation metrics
|
|
|
|
- **Reporting**
|
|
- CSV reports generation
|
|
- Visualization plots
|
|
- High earner details
|
|
- Salary earner statistics
|
|
|
|
## Architecture
|
|
|
|
The project is organized into the following modules:
|
|
|
|
```
|
|
salary_analytics/
|
|
├── __init__.py
|
|
├── config.py # Configuration settings
|
|
├── data_loader.py # Database connection and data loading
|
|
├── keyword_analyzer.py # Keyword-based analysis
|
|
├── consistent_amount_analyzer.py # Consistent amount analysis
|
|
├── transaction_type_analyzer.py # Transaction type analysis
|
|
├── salary_earner_analyzer.py # Salary earner analysis
|
|
├── salary_predictor.py # Machine learning models
|
|
├── main.py # Main pipeline
|
|
└── api.py # FastAPI endpoints
|
|
```
|
|
|
|
|
|
## Configuration
|
|
|
|
The system can be configured through environment variables or the `config.py` file:
|
|
|
|
```python
|
|
# Database Configuration
|
|
DB_CONFIG = {
|
|
"user": "db_user",
|
|
"password": "your_secure_password",
|
|
"name": "salary_db",
|
|
"port": "5432",
|
|
"host": "localhost"
|
|
}
|
|
|
|
# Model Configuration
|
|
MODEL_CONFIG = {
|
|
"cv_threshold": 0.10,
|
|
"min_transactions": 3,
|
|
"threshold": 0.7,
|
|
"high_earner_threshold": 10000
|
|
}
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Using the API
|
|
|
|
1. Start the API server:
|
|
```bash
|
|
uvicorn salary_analytics.api:app --reload
|
|
```
|
|
|
|
2. Access the API documentation:
|
|
- Swagger UI: http://localhost:8000/docs
|
|
- ReDoc: http://localhost:8000/redoc
|
|
|
|
### API Endpoints
|
|
|
|
1. **Basic Endpoints**
|
|
- `GET /`: Welcome message
|
|
- `GET /health`: Health check
|
|
|
|
2. **Analysis Endpoints**
|
|
- `POST /analyze/keyword`: Run keyword analysis
|
|
- `POST /analyze/consistent-amount`: Run consistent amount analysis
|
|
- `POST /analyze/transaction-type`: Run transaction type analysis
|
|
|
|
3. **Report Generation**
|
|
- `POST /generate/reports`: Generate all reports
|
|
- `GET /download/{report_type}`: Download specific reports
|
|
- Available types:
|
|
- `high_earners`: High earner details
|
|
- `likely_earners`: Likely salary earners
|
|
- `final_table`: Final analysis table
|
|
- `consistent_plot`: Consistent earners plot
|
|
- `inconsistent_plot`: Inconsistent earners plot
|
|
- `hypothesis_plot`: Hypothesis overlap plot
|
|
|
|
4. **Model Training**
|
|
- `POST /train/models`: Train prediction models
|
|
|
|
5. **Pipeline**
|
|
- `POST /run/pipeline`: Run complete pipeline
|
|
|
|
## Docker Deployment
|
|
|
|
1. Build the Docker image:
|
|
```bash
|
|
docker-compose build
|
|
```
|
|
|
|
2. Run the container:
|
|
```bash
|
|
docker-compose up
|
|
```
|
|
|
|
The API will be available at http://localhost:8000
|
|
|
|
## Output Structure
|
|
|
|
```
|
|
output/
|
|
├── csv/
|
|
│ ├── high_earner_details.csv
|
|
│ ├── likely_salary_earner.csv
|
|
│ └── final_table.csv
|
|
└── plots/
|
|
├── consistent_earners_predictions.png
|
|
├── inconsistent_earners_predictions.png
|
|
└── hypothesis_overlap.png
|
|
``` |