عناقيد النجوم
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 50 من 51.
صوّر نادٍ لعلم الفلك رقعةً من السماء. تنتمي بعض نجومه البالغ عددها 225 إلى مجموعة واحدة، إذ وُلدت في السحابة نفسها؛ أما البقية فهي غريبة تقع أمامها أو خلفها:
كلا الموضعين بوحدة الدقائق القوسية، وهي وحدة واحدة، لذا فإن eps تمثل مسافة على الصورة.
يريد النادي معرفة كل عنقود وحجمه، مع استبعاد النجوم المنفردة في الملعب. فهل سيؤدي k-means المهمة بالقدر نفسه من الجودة؟
التحدي
صعبيقرأ البرنامج eps؛ ويُعِدّ الكود الابتدائي خريطتين، left وright.
- شغّل DBSCAN باستخدام قيمة eps هذه و
min_samples=5على الموضعين. اطبع العناقيد ونجوم الحقل (التسمية -1). - درّب k-means باستخدام العدد نفسه من العناقيد (
n_init=10،random_state=0). اطبع أكبر وأصغر عنقود لكل طريقة. - على
left، ارسم عناقيد DBSCAN، بحيث يكونcluster 1الأكبر، ثم ارسمfield starsباللون الرمادي. وعلىright، ارسم عناقيد k-means مرقّمة بالطريقة نفسها. أظهر وسيلتي الإيضاح.
لصورة أخرى و eps بقيمة 2.5:
DBSCAN: 3 clusters and 29 field stars
Biggest cluster: 63 stars by DBSCAN, 77 by k-means
Smallest cluster: 41 stars by DBSCAN, 48 by k-meansوخرائطها:
ثم يصف Coddy نتيجتك. أيّ طريقة ستثق بها عند التعامل مع نجوم الحقل؟
جرّب بنفسك
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN, KMeans
# صف واحد لكل نجم في الصورة: الموقع (بالدقائق القوسية) والسطوع (بالقدر الظاهري)
field = pd.read_csv("field.csv")
eps = float(input())
# خريطتان جنبًا إلى جنب: DBSCAN على اليسار، وk-means على اليمين
fig, axs = plt.subplots(1, 2, figsize=(10, 4))
left = axs[0]
right = axs[1]
left.set_title("DBSCAN")
right.set_title("k-means")
for ax in axs:
ax.set_xlabel("x (arcmin)")
ax.set_ylabel("y (arcmin)")
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت