ما هو Machine Learning؟
Machine Learning = تعليم الكمبيوتر من أمثلة بدلاً من قواعد محدّدة.
مثال:
- برمجة تقليدية: إن كان البريد يحوي "اربح 1000$" → spam
- ML: أطعم النموذج آلاف الأمثلة (spam و ليس spam) ← يتعلّم بنفسه ما يُميّز spam
أنواع ML الثلاثة
1. Supervised (موجَّه)
بيانات مع الإجابة الصحيحة. يتعلّم النموذج تطبيقها على بيانات جديدة.
أمثلة: تصنيف الإيميلات، التنبؤ بأسعار المنازل، اكتشاف الاحتيال.
2. Unsupervised (غير موجَّه)
بيانات بدون إجابات. النموذج يكتشف أنماطاً بنفسه.
أمثلة: تجميع العملاء حسب السلوك، اكتشاف الشذوذ.
3. Reinforcement (تعزيزي)
النموذج يجرّب ويتعلّم من المكافآت.
أمثلة: الألعاب (AlphaGo)، السيّارات ذاتية القيادة.
التثبيت
pip install scikit-learn pandas numpy matplotlibأول نموذج: تصنيف الزهور (Iris)
البيانات
مجموعة الزهور الشهيرة: 150 عيّنة، 4 قياسات (طول وعرض البتلة والكأس)، 3 أنواع.
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
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تدريب النموذج
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# التنبؤ
predictions = model.predict(X_test)التقييم
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% — ممتاز!
التنبؤ بعيّنة جديدة
# زهرة جديدة: [طول الكأس, عرضه, طول البتلة, عرضها]
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 شامل: التنبّؤ بأسعار منازل
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
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
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_)تصوّر البيانات
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()حفظ النموذج
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 (أساس كل شيء)
- مشروع صغير من اختيارك
مقالات ذات صلة
Prompt Engineering للمطوّرين: كيف تحصل على نتائج أفضل من الذكاء الاصطناعي
الفرق بين prompt متوسط و prompt احترافي قد يكون 10x في الجودة. تعلّم القواعد والتقنيات المثبَتة.
كيفية استخدام ChatGPT API في تطبيقاتك
ادمج قوّة GPT-4 في تطبيقك في 15 دقيقة. دليل كامل من الحساب إلى أول دردشة عاملة.
كيفية استخدام Pandas لتحليل البيانات في Python
Pandas المكتبة رقم #1 لتحليل البيانات في Python — قراءة CSV، تصفية، دمج، وتصدير. مشروع عملي من البداية للنهاية.