DBSCAN
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 20 من 51.
يحدّد هذا الفصل التجمعات ذات الأشكال المختلفة، والنقاط التي لا تنتمي إلى أيٍّ منها. وفي نهايته، سترسم خريطة لأضواء وادٍ:
أولًا، أشرطة الرمال التي تستلقي عليها الفقمات، والتي تسببت في إخفاق k-means في درس «متى يخفق K-Means». يتبع DBSCAN التجمعات بدلًا من ذلك:
تقع النقطة في حشد إذا وُجدت ضمن eps، أي نصف قطر الدائرة، min_samples من النقاط (بما فيها النقطة نفسها). تنتشر الحشود عبر هذه النقاط. لا حاجة لاختيار k:
from sklearn.cluster import DBSCAN
labels = DBSCAN(eps=0.2, min_samples=5).fit_predict(X)
print(labels.max() + 1)يطبع هذا 2: تُرقَّم الحشود بدءًا من 0، لذا فإن أكبر رقم زائد واحد يساوي عددها.
التحدي
متوسطعلى بحيرة متجمدة، يتسابق المتزلجون على طول مسار يلتف بين جزيرتين، بينما يشاهد حشدٌ مباراة هوكي. سيقسّم k-means المسار إلى أجزاء. يقرأ البرنامج eps بالأمتار.
- طبّق DBSCAN باستخدام قيمة eps تلك و
min_samples=5؛ واحتفظ بالحشود فيlabels. - اطبع عدد الحشود التي عثر عليها.
- ارسمها باستخدام
draw_crowds(ax, X, labels)واعرض الرسم.
لبحيرة أخرى وقيمة eps تساوي 3.5:
Crowds found: 3يصف Coddy مخططك. ثم شغّله باستخدام eps 8: أين ذهبت الحشود؟
جرّب بنفسك
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
# مواقع وقوف 170 متزلجًا على البحيرة المتجمدة، بالأمتار
skaters = pd.read_csv("skaters.csv")
X = np.column_stack([skaters["x_m"], skaters["y_m"]])
eps = float(input())
# يرسم كل مجموعة بلون مختلف مع توضيح عدد أفرادها
def draw_crowds(ax, X, labels):
for crowd in range(labels.max() + 1):
rows = labels == crowd
ax.scatter(X[rows, 0], X[rows, 1], s=14, label=f"{rows.sum()} skaters")
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Skaters on the Lake")
ax.set_xlabel("East (m)")
ax.set_ylabel("North (m)")
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت