انطلق في بايثون سايكيت ليرن: خطوتك الأولى الملموسة اليوم
بايثون سايكيت ليرن: الأساسيات في مقال واحد — كود حقيقي، مخططات وخطوات ملموسة، مقتطفات من دورة مكونة من 33 درسًا.
أفضل طريقة لتعلم Python scikit Learn هي بالممارسة. يضعك هذا المقال على الطريق الصحيح مع مقتطفات عملية مستمدة من دورة تضم 33 درسًا — ما يكفي للحصول على نتيجة أولى اليوم.
- مقدمة وتثبيت
- أساسيات تعلم الآلة
- المعالجة المسبقة للبيانات
- الانحدار المشرف
- التصنيف المشرف
أول نموذج في 10 أسطر (Iris)
مجموعة بيانات Iris
150 زهرة iris موزعة على 3 أنواع (setosa، versicolor، virginica). 4 ميزات مقاسة: طول وعرض السبلات والبتلات.
from sklearn.datasets import load_iris iris = load_iris() print("Features :", iris.feature_names) print("Classes :", iris.target_names) print("Shape X :", iris.data.shape) # (150, 4) print("Shape y :", iris.target.shape) # (150,)
الكود الكامل (10 أسطر)
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier X, y = load_iris(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = KNeighborsClassifier(n_neighbors=5) model.fit(X_train, y_train) score = model.score(X_test, y_test) print(f"Accuracy : {score:.2%}") # ~96.7%
هذا كل شيء. لقد أنشأت للتو نموذج تصنيف يميز 3 أنواع من iris بدقة تصل إلى ~97%.
شرح سطرًا سطرًا
| السطر | الدور |
|---|---|
load_iris(return_X_y=True) | تحميل X (الميزات) و y (التسميات) مباشرة |
train_test_split(...) | تقسيم 80% تدريب / 20% اختبار |
random_state=42 | قابلية التكرار (نفس التقسيم دائمًا) |
KNeighborsClassifier(...) | اختيار الخوارزمية: k-NN مع k=5 |
model.fit(...) | التدريب: حفظ الأمثلة |
model.score(...) | تقييم الدقة على بيانات الاختبار |
إجراء تنبؤ على زهرة جديدة
import numpy as np # زهرة واحدة: سبلة 5.1 × 3.5، بتلة 1.4 × 0.2 nouvelle_fleur = np.array([[5.1, 3.5, 1.4, 0.2]]) prediction = model.predict(nouvelle_fleur) print("Predit :", iris.target_names[prediction[0]]) # > 'setosa' # الاحتمالات لكل فئة proba = model.predict_proba(nouvelle_fleur) print("Probabilites :", proba) # > [[1.0, 0.0, 0.0]] -> 100% setosa
تصور النتيجة
import matplotlib.pyplot as plt fig, axes = plt.subplots(1, 2, figsize=(12, 5)) # التسميات الحقيقية axes[0].scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap="viridis") axes[0].set_title("Vraies classes") axes[0].set_xlabel("Longueur sepale") axes[0].set_ylabel("Largeur sepale") # التنبؤات predictions = model.predict(X_test) axes[1].scatter(X_test[:, 0], X_test[:, 1], c=predictions, cmap="viridis") axes[1].set_title("Predictions du modele") axes[1].set_xlabel("Longueur sepale") plt.tight_layout() plt.show()
نمط fit / predict / score
fit → predict → score) نفسها لجميع نماذج scikit-learn. بمجرد تعلمها، يمكنك تجربة 30 خوارزمية بتغيير الاستيراد فقط.# نفس الكود، نموذج مختلف: from sklearn.tree import DecisionTreeClassifier model = DecisionTreeClassifier(random_state=42) model.fit(X_train, y_train) print(model.score(X_test, y_test)) # نفس الكود، نموذج آخر: from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X_train, y_train) print(model.score(X_test, y_test))
أفضل الممارسات من البداية
تحدٍ عملي
- جرب 3 خوارزميات مختلفة (KNN، DecisionTree، RandomForest)
- غيّر
random_stateوراقب ما إذا كانت النتيجة تتغير - جرب
k=1ثمk=10في KNeighborsClassifier
حفظ نموذج للإنتاج
joblib: الطريقة الموصى بها
import joblib # حفظ joblib.dump(pipe, "model.joblib") # تحميل loaded_pipe = joblib.load("model.joblib") preds = loaded_pipe.predict(X_new)
مع الضغط
# المستوى من 0 (سريع) إلى 9 (أقصى ضغط) joblib.dump(pipe, "model.joblib.gz", compress=3) loaded = joblib.load("model.joblib.gz")
pickle (بديل)
import pickle with open("model.pkl", "wb") as f: pickle.dump(pipe, f) with open("model.pkl", "rb") as f: pipe = pickle.load(f)
الإنتاج: التعبئة الكاملة
import joblib import sklearn import numpy as np # حفظ النموذج + البيانات الوصفية artifact = { "model": pipe, "feature_names": feature_names, "target_names": target_names, "sklearn_version": sklearn.__version__, "numpy_version": np.__version__, "training_date": "2026-05-15", "metrics": {"f1": 0.94, "auc": 0.97} } joblib.dump(artifact, "model_v1.joblib")
واجهة FastAPI بسيطة
from fastapi import FastAPI from pydantic import BaseModel import joblib app = FastAPI() artifact = joblib.load("model_v1.joblib") model = artifact["model"] class Input(BaseModel): features: list[float] @app.post("/predict") def predict(data: Input): pred = model.predict([data.features]) proba = model.predict_proba([data.features])[0].tolist() return {"prediction": int(pred[0]), "probabilities": proba}
الإصدار باستخدام MLflow
import mlflow import mlflow.sklearn with mlflow.start_run(): pipe.fit(X_tr, y_tr) # تسجيل المعاملات، المقاييس، النموذج mlflow.log_params({"max_depth": 10, "n_estimators": 200}) mlflow.log_metric("f1", 0.94) mlflow.sklearn.log_model(pipe, "model", registered_model_name="my_model")
ما هو تعلم الآلة؟
تعريف عملي
يتكون تعلم الآلة (أو التعلم الآلي) من بناء برنامج يتعلم أداء مهمة من الأمثلة بدلاً من قواعد مكتوبة يدويًا.
متى يُستخدم تعلم الآلة؟
| المشكلة | النهج |
|---|---|
| تحويل الدرجات المئوية إلى فهرنهايت | صيغة تقليدية (لا حاجة لتعلم الآلة) |
| التنبؤ بسعر منزل | تعلم آلة مشرف (انحدار) |
| اكتشاف البريد المزعج | تعلم آلة مشرف (تصنيف) |
| تجميع عملاء متشابهين | تعلم آلة غير مشرف (تجميع) |
| التعرف على وجه | التعلم العميق (نوع من تعلم الآلة) |
| هزيمة إنسان في الشطرنج | تعلم آلة بالتعزيز |
العائلات الثلاث لتعلم الآلة
1. المشرف
لدينا بيانات مع تسميات (X، y).
الهدف: التنبؤ بـ y من X.
2. غير المشرف
لدينا بيانات بدون تسميات (X فقط).
الهدف: اكتشاف هياكل مخفية.
3. التعزيز
وكيل يتعلم بالتجربة والخطأ في بيئة.
الهدف: تعظيم المكافأة.
أمثلة ملموسة حسب العائلة
مشرف — انحدار
# X: مساحة السكن، عدد الغرف، الحي... # y: سعر البيع (رقم) # الهدف: التنبؤ بسعر منزل جديد
مشرف — تصنيف
# X: محتوى البريد الإلكتروني # y: "spam" أو "non-spam" (فئة) # الهدف: تصنيف بريد إلكتروني جديد
غير مشرف — تجميع
# X: مشتريات العملاء (المبلغ، التكرار...) # لا يوجد y # الهدف: تجميع في 3-5 شرائح عملاء
سير العمل النموذجي لمشروع تعلم الآلة
لماذا scikit-learn؟
يغطي هذا المقال المقتطفات الأكثر فائدة — الدورة الكاملة Python scikit Learn (10 فصول، 33 درسًا، تمارين مصححة ومشروع نهائي) تأخذك إلى النهاية.
./acceder-au-cours-complet cours gratuit : Maîtriser Claude Codeالأسئلة الشائعة
كم من الوقت يستغرق تعلم Python scikit Learn؟
هل هناك متطلبات مسبقة؟
من أين أبدأ عمليًا؟
📬 هل تريد تلقي هذا النوع من الأدلة كل أسبوع؟ اشترك مجانًا — كود حقيقي، بدون ثرثرة.