File size: 1,239 Bytes
a3682cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import sys
import pandas as pd

from src.core.config_loader import load_config
from src.generators.user_generator import generate_users
from src.generators.transaction_generator import generate_transactions
from src.fraud.fraud_engine import FraudEngine
from src.risk.risk_engine import apply_risk_engine


def main():
    config = load_config("config/default.yaml")

    difficulty = sys.argv[1] if len(sys.argv) > 1 else "medium"

    print("Generating users...")
    users = generate_users(config)

    print("Generating transactions...")
    df = generate_transactions(users, config)

    print("Applying risk engine...")
    df = apply_risk_engine(df, users, config)

    print(f"Applying fraud engine (difficulty={difficulty})...")
    engine = FraudEngine(difficulty=difficulty)
    df = engine.apply(df)

    df = df.sort_values("timestamp").reset_index(drop=True)
 
    os.makedirs("data/processed", exist_ok=True)

    print("Saving dataset...")
    df.to_csv("data/processed/transactions.csv", index=False)
    users.to_csv("data/processed/users.csv", index=False)

    print("Dataset generation complete")
    print(f"Transactions: {len(df)}")
    print(f"Users: {len(users)}")


if __name__ == "__main__":
    main()