Alur Kerja: Menggabungkan Resep dan Model
Gabungkan prapemrosesan dan model ke dalam satu objek alur kerja.
Alur Kerja: Menggabungkan Resep dan Model adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.
Apa Itu Alur Kerja?
Sebuah alur kerja menggabungkan resep dan spesifikasi model ke dalam satu objek. Ini mengatasi masalah penting: langkah prapemrosesan dan pemodelan harus diperlakukan sebagai satu kesatuan selama validasi silang dan pelatihan akhir; jika tidak, parameter seperti rata-rata normalisasi dapat bocor dari lipatan pengujian.
library(workflows)
# Start an empty workflow
wf <- workflow()
print(wf)
# Workflows have two slots: preprocessor and model
# Both must be filled before fittingadd_recipe() dan add_model()
Gunakan add_recipe(rec) untuk melampirkan prapemroses resep dan add_model(spec) untuk melampirkan spesifikasi model parsnip. Operator pipa membuat kode ini sangat mudah dibaca.
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() pada Alur Kerja
Pemanggilan fit(wf, data = train) pada alur kerja secara otomatis memanggil prep() pada resep menggunakan data pelatihan, lalu melatih model menggunakan fitur yang telah dipraproses. Anda tidak perlu memanggil prep() atau bake() secara manual.
fitted_wf <- fit(wf, data = housing_train)
# The fitted workflow stores both the prepped recipe
# and the trained model
print(fitted_wf)predict() pada Alur Kerja yang Telah Dilatih
Saat Anda memanggil predict(fitted_wf, new_data = test), alur kerja secara otomatis menerapkan bake() pada data baru menggunakan resep yang telah dilatih sebelum menghasilkan prediksi. Ini menghilangkan risiko lupa melakukan prapemrosesan pada data pengujian.
# 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() — Melatih dengan Semua Data, Mengevaluasi pada Data Pengujian
last_fit(wf, split) menerima alur kerja akhir dan objek pembagian awal data pelatihan/pengujian. Fungsi ini melatih alur kerja pada bagian pelatihan dan mengevaluasinya pada bagian pengujian—langkah evaluasi model akhir yang standar setelah penalaan selesai.
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) mengambil objek model parsnip yang telah dilatih dari alur kerja yang telah dilatih. Selanjutnya, Anda dapat menggunakannya untuk memeriksa koefisien, kepentingan variabel, atau meneruskannya ke alat penjelasan model.
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) mengembalikan resep yang telah disiapkan dari alur kerja yang telah dilatih. Ini berguna untuk memeriksa transformasi yang diterapkan atau mengambil prapemrosesan yang telah dilatih untuk diterapkan secara terpisah pada data eksternal.
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() pada Alur Kerja
augment(fitted_wf, new_data) mengembalikan kerangka data masukan dengan kolom prediksi yang ditambahkan. Untuk regresi, fungsi ini menambahkan .pred; untuk klasifikasi, fungsi ini menambahkan .pred_class dan kolom probabilitas untuk setiap kelas.
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)Memperbarui Alur Kerja
Anda dapat memperbarui komponen individual alur kerja dengan update_recipe() atau update_model() tanpa membangunnya ulang dari awal. Ini berguna selama eksperimen ketika Anda ingin mengganti mesin model sambil mempertahankan resep yang sama.
# 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() vs add_recipe()
Jika Anda tidak memerlukan resep, Anda dapat menggunakan add_formula(outcome ~ .) sebagai prapemroses. Fungsi ini menerapkan transformasi minimal (hanya spesifikasi formula). Gunakan add_recipe() ketika Anda memerlukan rekayasa fitur; gunakan add_formula() untuk model dasar secara cepat.
# 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)Kumpulan Alur Kerja untuk Perbandingan
workflow_set() dari paket workflowsets membuat kumpulan alur kerja yang menggabungkan beberapa resep dan spesifikasi model. Selanjutnya, Anda dapat menala dan mengevaluasi semua kombinasi sekaligus dengan 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)Pemeriksaan Singkat
Apa keuntungan utama menggunakan last_fit(workflow, split) dibandingkan melatih dan membuat prediksi secara manual?
Ringkasan Alur Kerja
Hal-hal penting dari Alur Kerja: Menggabungkan Resep dan Model:
workflow() |> add_recipe(rec) |> add_model(spec)menggabungkan prapemrosesan dan pemodelan.fit(wf, data = train)menyiapkan resep dan melatih model dalam satu pemanggilan.predict(fitted_wf, new_data)secara otomatis menerapkanbake()pada data baru sebelum membuat prediksi.last_fit(wf, split)melatih pada data pelatihan dan mengevaluasi pada data pengujian—gunakan untuk penilaian model akhir.extract_fit_parsnip()danextract_recipe()mengambil komponen untuk diperiksa.augment()menambahkan prediksi ke kerangka data agar perhitungan metrik menjadi mudah.workflow_set()membandingkan beberapa kombinasi resep-model secara bersamaan.
# 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)Pertanyaan yang Sering Diajukan
Apakah pelajaran “Alur Kerja: Menggabungkan Resep dan Model” gratis?
Ya — teks lengkap “Alur Kerja: Menggabungkan Resep dan Model” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Alur Kerja: Menggabungkan Resep dan Model”?
Gabungkan prapemrosesan dan model ke dalam satu objek alur kerja. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai R Academy?
Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Alur Kerja: Menggabungkan Resep dan Model” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Rekayasa Fitur dengan recipes
- Spesifikasi Model dengan parsnip
- Alur Kerja: Menggabungkan Resep dan Model
- Pengambilan Sampel Ulang dan Validasi Silang dengan rsample