始める無料で始める

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))
コードを編集して実行