PaySim-Fraud / src /features /build_features.py
Nickanas's picture
Upload 24 files
71c85a4 verified
Raw History Blame Contribute Delete
1.25 kB
import pandas as pd
import torch
from torch.utils.data import TensorDataset, DataLoader
from sklearn.preprocessing import StandardScaler
def build_features(df: pd.DataFrame):
"""Prepare the processed PaySim frame for training.
- Splits X/y and splits chronologically by step (no leakage)
- Scales features (fit on train, transform test)
- Returns train/test DataLoaders and the fitted scaler
"""
X = df.drop(columns=['isFraud'])
y = df['isFraud']
train_mask = df['step'] < 600
X_train, y_train = X[train_mask], y[train_mask]
X_test, y_test = X[~train_mask], y[~train_mask]
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train) # fit on train only
X_test = scaler.transform(X_test) # transform test with train stats
def to_ds(Xa, ys):
return TensorDataset(
torch.tensor(Xa, dtype=torch.float32),
torch.tensor(ys.to_numpy(), dtype=torch.float32).unsqueeze(1),
)
train_dataloader = DataLoader(to_ds(X_train, y_train), batch_size=32, shuffle=True)
test_dataloader = DataLoader(to_ds(X_test, y_test), batch_size=32, shuffle=False)
return train_dataloader, test_dataloader, scaler