ノイズ点
CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 21/51。
すべての点が密集グループに加わるわけではありません。DBSCANでは、そうした点に-1のラベルを付けます。これがノイズです。公園では、ピクニックをしている人たちは密集グループで、一人で座っている人たちはノイズです。
両方を数えます:
labels = DBSCAN(eps=3, min_samples=4).fit_predict(X)
print((labels == -1).sum())
print(labels.max() + 1)これは9と4を出力します。ノイズは-1なので、最大のラベルは依然として群衆の数に含まれます。
ノイズは失敗ではありません。孤立した点が物語を語ることもよくあります。たとえば、登山道から外れたハイカーや、ほかとは異なる測定値です。
チャレンジ
中級トナカイはGPS首輪を着けています。群れは集団です。1頭だけのトナカイは迷子になったり、けがをしたりしている可能性があるため、牧者はまずそのトナカイのところを訪れます。スターターコードは入力から読み取ったmin_samplesを使ってDBSCANを実行します。
- 群れの数を出力します。
- 1頭だけのトナカイの数を出力します。
- 様子を確認するため、該当するトナカイのタグをリストとして出力します。
別の牧者の首輪の場合:
Herds: 2
Lone reindeer: 3
Check on: ['R011', 'R027', 'R040']より大きなmin_samplesを試してみましょう。より厳しい集団のルールでは、1頭だけになるトナカイが増えます。
自分で試してみよう
import numpy as np
import pandas as pd
from sklearn.cluster import DBSCAN
# 夜明けのGPS首輪:各トナカイのタグとkm単位の位置
reindeer = pd.read_csv("reindeer.csv")
X = np.column_stack([reindeer["east_km"], reindeer["north_km"]])
min_samples = int(input())
labels = DBSCAN(eps=0.6, min_samples=min_samples).fit_predict(X)
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師なし学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ