Detectando outliers
Nos próximos exercícios, você vai usar o algoritmo K-means para prever fraude e comparar essas previsões com os rótulos reais que estão salvos, para validar os resultados.
Transações fraudulentas geralmente são marcadas como as observações mais distantes do centróide do cluster. Aqui, você vai aprender como fazer isso e como definir o ponto de corte. No exercício seguinte, você vai conferir os resultados.
Você tem à disposição as observações padronizadas X_scaled, bem como os rótulos armazenados na variável y.
Este exercício faz parte do curso
Detecção de Fraudes em Python
Instruções do exercício
- Divida os dados padronizados e os rótulos
yem conjuntos de treino e teste. - Defina o modelo MiniBatch K-means com 3 clusters e ajuste-o aos dados de treino.
- Obtenha as previsões de cluster para os dados de teste e recupere os centróides dos clusters.
- Defina a fronteira entre fraude e não fraude a partir de 95% da distribuição das distâncias para cima.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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