تعلم الآلة - المفاهيم الأساسية — مقدمة في الذكاء الاصطناعي
تعلم الآلة (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))اختبر فهمك