مقدّمة Machine Learning: من الصفر إلى أول نموذج
الذكاء الاصطناعي والبيانات

مقدّمة Machine Learning: من الصفر إلى أول نموذج

ابدأ تعلّم الذكاء الاصطناعي العملي — ما هو التعلّم الآلي، أنواعه، وبناء أول نموذج في 30 دقيقة.

م
مؤسس LahbabiGuide
3 دقائق قراءة
شارك:

ما هو Machine Learning؟

Machine Learning = تعليم الكمبيوتر من أمثلة بدلاً من قواعد محدّدة.

مثال:

  • برمجة تقليدية: إن كان البريد يحوي "اربح 1000$" → spam
  • ML: أطعم النموذج آلاف الأمثلة (spam و ليس spam) ← يتعلّم بنفسه ما يُميّز spam

أنواع ML الثلاثة

1. Supervised (موجَّه)

بيانات مع الإجابة الصحيحة. يتعلّم النموذج تطبيقها على بيانات جديدة.

أمثلة: تصنيف الإيميلات، التنبؤ بأسعار المنازل، اكتشاف الاحتيال.

2. Unsupervised (غير موجَّه)

بيانات بدون إجابات. النموذج يكتشف أنماطاً بنفسه.

أمثلة: تجميع العملاء حسب السلوك، اكتشاف الشذوذ.

3. Reinforcement (تعزيزي)

النموذج يجرّب ويتعلّم من المكافآت.

أمثلة: الألعاب (AlphaGo)، السيّارات ذاتية القيادة.

التثبيت

bash
pip install scikit-learn pandas numpy matplotlib
إعلان

أول نموذج: تصنيف الزهور (Iris)

البيانات

مجموعة الزهور الشهيرة: 150 عيّنة، 4 قياسات (طول وعرض البتلة والكأس)، 3 أنواع.

python
from sklearn.datasets import load_iris
import pandas as pd

data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df['species'] = [data.target_names[i] for i in data.target]
print(df.head())

تقسيم: training و test

python
from sklearn.model_selection import train_test_split

X = data.data        # الميزات
y = data.target      # الإجابات

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

print(f"Training: {len(X_train)}")   # 120
print(f"Test: {len(X_test)}")         # 30

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

python
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# التنبؤ
predictions = model.predict(X_test)

التقييم

python
from sklearn.metrics import accuracy_score, classification_report

print(f"الدقة: {accuracy_score(y_test, predictions):.2%}")
print(classification_report(y_test, predictions, target_names=data.target_names))

قد تحصل على دقّة 93-97% — ممتاز!

التنبؤ بعيّنة جديدة

python
# زهرة جديدة: [طول الكأس, عرضه, طول البتلة, عرضها]
new_flower = [[5.1, 3.5, 1.4, 0.2]]
prediction = model.predict(new_flower)
print(data.target_names[prediction[0]])   # setosa

خوارزميات شائعة

| الخوارزمية | الاستخدام | |-----------|----------| | Linear Regression | التنبؤ بقيمة (سعر، درجة) | | Logistic Regression | تصنيف ثنائي (نعم/لا) | | Decision Tree | تصنيف مع قواعد مفسَّرة | | Random Forest | تصنيف قوي (مجموعة من الأشجار) | | SVM | تصنيف دقيق لبيانات قليلة | | k-NN | تصنيف بالجوار | | K-Means | تجميع (clustering) | | Neural Networks | المشاكل المعقّدة (صور، نصوص) |

Pipeline شامل: التنبّؤ بأسعار منازل

python
import pandas as pd
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np

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

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

# 3. Normalization
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 4. تدريب
model = LinearRegression()
model.fit(X_train_scaled, y_train)

# 5. تقييم
predictions = model.predict(X_test_scaled)
rmse = np.sqrt(mean_squared_error(y_test, predictions))
r2 = r2_score(y_test, predictions)

print(f"RMSE: {rmse:.3f}")
print(f"R²: {r2:.3f}")    # كم % من التباين يفسّره النموذج

تحسين النموذج

Cross-validation

python
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)
print(f"الدقة: {scores.mean():.2%} ± {scores.std():.2%}")

Hyperparameter tuning

python
from sklearn.model_selection import GridSearchCV

param_grid = {
    "n_estimators": [50, 100, 200],
    "max_depth": [None, 10, 20],
}

grid = GridSearchCV(RandomForestClassifier(), param_grid, cv=3)
grid.fit(X_train, y_train)
print(grid.best_params_)

تصوّر البيانات

python
import matplotlib.pyplot as plt

plt.scatter(df['sepal length (cm)'], df['sepal width (cm)'],
            c=data.target, cmap='viridis')
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.colorbar(label='Species')
plt.show()

حفظ النموذج

python
import joblib

joblib.dump(model, "iris_model.pkl")

# لاحقاً
loaded = joblib.load("iris_model.pkl")
loaded.predict(new_flower)

الخطوات التالية

بعد scikit-learn، انتقل إلى:

  • TensorFlow / PyTorch — الشبكات العصبية
  • Hugging Face — نماذج ضخمة جاهزة (LLMs)
  • LangChain — بناء تطبيقات AI

الأسئلة الشائعة

كم رياضيات أحتاج؟

للبدء: جبر خطّي أساسي + احتمالات. للفهم العميق: Calculus + Linear Algebra + Statistics.

هل أحتاج GPU؟

لـ scikit-learn: لا. للـ Deep Learning: نعم (أو استخدم Google Colab مجاناً).

من أين أبدأ عملياً؟

  • مسابقات Kaggle (datasets وتحديات)
  • دورة Andrew Ng على Coursera (أساس كل شيء)
  • مشروع صغير من اختيارك
اقرأ أيضاً

مقالات ذات صلة