search

DBSCAN Clustering

Phân cụm theo mật độ: Phát hiện hình dạng bất kỳ và loại bỏ nhiễu tự động.

0.080
3

Python Lab

Thực thi mô hình dựa trên trực quan hóa.

main.py
from sklearn.cluster import DBSCAN
import numpy as np

# 0 điểm dữ liệu từ canvas
X = np.array([...])  # shape (0, 2)

# Khởi tạo DBSCAN
model = DBSCAN(eps=0.080, min_samples=3)
labels = model.fit_predict(X)

n_clusters = len(set(labels)) - (1 if -1 in labels else 0)
n_noise = list(labels).count(-1)

print(f"Số cụm tìm được: {n_clusters}")
print(f"Số điểm nhiễu: {n_noise}")
// Kết quả (Output) sẽ xuất hiện ở đây khi nhấn Run...

blur_onNguyên lý hoạt động

DBSCAN (Density-Based Spatial Clustering) phân cụm dựa trên mật độ điểm dữ liệu. Các vùng có mật độ cao sẽ tự tạo thành cụm, các điểm rời rạc bị đánh dấu là Nhiễu (Noise).

Khác với K-Means, DBSCAN không cần chỉ định trước số cụm K. Thuật toán tự quyết định dựa trên mật độ!

Hai tham số chính: ε (Epsilon) = Bán kính lân cận, MinPts = Số điểm tối thiểu để tạo thành vùng lõi (Core Point).

compareSo sánh vs K-Means

  • check_circleƯu điểm: Phát hiện cụm hình dạng bất kỳ (trăng lưỡi liềm, vòng xoáy). K-Means chỉ tìm được cụm tròn.
  • check_circleƯu điểm: Tự động loại bỏ nhiễu (Outlier). K-Means buộc gán mọi điểm vào nhóm.
  • warningNhược điểm: Kém hiệu quả khi cụm có mật độ khác nhau đáng kể.

codeTip lập trình

Điểm xámNoise (Nhiễu) — không thuộc cụm nào. Thử tăng ε hoặc giảm MinPts để gom thêm điểm vào cụm!