이상치 탐지
다음 연습 문제에서는 K-means 알고리즘으로 사기를 예측하고, 예측 결과를 저장된 실제 레이블과 비교해 결과를 검증해 볼 거예요.
사기 거래는 일반적으로 클러스터 중심에서 가장 멀리 떨어진 관측치로 표시됩니다. 이번 연습에서는 이를 수행하는 방법과 컷오프를 결정하는 방법을 배워요. 다음 연습에서 결과를 확인합니다.
스케일링된 관측치 X_scaled와 변수 y에 저장된 레이블이 제공됩니다.
이 연습은 강의의 일부입니다
Python으로 배우는 사기 탐지
연습 안내
- 스케일링된 데이터와 레이블
y를 학습/테스트 세트로 분할하세요. - 클러스터 수를 3으로 한 MiniBatch K-means 모델을 정의하고, 학습 데이터에 학습시키세요.
- 테스트 데이터에 대한 클러스터 예측을 얻고, 클러스터 중심점을 구하세요.
- 사기와 비사기의 경계를 거리 분포의 상위 95% 이상으로 정의하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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