Mendeteksi outlier
Pada latihan berikut, Anda akan menggunakan algoritma K-means untuk memprediksi kecurangan (fraud), lalu membandingkan prediksi tersebut dengan label aktual yang disimpan, untuk memeriksa kewajaran hasilnya.
Transaksi curang umumnya ditandai sebagai observasi yang paling jauh dari centroid klaster. Anda akan mempelajari cara melakukannya dan bagaimana menentukan ambang batas (cut-off) pada latihan ini. Pada latihan berikutnya, Anda akan memeriksa hasilnya.
Tersedia observasi yang sudah diskalakan X_scaled, serta label yang tersimpan dalam variabel y.
Latihan ini merupakan bagian dari kursus
Deteksi Kecurangan di Python
Instruksi latihan
- Bagi data yang sudah diskalakan dan label
ymenjadi himpunan latih dan uji. - Definisikan model MiniBatch K-means dengan 3 klaster, lalu latih pada data latih.
- Dapatkan prediksi klaster dari data uji Anda dan peroleh centroid klaster.
- Tetapkan batas antara fraud dan non-fraud pada 95% distribusi jarak ke atas.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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