Menu
CoddyTech
flag Ar iconالعربيةdown icon

العناقيد مقابل التسميات المعروفة

جزء من قسم التعلّم غير الخاضع للإشراف في رحلة 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 أنواع، جُمِّعت حسب الطول ومحتوى الكافيين: صف واحد لكل عنقود، وعمود واحد لكل نوع:

جدول 3 × 3 للأعداد، العناقيد في الصفوف وأنواع القهوة في الأعمدة: أرابيكا، ليبيريكا، روبوستا. يضم العنقود 0 عدد 49 حبة روبوستا؛ ويضم العنقود 1 عدد 48 حبة أرابيكا و3 حبات ليبيريكا وحبة روبوستا واحدة؛ ويضم العنقود 2 عدد 47 حبة ليبيريكا وحبتين من أرابيكا

تتكوّن كل مجموعة في معظمها من نوع واحد؛ ولم ينحرف سوى 6 حبات. ولم يرَ k-means أيّ تصنيف.

لكن العناقيد ليست فئات. يعني التطابق الوثيق أن الفئات تختلف في البيانات. أما التطابق الضعيف فهو نتيجة، وليس خطأً برمجيًا.

challenge icon

التحدي

متوسط

هل تعثر عناقيد k-means على أنواع زهرة السوسن؟ يقيّس البرنامج الابتدائي الأزهار، ويحتفظ بأسمائها في species، ويقرأ k ثم يجمعها في عناقيد.

  1. أنشئ جدولًا تقاطعيًا للعناقيد مقابل الأنواع.
  2. لكل نوع، اطبع أكبر عدد له في عنقود واحد، من إجماليه.
  3. احسب عدد العناقيد التي تضم نوعًا واحدًا فقط.

لحديقة أخرى و 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)

# اكتب شيفرتك أدناه
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التعلّم غير الخاضع للإشراف

تدرّب بنفسك: مترجم Python عبر الإنترنت