العناقيد مقابل التسميات المعروفة
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 13 من 51.
عندما تكون التسميات موجودة لكن k-means لم يرها قط، تحقّق مما وجده: يحصي pd.crosstab كل زوج من العناقيد والتسميات.
labels = KMeans(n_clusters=3, n_init=10, random_state=0).fit_predict(X)
print(pd.crosstab(labels, kind))بالنسبة إلى 150 حبة قهوة من 3 أنواع، جُمِّعت حسب الطول ومحتوى الكافيين: صف واحد لكل عنقود، وعمود واحد لكل نوع:
تتكوّن كل مجموعة في معظمها من نوع واحد؛ ولم ينحرف سوى 6 حبات. ولم يرَ k-means أيّ تصنيف.
لكن العناقيد ليست فئات. يعني التطابق الوثيق أن الفئات تختلف في البيانات. أما التطابق الضعيف فهو نتيجة، وليس خطأً برمجيًا.
التحدي
متوسطهل تعثر عناقيد k-means على أنواع زهرة السوسن؟ يقيّس البرنامج الابتدائي الأزهار، ويحتفظ بأسمائها في species، ويقرأ k ثم يجمعها في عناقيد.
- أنشئ جدولًا تقاطعيًا للعناقيد مقابل الأنواع.
- لكل نوع، اطبع أكبر عدد له في عنقود واحد، من إجماليه.
- احسب عدد العناقيد التي تضم نوعًا واحدًا فقط.
لحديقة أخرى و k = 3:
setosa: 48 of 50 share a cluster
versicolor: 41 of 50 share a cluster
virginica: 33 of 50 share a cluster
Clusters with one species: 0 of 3جرّب بنفسك
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
# 150 زهرة سوسن، بياناتها مُقيسة، واسم نوع كل منها مخفي عن k-means
iris = load_iris()
X = StandardScaler().fit_transform(iris.data)
species = iris.target_names[iris.target]
k = int(input())
labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضي3قراءة العناقيد
تحليل العناقيدالمراكز بوحدات حقيقيةالعناقيد مقابل التسميات المعروفةمتى تفشل خوارزمية K-Meansمراجعة: تذوّق الشايتدرّب بنفسك: مترجم Python عبر الإنترنت