مسارات العمل: دمج الوصفات والنماذج
اجمع المعالجة المسبقة والنموذج في كائن واحد لمسار العمل
مسارات العمل: دمج الوصفات والنماذج درس مجاني في R Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في R Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة R Academy 4 دروس في المجموع.
ما هو سير العمل؟
يجمع سير العمل وصفةً ومواصفة نموذج في كائن واحد. ويحل ذلك مشكلة مهمة: يجب التعامل مع خطوات المعالجة المسبقة والنمذجة كوحدة واحدة أثناء التحقق المتقاطع والملاءمة النهائية، وإلا فقد تتسرّب معلمات مثل متوسطات التطبيع من طيات الاختبار.
library(workflows)
# Start an empty workflow
wf <- workflow()
print(wf)
# Workflows have two slots: preprocessor and model
# Both must be filled before fittingadd_recipe() و add_model()
استخدموا add_recipe(rec) لإرفاق معالج وصفة، وadd_model(spec) لإرفاق مواصفة نموذج parsnip. ويجعل عامل pipe هذا الأسلوب واضحًا جدًا للقراءة.
library(recipes)
library(parsnip)
library(workflows)
rec <- recipe(price ~ ., data = train) |>
step_impute_median(all_numeric_predictors()) |>
step_dummy(all_nominal_predictors()) |>
step_normalize(all_numeric_predictors())
spec <- linear_reg() |> set_engine('lm')
wf <- workflow() |>
add_recipe(rec) |>
add_model(spec)
print(wf)fit() على سير العمل
يؤدي استدعاء fit(wf, data = train) على سير عمل إلى استدعاء prep() تلقائيًا على الوصفة باستخدام بيانات التدريب، ثم تدريب النموذج على السمات المعالجة مسبقًا. ولا تحتاجون أبدًا إلى استدعاء prep() أو bake() يدويًا.
fitted_wf <- fit(wf, data = housing_train)
# The fitted workflow stores both the prepped recipe
# and the trained model
print(fitted_wf)predict() على سير عمل مُلائم
عند استدعاء predict(fitted_wf, new_data = test)، يطبّق سير العمل تلقائيًا bake() على البيانات الجديدة باستخدام الوصفة المُدرَّبة قبل إنشاء التنبؤات. وهذا يلغي خطر نسيان معالجة بيانات الاختبار مسبقًا.
# Predictions automatically preprocess the test data
preds <- predict(fitted_wf, new_data = housing_test)
head(preds)
# For classification
preds_prob <- predict(fitted_wf, new_data = test_df, type = 'prob')
preds_class <- predict(fitted_wf, new_data = test_df, type = 'class')last_fit() — التدريب على الكل والتقييم على الاختبار
تأخذ last_fit(wf, split) سير العمل النهائي وكائن تقسيم التدريب/الاختبار الأولي. وتلائم سير العمل على جزء التدريب وتقيّمه على جزء الاختبار، وهي خطوة التقييم القياسية للنموذج النهائي بعد اكتمال الضبط.
library(rsample)
split <- initial_split(housing_data, prop = 0.8, strata = price)
# Fit on training, evaluate on test
final_res <- last_fit(wf, split)
# View performance on the held-out test set
collect_metrics(final_res)extract_fit_parsnip()
تستخرج extract_fit_parsnip(fitted_wf) كائن نموذج parsnip المُدرَّب من سير عمل مُلائم. ويمكنكم بعد ذلك استخدامه لفحص المعاملات أو أهمية المتغيرات، أو تمريره إلى أدوات شرح النماذج.
fitted_wf <- fit(wf, data = housing_train)
# Extract the parsnip model
parsnip_fit <- extract_fit_parsnip(fitted_wf)
# Now access the underlying model
tidy(parsnip_fit) # coefficients for lm
vip::vip(parsnip_fit) # variable importance plotextract_recipe()
تُعيد extract_recipe(fitted_wf) الوصفة المُحضَّرة من سير عمل مُلائم. وهذا مفيد لفحص التحويلات التي طُبّقت أو لاسترداد المعالجة المسبقة المُدرَّبة وتطبيقها على بيانات خارجية بصورة مستقلة.
fitted_wf <- fit(wf, data = housing_train)
# Get the prepped recipe
prepped_rec <- extract_recipe(fitted_wf)
# Inspect normalization stats
tidy(prepped_rec, number = 3) # step_normalize details
# Apply recipe to completely new external data
new_baked <- bake(prepped_rec, new_data = brand_new_df)augment() على أسفار العمل
تُعيد augment(fitted_wf, new_data) إطار البيانات المُدخل مع إلحاق أعمدة التنبؤ به. ففي الانحدار، تضيف .pred، وفي التصنيف تضيف .pred_class وأعمدة الاحتمالات لكل فئة.
fitted_wf <- fit(wf, data = housing_train)
# Append predictions to the test data frame
results <- augment(fitted_wf, new_data = housing_test)
# Now compute metrics directly
library(yardstick)
results |>
metrics(truth = price, estimate = .pred)تحديث سير العمل
يمكنكم تحديث مكونات فردية في سير العمل باستخدام update_recipe() أو update_model() دون إعادة بنائه من الصفر. وهذا مفيد أثناء التجريب عندما تريدون تبديل محرّك النموذج مع الإبقاء على الوصفة نفسها.
# Original workflow with lm
wf_lm <- workflow() |>
add_recipe(rec) |>
add_model(linear_reg() |> set_engine('lm'))
# Swap model to random forest, keep same recipe
wf_rf <- update_model(
wf_lm,
rand_forest(trees = 300) |>
set_engine('ranger') |>
set_mode('regression')
)
fit_rf <- fit(wf_rf, data = housing_train)add_formula() في مقابل add_recipe()
إذا لم تكونوا بحاجة إلى وصفة، فيمكنكم استخدام add_formula(outcome ~ .) كمعالج مسبق. ويطبّق هذا الخيار تحويلات محدودة، تقتصر على مواصفة الصيغة. استخدموا add_recipe() عند الحاجة إلى هندسة السمات، وadd_formula() لإنشاء نماذج أساسية سريعة.
# Simple baseline — no recipe needed
baseline_wf <- workflow() |>
add_formula(price ~ sqft + bedrooms + bathrooms) |>
add_model(linear_reg() |> set_engine('lm'))
baseline_fit <- fit(baseline_wf, data = housing_train)
baseline_preds <- predict(baseline_fit, new_data = housing_test)
# Compare RMSE to recipe-based model
yardstick::rmse_vec(housing_test$price, baseline_preds$.pred)مجموعات أسفار العمل للمقارنة
تنشئ workflow_set() من الحزمة workflowsets مجموعةً من أسفار العمل التي تجمع بين وصفات متعددة ومواصفات نماذج متعددة. ويمكنكم بعد ذلك ضبط جميع التركيبات وتقييمها دفعةً واحدة باستخدام workflow_map().
library(workflowsets)
all_workflows <- workflow_set(
preproc = list(basic = basic_rec, full = full_rec),
models = list(
lm = linear_reg() |> set_engine('lm'),
rf = rand_forest(trees = 200) |> set_engine('ranger') |> set_mode('regression')
)
)
# Fit all 4 combinations on resamples
results <- workflow_map(all_workflows, 'fit_resamples', resamples = cv_folds)
autoplot(results)تحقّق سريع
ما الميزة الرئيسية لاستخدام last_fit(workflow, split) بدلًا من الملاءمة والتنبؤ يدويًا؟
مراجعة أسفار العمل
أهم النقاط من درس أسفار العمل: الجمع بين الوصفات والنماذج:
- يجمع
workflow() |> add_recipe(rec) |> add_model(spec)المعالجة المسبقة والنمذجة. - يحضّر
fit(wf, data = train)الوصفة ويدرّب النموذج باستدعاء واحد. - يطبّق
predict(fitted_wf, new_data)تلقائيًاbake()على البيانات الجديدة قبل التنبؤ. - يدرّب
last_fit(wf, split)على بيانات التدريب ويقيّم على بيانات الاختبار، لذا يُستخدم للتقييم النهائي للنموذج. - تستخرج
extract_fit_parsnip()وextract_recipe()المكونات لفحصها. - تلحق
augment()التنبؤات بإطار البيانات لتسهيل حساب المقاييس. - تقارن
workflow_set()بين تركيبات متعددة من الوصفات والنماذج في الوقت نفسه.
# Canonical tidymodels workflow pattern
split <- initial_split(data, prop = 0.8)
train <- training(split)
test <- testing(split)
rec <- recipe(y ~ ., data = train) |> step_normalize(all_numeric_predictors())
spec <- rand_forest(trees = 300) |> set_engine('ranger') |> set_mode('regression')
wf <- workflow() |> add_recipe(rec) |> add_model(spec)
final_res <- last_fit(wf, split)
collect_metrics(final_res)الأسئلة الشائعة
هل درس «مسارات العمل: دمج الوصفات والنماذج» مجاني؟
نعم — نص درس «مسارات العمل: دمج الوصفات والنماذج» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة R Academy، انتقل إلى CoddyKit PRO. تتضمن دورة R Academy 4 دروس في المجموع.
ماذا ستتعلم في «مسارات العمل: دمج الوصفات والنماذج»؟
اجمع المعالجة المسبقة والنموذج في كائن واحد لمسار العمل تتمرن على R Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ R Academy؟
لا تُشترط خبرة سابقة. R Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «مسارات العمل: دمج الوصفات والنماذج»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس R Academy هذا؟
نعم. كل درس في R Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- هندسة السمات باستخدام recipes
- مواصفات النماذج باستخدام parsnip
- مسارات العمل: دمج الوصفات والنماذج
- إعادة أخذ العينات والتحقق المتقاطع باستخدام rsample