تخزين نتائج ML والاستعلام عنها
حفظ تنبؤات النماذج وسجلات التجارب وبيانات السمات في قواعد البيانات العلائقية والاستعلام عنها.
تخزين نتائج ML والاستعلام عنها درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
تتبّع تجارب تعلّم الآلة
أثناء تدريب النماذج، تنتجون عشرات عمليات التشغيل بإعدادات ودرجات مختلفة. ومن دون التتبّع، ستفقدون معرفة الإعداد الذي حقق أفضل أداء.
تسجّل قاعدة بيانات التجارب الصغيرة كل عملية تشغيل، حتى تتمكّنوا من الاستعلام والمقارنة وإعادة إنتاج النتيجة الأفضل.
تصميم جدول التجارب
يلتقط المخطط الجيد هوية عملية التشغيل، والنموذج، والمعاملات الفائقة الأساسية، والمقياس، والطابع الزمني. خزّنوا المعاملات الفائقة المرنة في عمود نصي بصيغة JSON.
import sqlite3
conn = sqlite3.connect("experiments.db")
conn.execute("""
CREATE TABLE IF NOT EXISTS runs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
model TEXT NOT NULL,
params TEXT,
accuracy REAL,
f1 REAL,
created_at TEXT DEFAULT (datetime("now"))
)
""")
conn.commit()لماذا نحتاج إلى طابع زمني ومعرّف؟
يمنح id المتزايد تلقائيًا كل عملية تشغيل معرّفًا ثابتًا، بينما يتيح لكم created_at ترتيب عمليات التشغيل بمرور الوقت أو العثور على الأحدث.
تملأ DEFAULT (datetime("now")) الطابع الزمني تلقائيًا عند الإدراج.
تسجيل عملية تشغيل
بعد التدريب، أدرجوا النتائج. حوّلوا قاموس المعاملات الفائقة إلى JSON حتى يظل المخطط مرنًا عبر النماذج المختلفة.
import json, sqlite3
params = {"n_estimators": 200, "max_depth": 8}
conn.execute(
"INSERT INTO runs (model, params, accuracy, f1) VALUES (?, ?, ?, ?)",
("random_forest", json.dumps(params), 0.913, 0.902),
)
conn.commit()مساعد log_run القابل لإعادة الاستخدام
ضعوا عملية الإدراج في دالة تستدعونها في نهاية كل نص تدريب. إن اتساق التسجيل هو ما يجعل المقارنة اللاحقة ممكنة.
def log_run(conn, model, params, accuracy, f1):
conn.execute(
"INSERT INTO runs (model, params, accuracy, f1) VALUES (?, ?, ?, ?)",
(model, json.dumps(params), accuracy, f1),
)
conn.commit()اختيار أفضل عمليات التشغيل
اعثروا على أفضل نماذجكم بترتيبها حسب المقياس. يعيد ORDER BY accuracy DESC مع LIMIT العمليات المتصدّرة.
cur = conn.execute(
"SELECT model, accuracy, f1 FROM runs ORDER BY accuracy DESC LIMIT 5"
)
for row in cur.fetchall():
print(row)التصفية حسب النموذج أو العتبة
ضيّقوا نطاق المقارنات باستخدام WHERE: عائلة نموذج واحدة فقط، أو عمليات تشغيل تتجاوز درجة مستهدفة فقط.
cur = conn.execute(
"SELECT model, accuracy FROM runs WHERE model = ? AND accuracy > ? ORDER BY accuracy DESC",
("random_forest", 0.90),
)
print(cur.fetchall())التجميع عبر عمليات التشغيل
تلخّص تجميعات SQL عمليات تشغيل متعددة دفعةً واحدة: أفضل قيمة، ومتوسط، وعدد لكل نموذج باستخدام GROUP BY.
cur = conn.execute("""
SELECT model,
COUNT(*) AS n,
MAX(accuracy) AS best,
AVG(accuracy) AS mean
FROM runs
GROUP BY model
ORDER BY best DESC
""")
print(cur.fetchall())تحميل النتائج في pandas
لإجراء مقارنة أعمق، اسحبوا الجدول إلى DataFrame وحلّلوه باستخدام pandas — رتّبوا البيانات، وأنشئوا جداول محورية، وارسموا مخططات.
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine("sqlite:///experiments.db")
df = pd.read_sql("SELECT * FROM runs", engine)
print(df.sort_values("accuracy", ascending=False).head())مقارنة التجارب في pandas
وسّعوا معاملات JSON إلى أعمدة لربط المعاملات الفائقة بالمقياس — فهذا بالضبط ما يوجّه تجربتكم التالية.
import json, pandas as pd
params_df = df["params"].apply(json.loads).apply(pd.Series)
full = pd.concat([df, params_df], axis=1)
print(full.groupby("max_depth")["accuracy"].mean())إعادة إنتاج النتيجة الأفضل
بما أن كل عملية تشغيل خزّنت معاملاتها الفائقة، فإن إعادة إنتاج النموذج الأفضل لا تتطلب سوى قراءة صفّه وإعادة إنشائه باستخدام تلك المعاملات.
best = df.sort_values("accuracy", ascending=False).iloc[0]
import json
best_params = json.loads(best["params"])
print("Reproduce", best["model"], "with", best_params)اختبار سريع: أفضل عمليات التشغيل
تريد عمليات التشغيل الخمس الأعلى دقة من الجدول.
مراجعة: تخزين نتائج تعلّم الآلة والاستعلام عنها
لقد أنشأت سير عمل لتتبّع التجارب:
- جدول
runsيضم النموذج ومعلمات JSON والمقاييس والطابع الزمني - دالة مساعدة باسم
log_runلتسجيل كل عملية تشغيل للتدريب - استخدام
ORDER BY ... DESC LIMITللعثور على أفضل عمليات التشغيل، وWHEREللتصفية - استخدام
GROUP BYلتجميع البيانات، وpandas لإجراء مقارنة أعمق - تجعل المعلمات المخزنة النتيجة الفائزة قابلة لإعادة الإنتاج
التالي: قواعد بيانات المتجهات للبحث بالتضمينات.
الأسئلة الشائعة
هل درس «تخزين نتائج ML والاستعلام عنها» مجاني؟
نعم — نص درس «تخزين نتائج ML والاستعلام عنها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «تخزين نتائج ML والاستعلام عنها»؟
حفظ تنبؤات النماذج وسجلات التجارب وبيانات السمات في قواعد البيانات العلائقية والاستعلام عنها. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تخزين نتائج ML والاستعلام عنها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- SQLite مع وحدة sqlite3 في Python
- تكامل Pandas وSQL
- تخزين نتائج ML والاستعلام عنها
- مقدمة إلى قواعد البيانات المتجهية