Kodax

تعلم الآلة - المفاهيم الأساسية — مقدمة في الذكاء الاصطناعي

تعلم الآلة (Machine Learning)

تعلم الآلة هو تعليم الكمبيوتر من البيانات بدلاً من برمجته صراحة.

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

البرمجة التقليدية

المدخلات + القواعد = المخرجات

تعلم الآلة

المدخلات + المخرجات = القواعد (النموذج)

أنواع تعلم الآلة

1. التعلم بالإشراف (Supervised Learning)

البيانات تحتوي على الإجابات الصحيحة (Labels).

مشاكل التصنيف (Classification)

# هل هذا البريد spam أم لا؟
# هل الصورة قطة أم كلب؟
# هل المعاملة احتيالية؟

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
X, y = make_classification(n_samples=200, n_features=5, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(random_state=0)
clf.fit(X_train, y_train)  # التدريب
predictions = clf.predict(X_test)  # التنبؤ

مشاكل الانحدار (Regression)

# ما سعر هذا المنزل؟
# كم ستكون درجة الحرارة غداً؟
# ما راتب هذا الموظف؟

from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
X, y = make_regression(n_samples=200, n_features=3, noise=10, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

from sklearn.linear_model import LinearRegression

reg = LinearRegression()
reg.fit(X_train, y_train)
predictions = reg.predict(X_test)

2. التعلم بدون إشراف (Unsupervised Learning)

البيانات بدون إجابات - نبحث عن الأنماط.

التجميع (Clustering)

# تقسيم العملاء لمجموعات
# اكتشاف أنواع المنتجات

from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=150, centers=3, random_state=0)

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3, n_init=10, random_state=0)
clusters = kmeans.fit_predict(X)

تقليل الأبعاد (Dimensionality Reduction)

# تبسيط البيانات المعقدة

from sklearn.datasets import load_iris
X = load_iris().data   # 4 ميزات

from sklearn.decomposition import PCA

pca = PCA(n_components=2)   # إلى ميزتين
X_reduced = pca.fit_transform(X)

3. التعلم المعزز (Reinforcement Learning)

التعلم من التجربة والخطأ مع مكافآت.

# تعليم روبوت المشي
# تدريب AI على الألعاب
# تحسين التوصيات

# Agent يتفاعل مع Environment
# يحصل على Reward أو Penalty
# يتعلم تحسين قراراته

مصطلحات مهمة

| المصطلح | المعنى |

|---------|-------|

| Dataset | مجموعة البيانات |

| Features | الخصائص/المدخلات |

| Labels | الإجابات/المخرجات |

| Training | تدريب النموذج |

| Testing | اختبار النموذج |

| Overfitting | حفظ البيانات (سيء) |

| Underfitting | نموذج بسيط جداً |

| Accuracy | نسبة الإجابات الصحيحة |

خطوات بناء نموذج ML

# 1. جمع البيانات
import numpy as np
import pandas as pd
# في مشروع حقيقي: data = pd.read_csv('data.csv') — هنا بيانات مولّدة ليعمل المثال
rng = np.random.default_rng(0)
data = pd.DataFrame({'age': rng.integers(-1, 70, 300), 'income': rng.normal(1000, 300, 300)})
data['target'] = (data['income'] + rng.normal(0, 200, 300) > 1000).astype(int)
data.loc[::25, 'income'] = None   # قيم ناقصة

# 2. تنظيف البيانات
data.dropna(inplace=True)
data = data[data['age'] > 0]

# 3. تقسيم البيانات
from sklearn.model_selection import train_test_split
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 4. اختيار وتدريب النموذج
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)

# 5. تقييم النموذج
from sklearn.metrics import accuracy_score
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f"الدقة: {accuracy:.2%}")

# 6. تحسين النموذج (Hyperparameter Tuning)
from sklearn.model_selection import GridSearchCV
params = {'n_estimators': [100, 200], 'max_depth': [10, 20]}
grid_search = GridSearchCV(model, params, cv=3)
grid_search.fit(X_train, y_train)
print("أفضل المعاملات:", grid_search.best_params_)

تقييم النموذج

للتصنيف

from sklearn.metrics import (
    accuracy_score,
    precision_score,
    recall_score,
    f1_score,
    confusion_matrix
)

y_true = [1, 0, 1, 1, 0, 1, 0, 0]   # الإجابات الصحيحة
y_pred = [1, 0, 0, 1, 0, 1, 1, 0]   # تنبؤات النموذج

print(f"Accuracy: {accuracy_score(y_true, y_pred)}")
print(f"Precision: {precision_score(y_true, y_pred)}")
print(f"Recall: {recall_score(y_true, y_pred)}")
print(f"F1: {f1_score(y_true, y_pred)}")

للانحدار

from sklearn.metrics import (
    mean_absolute_error,
    mean_squared_error,
    r2_score
)

y_true = [250, 300, 180, 420]   # الأسعار الحقيقية
y_pred = [240, 320, 200, 400]   # تنبؤات النموذج

print(f"MAE: {mean_absolute_error(y_true, y_pred)}")
print(f"MSE: {mean_squared_error(y_true, y_pred)}")
print(f"R²: {r2_score(y_true, y_pred)}")
# مثال كامل: تصنيف زهور Iris
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report

# 1. تحميل البيانات
iris = load_iris()
X, y = iris.data, iris.target

# 2. تقسيم البيانات
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 3. تدريب النموذج
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

# 4. التنبؤ والتقييم
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)

print(f"دقة النموذج: {accuracy:.2%}")
print("\nتقرير التصنيف:")
print(classification_report(y_test, predictions, 
    target_names=iris.target_names))
اختبر فهمك