File size: 1,498 Bytes
c9875bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"""
Configuration settings for the telecom anomaly detection system
"""

import os
from pathlib import Path

# Base paths
BASE_DIR = Path(__file__).parent.parent
DATA_DIR = BASE_DIR / 'data'
INPUT_DIR = DATA_DIR / 'input'
OUTPUT_DIR = DATA_DIR / 'output'
SAVE_PDF_DIR = DATA_DIR / 'save_pdf'
LOG_DIR = BASE_DIR / 'logs'

# Logging configuration
LOGGING_CONFIG = {
    'level': 'INFO',
    'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    'log_file': LOG_DIR / 'telecom_anomaly_detection.log'
}

# Default detection thresholds (can be overridden by config file)
DEFAULT_THRESHOLDS = {
    'short_call_threshold': 3.0,
    'long_call_threshold': 5400.0,
    'extreme_call_threshold': 10800.0,
    'max_calls_per_hour': 60,
    'max_calls_per_day': 300,
    'max_calls_per_minute': 10,
    'max_sms_per_hour': 100,
    'max_sms_per_minute': 20,
    'max_location_change_speed': 1000.0,
    'location_cluster_radius': 10.0,
    'call_ratio_outgoing_incoming': 20.0,
    'unique_contacts_per_day': 100,
    'z_score_threshold': 4.0,
    'iqr_multiplier': 2.0,
    'night_hours_start': 23,
    'night_hours_end': 5,
    'min_samples_for_pattern': 20,
    'batch_size': 10000
}

# Service numbers to ignore
SERVICE_NUMBERS = [
    'MTN', 'MOBILEMONEY', 'MTN-DATA', 'MTNXTRATIME', 'MTN-JUST4U',
    'EVD', '5040', '1506', '431', '1326', '1349', '438840',
    '54211', '435942', '5381060', '783273271', '141', '402',
    'TWO SURE LP', 'DRMBAWUMIA', 'MYMTN 2.0', 'EOCO', 'DREAMTRAVEL'
]