Detección de valores atípicos
En los próximos ejercicios, vas a usar el algoritmo K-means para predecir fraude y comparar esas predicciones con las etiquetas reales que están guardadas, para validar los resultados.
Las transacciones fraudulentas suelen marcarse como las observaciones más alejadas del centroide del clúster. Aquí verás cómo hacerlo y cómo determinar el punto de corte. En el siguiente ejercicio, comprobarás los resultados.
Tienes disponibles las observaciones escaladas X_scaled, así como las etiquetas almacenadas en la variable y.
Este ejercicio forma parte del curso
Fraud Detection in Python
Instrucciones del ejercicio
- Divide los datos escalados y las etiquetas
yen un conjunto de entrenamiento y otro de prueba. - Define el modelo MiniBatch K-means con 3 clústeres y ajústalo con los datos de entrenamiento.
- Obtén las predicciones de clúster para tus datos de prueba y calcula los centroides de los clústeres.
- Define el límite entre fraude y no fraude en el percentil 95 de la distribución de distancias y superiores.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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