Code & Queries

Code & Queries: Your Source for SQL, Python, and AI Insights

Anomalie- und Betrugserkennung für Kreditkartendaten mit Python Teil 1

- Veröffentlicht unter Python Programmierung von

Python-Skript zur Anomalie- und Betrugserkennung

import pandas as pd
import numpy as np
from sklearn.ensemble import IsolationForest
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

# Generiere einen größeren Datensatz mit Kreditkartentransaktionen
def generate_dataset(num_samples=100000):
    np.random.seed(42)
    data = {
        'TransactionID': np.arange(num_samples),
        'Amount': np.random.exponential(scale=100, size=num_samples),  # Transaktionsbeträge
        'Time': np.random.randint(0, 86400, num_samples),  # Zeitstempel in Sekunden des Tages
        'CustomerID': np.random.randint(1000, 2000, num_samples),  # Kunden-ID
        'Fraud': np.random.binomial(1, 0.01, num_samples)  # 1% Betrugsfälle
    }

    # Einfügen von Betrugsmustern
    fraud_indices = np.where(data['Fraud'] == 1)[0]
    data['Amount'][fraud_indices] = data['Amount'][fraud_indices] * np.random.uniform(2, 10, size=len(fraud_indices))
    data['Time'][fraud_indices] = np.random.choice(range(80000, 86400), size=len(fraud_indices))

    return pd.DataFrame(data)

# Datensatz generieren
df = generate_dataset()

# Datenbeschreibung
description = df.describe()

# Datenvorverarbeitung
scaler = StandardScaler()
scaled_data = scaler.fit_transform(df[['Amount', 'Time']])

# Isolation Forest Modell
model = IsolationForest(contamination=0.01, random_state=42)
df['Anomaly'] = model.fit_predict(scaled_data)

# Visualisierung
plt.figure(figsize=(10, 6))
plt.scatter(df['Amount'], df['Time'], c=df['Anomaly'], cmap='coolwarm', alpha=0.6)
plt.xlabel('Amount')
plt.ylabel('Time')
plt.title('Anomaly Detection in Credit Card Transactions')
plt.colorbar(label='Anomaly Score')
plt.show()

# Ausgabe der ersten Zeilen des Datensatzes und der Beschreibung
print(df.head())
print(description)

Beschreibung des Datensatzes

Der generierte Datensatz enthält 100.000 Kreditkartentransaktionen mit den folgenden Spalten:

  • TransactionID: Eine eindeutige Identifikationsnummer für jede Transaktion.
  • Amount: Der Betrag der Transaktion in einer fiktiven Währungseinheit.
  • Time: Der Zeitstempel der Transaktion in Sekunden seit Mitternacht.
  • CustomerID: Eine eindeutige Identifikationsnummer für den Kunden, der die Transaktion durchgeführt hat.
  • Fraud: Ein Indikator, ob die Transaktion betrügerisch ist (1) oder nicht (0).

Zusätzlich wird eine Anomaliespalte (Anomaly) basierend auf dem Isolation Forest Modell hinzugefügt, die anzeigt, ob eine Transaktion als Anomalie erkannt wurde.

Erklärung des Codes

  1. Datengenerierung: Ein synthetischer Datensatz mit 100.000 Transaktionen wird erstellt. Betrügerische Transaktionen werden durch höhere Beträge und spätere Zeiten am Tag simuliert.
  2. Datenbeschreibung: Statistische Beschreibungen des Datensatzes werden berechnet.
  3. Datenvorverarbeitung: Die Transaktionsbeträge und Zeiten werden standardisiert.
  4. Isolation Forest Modell: Ein Isolation Forest Modell wird trainiert, um Anomalien im Datensatz zu erkennen.
  5. Visualisierung: Die Anomalien werden in einem Streudiagramm visualisiert, wobei Anomalie-Scores farblich dargestellt werden.

Dieser Ansatz bietet eine grundlegende Pipeline für die Anomalie- und Betrugserkennung in Kreditkartentransaktionen und kann weiter verfeinert werden, um spezifischere Anforderungen zu erfüllen.