R'da Feature Engineering
Jorge Zazueta
Research Professor. Head of the Modeling Group at the School of Economics, UASLP
Tipik üst düzey modelleme adımları.

Tipik üst düzey modelleme adımları.

Temel düzenlemeleri yapıp bölmeleri oluşturarak başlayın.
loans <- # Basic housekeeping
loans %>%
mutate(across(where(is_character),
as_factor)) %>%
mutate(across(Credit_History,
as_factor))
set.seed(123) # Set up splits
split <- initial_split(loans,
strata = Loan_Status)
test <- testing(split)
train <- training(split)
glimpse(train)
Rows: 460
Columns: 13
$ Loan_ID <fct> LP001003...
$ Gender <fct> Male, Ma...
$ Married <fct> Yes, No,...
$ Dependents <fct> 1, 0, 0,...
$ Education <fct> Graduate...
$ Self_Employed <fct> No, No, ...
$ ApplicantIncome <dbl> 4583, 18...
$ CoapplicantIncome <dbl> 1508, 28...
$ LoanAmount <dbl> 128, 114...
$ Loan_Amount_Term <dbl> 360, 360...
$ Credit_History <fct> 1, 1, 0,...
$ Property_Area <fct> Rural, R...
$ Loan_Status <fct> N, N, N,...
Tarifimiz kısa da olabilir, çok karmaşık da.
recipe <- recipe(Loan_Status ~ .,
data = train) %>%
update_role(Loan_ID,
new_role = "ID") %>%
step_normalize(all_numeric_predictors()) %>%
step_impute_knn(all_predictors()) %>%
step_dummy(all_nominal_predictors())
recipe
Recipe
Girdiler:
rol #değişken
ID 1
çıktı 1
yordayıcı 11
İşlemler:
Tüm sayısal yordayıcılar için merkezleme ve ölçekleme
Tüm yordayıcılar için en yakın k-komşu ataması
Tüm nominal yordayıcılardan kukla değişkenler
İş akışını kurma
lr_model <- logistic_reg() %>%
set_engine("glmnet") %>%
set_args(mixture = 1, penalty = tune())
lr_penalty_grid <- grid_regular(
penalty(range = c(-3, 1)),
levels = 30)
lr_workflow <-
workflow() %>%
add_model(lr_model) %>%
add_recipe(recipe)
lr_workflow
--Workflow -------------------------------
Önişleyici: Recipe
Model: logistic_reg()
-- Önişleyici ----------------------------
3 Recipe Adımı
- step_normalize()
- step_impute_knn()
- step_dummy()
-- Model ---------------------------------
Lojistik Regresyon Model Tanımı (sınıflandırma)
Ana Argümanlar:
penalty = tune()
mixture = 1
Hesaplama motoru: glmnet
Lasso için ceza ayarı
lr_tune_output <- tune_grid(
lr_workflow,
resamples = vfold_cv(train, v = 5),
metrics = metric_set(roc_auc),
grid = penalty_grid)
autoplot(tune_output)
ROC_AUC vs. Düzenlileştirme

Nihai modeli uydurma
best_penalty <-
select_by_one_std_err(lr_tune_output,
metric = 'roc_auc', desc(penalty))
lr_final_fit<-
finalize_workflow(lr_workflow, best_penalty) %>%
fit(data = train)
lr_final_fit %>%
augment(test) %>%
class_evaluate(truth = Loan_Status,
estimate = .pred_class,
.pred_Y)
Performans metriklerimiz
# A tibble: 2 × 3
.metric .estimator .estimate
<chr> <chr> <dbl>
1 accuracy binary 0.818
2 roc_auc binary 0.813
R'da Feature Engineering