Loading
Loading
تعلم الآلة له ثلاثة أنواع رئيسية، كل منها يناسب نوعاً مختلفاً من المشاكل. فهم الفرق بينها هو أول خطوة نحو اختيار الخوارزمية الصحيحة.
التعريف: النموذج يتعلم من بيانات موسومة (كل مثال له إجابة صحيحة معروفة).
مثال: تدريب نموذج للتنبؤ بسعر بيت:
متى تستخدمه؟ عندما يكون لديك بيانات مع إجابات صحيحة معروفة.
Regression (الانحدار) — المخرج رقم مستمر:
Classification (التصنيف) — المخرج فئة:
التعريف: النموذج يجد أنماطاً في بيانات غير موسومة (بدون إجابات صحيحة مسبقة).
مثال: تجميع عملاء متجر إلكتروني:
متى تستخدمه؟ عندما تريد اكتشاف الأنماط المخفية في البيانات.
Clustering (التجميع) — تجميع العناصر المتشابهة:
Dimensionality Reduction — تقليل عدد الميزات:
Anomaly Detection — كشف الشذوذ:
التعريف: وكيل (Agent) يتعلم بالتجربة والخطأ للحصول على أقصى مكافأة.
مثال: تعليم روبوت المشي:
أشهر التطبيقات:
| الجانب | Supervised | Unsupervised | Reinforcement | |--------|-----------|--------------|---------------| | البيانات | موسومة | غير موسومة | تفاعل مع بيئة | | الهدف | التنبؤ | اكتشاف أنماط | تعظيم المكافأة | | المثال | تصنيف بريد | تجميع عملاء | ألعاب، روبوتات | | الصعوبة | متوسط | أصعب (لا معيار واضح) | الأصعب | | الأكثر شيوعاً | ✅ 70% من تطبيقات ML | 20% | 10% |
هل لديك بيانات موسومة؟
├── نعم → Supervised Learning
│ └── المخرج رقم أم فئة؟
│ ├── رقم → Regression
│ └── فئة → Classification
└── لا → Unsupervised Learning
└── ماذا تريد؟
├── تجميع → Clustering
└── تقليل أبعاد → Dimensionality Reduction
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification, make_blobs, make_regression
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.cluster import KMeans
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, mean_squared_error
print("=" * 55)
print("مقارنة: Supervised vs Unsupervised Learning")
print("=" * 55)
# ─────────────────────────────────────────
# 1. Supervised — Regression
# ─────────────────────────────────────────
print("\n1. SUPERVISED — Regression (التنبؤ بالأسعار)")
X_reg, y_reg = make_regression(n_samples=200, n_features=1,
noise=30, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(
X_reg, y_reg, test_size=0.2, random_state=42
)
reg_model = LinearRegression()
reg_model.fit(X_train, y_train)
y_pred = reg_model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f" RMSE = {rmse:.2f} (كلما أصغر، أفضل)")
# ─────────────────────────────────────────
# 2. Supervised — Classification
# ─────────────────────────────────────────
print("\n2. SUPERVISED — Classification (تصنيف)")
X_clf, y_clf = make_classification(n_samples=300, n_features=2,
n_redundant=0, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(
X_clf, y_clf, test_size=0.2, random_state=42
)
clf_model = LogisticRegression()
clf_model.fit(X_train, y_train)
accuracy = accuracy_score(y_test, clf_model.predict(X_test))
print(f" Accuracy = {accuracy:.1%}")
# ─────────────────────────────────────────
# 3. Unsupervised — Clustering
# ─────────────────────────────────────────
print("\n3. UNSUPERVISED — Clustering (تجميع بدون تسميات)")
# بيانات بدون labels — النموذج يكتشف المجموعات بنفسه
X_cluster, _ = make_blobs(n_samples=300, centers=4,
cluster_std=0.8, random_state=42)
kmeans = KMeans(n_clusters=4, random_state=42, n_init="auto")
kmeans.fit(X_cluster)
labels = kmeans.labels_
# عدد العناصر في كل مجموعة
unique, counts = np.unique(labels, return_counts=True)
print(" المجموعات المكتشفة:")
for g, c in zip(unique, counts):
print(f" مجموعة {g}: {c} عنصر")
print("\n" + "=" * 55)
print("ملخص:")
print(" Regression → يتنبأ بأرقام مستمرة (مع labels)")
print(" Classification → يصنّف لفئات (مع labels)")
print(" Clustering → يجمّع بدون labels")
print("=" * 55)