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() |