Loading
Loading
تعلم الآلة (Machine Learning) هو الفرع من الذكاء الاصطناعي الذي يُمكّن الأنظمة من التعلم من البيانات وتحسين أدائها بمرور الوقت — بدون برمجة صريحة لكل قاعدة.
في البرمجة التقليدية:
البيانات + القواعد → النتائج
في تعلم الآلة:
البيانات + النتائج → القواعد (النموذج)
أنت تُطعم النموذج أمثلة، وهو يستنتج القواعد تلقائياً.
الطريقة التقليدية:
def is_spam(email):
if "مجاني" in email and "اضغط هنا" in email:
return True
if "ربح فوري" in email:
return True
return False
المشكلة: لا تغطي كل الحالات وتحتاج تحديثاً يدوياً مستمراً.
طريقة ML: نعطي النموذج 10,000 إيميل (5000 مزعج + 5000 حقيقي) فيتعلم الأنماط بنفسه ويكتشف سمات Spam لم تخطر لنا.
ثلاثة عوامل اجتمعت:
| العامل | التفصيل | |--------|---------| | البيانات الضخمة | مليارات الأمثلة متاحة (صور، نصوص، معاملات) | | القوة الحسابية | GPU يسرّع الحسابات بـ 100x على CPU | | الخوارزميات | Gradient Descent، Backprop، Transformers |
البيانات → المعالجة → النموذج → التدريب → التقييم → النشر
البيانات (Data): المواد الخام — بدونها لا يوجد ML.
الميزات (Features): الخصائص التي نُطعمها للنموذج.
التسمية (Labels): الإجابة الصحيحة التي نريد تعلمها.
النموذج (Model): الخوارزمية التي تتعلم من البيانات.
التدريب (Training): عملية تحسين النموذج على بيانات التدريب.
التقييم (Evaluation): قياس أداء النموذج على بيانات لم يرَها من قبل.
| المصطلح | التعريف | |---------|---------| | Feature | متغير مدخل (مساحة البيت) | | Label / Target | ما نتنبأ به (السعر) | | Training set | بيانات التدريب (80%) | | Test set | بيانات الاختبار (20%) | | Overfitting | النموذج يحفظ التدريب لكن يفشل على بيانات جديدة | | Underfitting | النموذج بسيط جداً ولا يتعلم الأنماط | | Hyperparameter | إعدادات النموذج التي تضبطها أنت |
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris, load_boston
import matplotlib
matplotlib.use("Agg") # للتشغيل بدون شاشة
import matplotlib.pyplot as plt
# ─────────────────────────────
# مثال 1: استكشاف بيانات Iris
# ─────────────────────────────
print("=" * 50)
print("مثال 1: بيانات Iris الكلاسيكية")
print("=" * 50)
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df["species"] = [iris.target_names[t] for t in iris.target]
print(f"\nشكل البيانات: {df.shape}")
print(f"الأنواع: {df['species'].unique()}")
print(f"\nأول 5 صفوف:")
print(df.head())
print(f"\nإحصائيات:")
print(df.describe().round(2))
# ─────────────────────────────
# مثال 2: تمييز Features وLabels
# ─────────────────────────────
print("\n" + "=" * 50)
print("مثال 2: فصل Features عن Labels")
print("=" * 50)
X = df[iris.feature_names] # Features (المدخلات)
y = df["species"] # Labels (المخرجات)
print(f"Features shape: {X.shape} ← (عدد الأمثلة, عدد الميزات)")
print(f"Labels shape: {y.shape} ← (عدد الأمثلة,)")
# ─────────────────────────────
# مثال 3: Train/Test Split
# ─────────────────────────────
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
print(f"\nحجم بيانات التدريب : {X_train.shape[0]} مثال ({X_train.shape[0]/len(X)*100:.0f}%)")
print(f"حجم بيانات الاختبار: {X_test.shape[0]} مثال ({X_test.shape[0]/len(X)*100:.0f}%)")
# ─────────────────────────────
# مثال 4: أول نموذج بسيط
# ─────────────────────────────
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
print("\n" + "=" * 50)
print("مثال 4: أبسط نموذج — KNeighbors")
print("=" * 50)
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"\nدقة النموذج على بيانات الاختبار: {accuracy:.1%}")
# تنبؤ بمثال جديد
new_flower = [[5.1, 3.5, 1.4, 0.2]] # قياسات زهرة جديدة
prediction = model.predict(new_flower)
print(f"\nتنبؤ لزهرة جديدة {new_flower[0]}: {prediction[0]}")