5.3 KiB
5.3 KiB
In [ ]:
from pathlib import Path
import numpy as np
import pandas as pd
DATA_PATH = Path("data/synthetic_security_flows.csv")
RANDOM_STATE = 42
In [ ]:
df = pd.read_csv(DATA_PATH)
print("Shape:", df.shape)
df.head()
In [ ]:
y_text = df["Label"].astype(str).str.strip()
X = df.drop(columns="Label").select_dtypes(include="number")
print("Feature matrix shape:", X.shape)
print("Original labels:")
print(y_text.value_counts())
In [ ]:
normalized_labels = y_text.str.strip().str.upper()
y_binary = normalized_labels.ne("BENIGN").astype(int)
class_counts = y_binary.value_counts().sort_index()
print(class_counts.rename(index={0: "BENIGN", 1: "ATTACK"}))
print("Attack rate:", round(y_binary.mean(), 3))
In [ ]:
sample_index = 0
sample_features = X.iloc[sample_index]
sample_target = int(y_binary.iloc[sample_index])
print("Selected feature vector:")
print(sample_features)
print("Binary target:", sample_target)
In [ ]:
assert isinstance(df, pd.DataFrame)
assert "Label" not in X.columns
assert set(y_binary.unique()) == {0, 1}
assert len(X) == len(y_binary)
assert class_counts.loc[0] > class_counts.loc[1]
assert len(sample_features) == X.shape[1]
print("✓ Lab 1 completed")
In [ ]:
In [ ]:
In [ ]:
In [ ]: