Menu
CoddyTech

Các điểm nhiễu

Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 21 trên 51.

Không phải điểm nào cũng thuộc một đám đông. DBSCAN gán nhãn -1 cho những điểm đó: nhiễu. Trong công viên, các buổi dã ngoại tạo thành đám đông, còn những người ngồi một mình là nhiễu:

Bản đồ công viên có bốn buổi dã ngoại, mỗi buổi là một nhóm chấm màu tập trung với kích thước lần lượt là 16, 12, 20 và 14, cùng chín người ngồi một mình được đánh dấu bằng dấu x màu xám rải rác giữa các nhóm

Đếm cả hai:

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

Lệnh này in ra 9 và 4. Nhiễu là -1, vì vậy nhãn lớn nhất vẫn tính cả đám đông.

Nhiễu không phải là lỗi. Thường thì những điểm riêng lẻ mới kể nên câu chuyện: một người đi bộ đường dài lạc khỏi đường mòn, một số đo khác hẳn những số còn lại.

challenge icon

Thử thách

Trung bình

Tuần lộc đeo vòng cổ GPS. Đàn là những nhóm đông; tuần lộc đi lẻ có thể bị lạc hoặc bị thương, vì vậy người chăn tuần lộc sẽ đến thăm chúng trước. Đoạn code ban đầu chạy DBSCAN với min_samples đọc từ đầu vào.

  1. In ra số đàn.
  2. In ra số tuần lộc đi lẻ.
  3. In ra thẻ của chúng dưới dạng danh sách để kiểm tra.

Dữ liệu vòng cổ của một người chăn tuần lộc khác:

Herds: 2
Lone reindeer: 3
Check on: ['R011', 'R027', 'R040']

Thử giá trị min_samples lớn hơn: quy tắc nhóm đông nghiêm ngặt hơn khiến nhiều tuần lộc đi lẻ hơn.

Tự làm thử

import numpy as np
import pandas as pd
from sklearn.cluster import DBSCAN

# Vòng cổ GPS lúc bình minh: mã thẻ và vị trí tính bằng km của từng con tuần lộc
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)

# Viết code bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Học không giám sát

Tự luyện tập: Trình biên dịch Python online