ما معنى التعلم غير المراقب؟
اكتشاف الأنماط
نبحث عن عينات متشابهة بدون تصنيفات محددة مسبقاً.
التجميع
نجمع العناصر القريبة في نفس المجموعة أو الكتلة.
بدون labels
لا يوجد عمود هدف، وإنما نبحث عن البنية داخل البيانات.
ما هو Iris Dataset؟
مجموعة بيانات Iris من أشهر مجموعات البيانات في الذكاء الاصطناعي. وهي تحتوي على 150 عينة، وكل عينة تمثل زهرة من أحد أنواع Iris الثلاثة: Setosa، Versicolor، و Virginica.
| Sepal Length | Sepal Width | Petal Length | Petal Width | Species |
|---|---|---|---|---|
| 5.1 | 3.5 | 1.4 | 0.2 | Setosa |
| 6.2 | 3.4 | 5.4 | 2.3 | Virginica |
| 5.9 | 3.0 | 4.2 | 1.5 | Versicolor |
لماذا هذا المثال مهم؟
- • مثال بسيط جدًا لفهم clustering.
- • يحتوي على ثلاث مجموعات واضحة تقريباً.
- • مناسب جدًا لتطبيق KMeans و PCA.
- • يساعدنا في فهم فكرة التجميع بدون تصنيفات.
رؤية بصرية: تجميع Iris
كيف يرى النموذج التشابه؟
مخطط KMeans
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
iris = load_iris()
X = iris.data
model = KMeans(n_clusters=3, random_state=42)
labels = model.fit_predict(X)
score = silhouette_score(X, labels)
print("Cluster labels:", labels)
print("Silhouette Score:", round(score, 3))
نقوم بتحميل Iris، ثم نطلب من KMeans أن يجد 3 مجموعات مختلفة داخل البيانات.
كل عينة تُسند إلى المجموعة الأقرب إلى مركزها. التكرار المستمر يحسن مواقع المراكز.
PCA: تقليل الأبعاد لتسهيل التصور
في Iris توجد 4 ميزات، وهذا يعني أننا نعمل في فضاء 4D، وهو صعب جدًا للتصور البصري.
عند استخدام PCA نختزل هذه الميزات إلى بعدين فقط، مع الحفاظ على أكبر قدر ممكن من المعلومات.
كود PCA
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
iris = load_iris()
X = iris.data
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(X_pca)
print(X_pca[:5])
print(labels[:10])
نستخدم PCA لتحويل 4 ميزات إلى 2 فقط، ثم نطبق KMeans على البيانات المختزلة.
هذا يجعل الرسم أسهل ومفيداً جداً عندما نريد شرح النتائج للطلاب أو للمديرين.
كود كامل: KMeans + PCA
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
iris = load_iris()
X = iris.data
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(X_pca)
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=labels, cmap='viridis', s=60)
plt.title('Iris Clustering after PCA')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.show()