Détection des valeurs aberrantes
Dans les prochains exercices, vous allez utiliser l’algorithme K-means pour prédire la fraude et comparer ces prédictions aux étiquettes réelles enregistrées, afin de vérifier la cohérence des résultats.
Les transactions frauduleuses sont généralement identifiées comme les observations les plus éloignées du centroïde du cluster. Vous allez apprendre à le faire et à déterminer le seuil dans cet exercice. Dans le suivant, vous validerez les résultats.
Les observations mises à l’échelle X_scaled sont disponibles, ainsi que les étiquettes stockées dans la variable y.
Cet exercice fait partie du cours
Détection de fraude en Python
Instructions
- Scindez les données mises à l’échelle et les étiquettes
yen un ensemble d’entraînement et un ensemble de test. - Définissez le modèle MiniBatch K-means avec 3 clusters et ajustez-le sur les données d’entraînement.
- Récupérez les prédictions de cluster à partir de vos données de test et obtenez les centroïdes des clusters.
- Définissez la frontière entre fraude et non-fraude au 95 % supérieur de la distribution des distances et au-delà.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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