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
- 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.
- Datenbeschreibung: Statistische Beschreibungen des Datensatzes werden berechnet.
- Datenvorverarbeitung: Die Transaktionsbeträge und Zeiten werden standardisiert.
- Isolation Forest Modell: Ein Isolation Forest Modell wird trainiert, um Anomalien im Datensatz zu erkennen.
- 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.