استخدام K-Means في scikit-learn
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 4 من 51.
ينفّذ scikit-learn حلقة خوارزمية k-means كاملةً نيابةً عنك، هنا على 180 تفاحة قُيّمت من حيث الحلاوة والقرمشة:
الملاءمة باستخدام X فقط، دون y:
from sklearn.cluster import KMeans
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)
print(km.labels_[:8])
print(km.cluster_centers_.round(1))يطبع أرقام العناقيد للصفوف الثمانية، ثم صفًا واحدًا لكل مركز:
[2 0 0 1 2 0 1 1]
[[7. 7.5]
[6. 3. ]
[2.9 8.1]]تجرّب n_init=10 عشر بدايات وتحتفظ بالأكثر تماسكًا. تعطي km.predict([[8.6, 9.2]]) التفاحة الجديدة أقرب مركز إليها، [0].
ينفّذ labels = km.fit_predict(X) الأمرين معًا: يدرّب النموذج، ثم يعيد labels_.
الأرقام مجرد أسماء: في بيانات أخرى، يمكن أن تكون المجموعة 0 أي مجموعة.
التحدي
سهلسجّل عالم أحياء 150 غطسة لحوت أحدب: مدة الغطسة وفترة الراحة على السطح بعدها. هل توجد أنواع مختلفة من الغطس؟ يجهّز الكود المبدئي المخطط.
- درّب KMeans على
X: 3 عناقيد،n_init=10،random_state=0. - اعرض كل عنقود كمجموعة مستقلة، مع تسميته من
cluster 0إلىcluster 2. - حدّد المراكز بنجوم سوداء، وسمّها
centers. أضف وسيلة إيضاح واعرض المخطط.
مثل هذا، ولكن لحوت آخر:
يصف Coddy مخططك.
جرّب بنفسك
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# لا تغيّر الأسطر أدناه
rng = np.random.default_rng(14)
dive = np.concatenate([rng.normal(4, 1.0, 60), rng.normal(12, 2.0, 50), rng.normal(2.5, 0.7, 40)])
rest = np.concatenate([rng.normal(1.5, 0.5, 60), rng.normal(4, 1.0, 50), rng.normal(8, 1.5, 40)])
# 150 غوصة لحوت أحدب واحد: مدة الغوص ومدة الراحة على السطح بعده، بالدقائق
X = np.round(np.clip(np.column_stack([dive, rest]), 0.5, None), 1)
fig, ax = plt.subplots()
ax.set_title("Whale Dives")
ax.set_xlabel("Dive (min)")
ax.set_ylabel("Surface rest (min)")
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت