DBSCAN
この演習では、不正検知に 密度に基づくクラスタリング 手法(DBSCAN)を使ってみます。DBSCAN の利点は、事前にクラスタ数を指定する必要がない ことです。また、DBSCAN は K-means よりも非凸などのいびつな形状のデータをうまく扱えます。今回は、各クラスタの外れ値を不正とみなすのではなく、データの中で 最も小さいクラスタ を不正としてラベル付けします。スケーリング済みのデータセット X_scaled は今回も利用可能です。さっそく試してみましょう!
この演習はコースの一部です
Pythonで学ぶ不正検知
演習の手順
DBSCANをインポートします。- 2 つのサンプル間の最大距離を 0.9、クラスタ内の最小観測数を 10 に設定して DBSCAN モデルを初期化し、スケーリング済みデータに適合させます。
- 予測ラベル(各観測に割り当てられたクラスタ番号)を取得します。
- クラスタ数と、その他の評価指標を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import DBSCAN
from sklearn.cluster import ____
# Initialize and fit the DBSCAN model
db = DBSCAN(eps=____, min_samples=____, n_jobs=-1).fit(____)
# Obtain the predicted labels and calculate number of clusters
pred_labels = ____.____
n_clusters = len(set(pred_labels)) - (1 if -1 in labels else 0)
# Print performance metrics for DBSCAN
print('Estimated number of clusters: %d' % ____)
print("Homogeneity: %0.3f" % homogeneity_score(labels, pred_labels))
print("Silhouette Coefficient: %0.3f" % silhouette_score(X_scaled, pred_labels))