Menu
CoddyTech

ノイズ点

CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 21/51。

すべての点が密集グループに加わるわけではありません。DBSCANでは、そうした点に-1のラベルを付けます。これがノイズです。公園では、ピクニックをしている人たちは密集グループで、一人で座っている人たちはノイズです。

色付きの点が密集した4つのグループ(サイズは16、12、20、14)と、その間に散らばる灰色のx印で示された一人でいる9人が描かれた公園の地図

両方を数えます:

labels = DBSCAN(eps=3, min_samples=4).fit_predict(X)
print((labels == -1).sum())
print(labels.max() + 1)

これは9と4を出力します。ノイズは-1なので、最大のラベルは依然として群衆の数に含まれます。

ノイズは失敗ではありません。孤立した点が物語を語ることもよくあります。たとえば、登山道から外れたハイカーや、ほかとは異なる測定値です。

challenge icon

チャレンジ

中級

トナカイはGPS首輪を着けています。群れは集団です。1頭だけのトナカイは迷子になったり、けがをしたりしている可能性があるため、牧者はまずそのトナカイのところを訪れます。スターターコードは入力から読み取ったmin_samplesを使ってDBSCANを実行します。

  1. 群れの数を出力します。
  2. 1頭だけのトナカイの数を出力します。
  3. 様子を確認するため、該当するトナカイのタグをリストとして出力します。

別の牧者の首輪の場合:

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)

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

教師なし学習のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ