噪声点
本课属于 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 项圈。鹿群是聚集在一起的驯鹿;独自行动的驯鹿可能迷路或受伤,所以牧鹿人会先去查看它们。入门代码会运行 DBSCAN,并从输入中读取 min_samples。
- 打印鹿群的数量。
- 打印独自行动的驯鹿数量。
- 将它们的标签作为列表打印出来,以便查看。
对于另一位牧鹿人的项圈:
Herds: 2
Lone reindeer: 3
Check on: ['R011', 'R027', 'R040']试试更大的 min_samples:更严格的群体规则会让更多驯鹿独自行动。
亲手试试
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 在线编译器