Identifiera avvikelser
I de kommande övningarna ska du använda K-means-algoritmen för att förutsäga bedrägeri och jämföra dessa förutsägelser med de faktiska etiketter som sparats, för att kontrollera att resultaten stämmer.
Bedrägliga transaktioner identifieras vanligtvis som de observationer som befinner sig längst bort från klustrets centroid. I den här övningen lär du dig hur man gör detta och hur man bestämmer gränsvärdet. I nästa övning kontrollerar du resultaten.
Tillgängliga variabler är de skalade observationerna X_scaled samt etiketterna lagrade i variabeln y.
Den här övningen är en del av kursen
Bedrägeridetektering i Python
Övningsinstruktioner
- Dela de skalade data och etiketterna
yi ett tränings- och ett testset. - Definiera MiniBatch K-means-modellen med 3 kluster och träna den på träningsdata.
- Hämta klusterförutsägelserna från ditt testdata och ta fram klustercentroiderna.
- Definiera gränsen mellan bedrägeri och icke-bedrägeri vid 95 % av avståndsdistributionen och högre.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Split the data into training and test set
X_train, X_test, y_train, y_test = ____(____, ____, test_size=0.3, random_state=0)
# Define K-means model
kmeans = ____(n_clusters=____, random_state=42).fit(____)
# Obtain predictions and calculate distance from cluster centroid
X_test_clusters = ____.____(X_test)
X_test_clusters_centers = ____.____
dist = [np.linalg.norm(x-y) for x, y in zip(X_test, X_test_clusters_centers[X_test_clusters])]
# Create fraud predictions based on outliers on clusters
km_y_pred = np.array(dist)
km_y_pred[dist >= np.percentile(dist, ____)] = 1
km_y_pred[dist < np.percentile(dist, ____)] = 0