Load the packages

library(tfestimators)
library(titanic)
library(dplyr)
library(purrr)

Data preparation

titanic_set <- titanic_train %>%
  filter(!is.na(Age))

indices <- sample(1:nrow(titanic_set), size = 0.80 * nrow(titanic_set))
train <- titanic_set[indices, ]
test  <- titanic_set[-indices, ]

Model preparation

Prepare input

titanic_input_fn <- function(data) {
  input_fn(data, 
           features = c("Sex",
                        "Pclass",
                        "Embarked"), 
           response = "Survived")
}

Setup feature columns

cols <- feature_columns(
  column_categorical_with_vocabulary_list("Sex", vocabulary_list = unique(titanic_set$Sex) %>% map(~.x)),
  column_categorical_with_vocabulary_list("Embarked", vocabulary_list = unique(titanic_set$Embarked) %>% map(~.x)),
  column_numeric("Pclass")
)

Setup the model

model <- linear_classifier(feature_columns = cols)

Train and evaluate the model

train(model, titanic_input_fn(train))

model_eval <- evaluate(model, titanic_input_fn(test))

model_eval %>%
  purrr::flatten() %>%
  as_tibble() %>%
  glimpse()
## Observations: 1
## Variables: 9
## $ accuracy             <dbl> 0.8041958
## $ accuracy_baseline    <dbl> 0.5944056
## $ auc                  <dbl> 0.8565923
## $ auc_precision_recall <dbl> 0.847312
## $ average_loss         <dbl> 0.5284517
## $ `label/mean`         <dbl> 0.4055944
## $ loss                 <dbl> 37.78429
## $ `prediction/mean`    <dbl> 0.3742846
## $ global_step          <dbl> 5

Model predictions

model_predict <- predict(model, titanic_input_fn(test))

Tidy model predictions

tidy_model <- model_predict %>%
  map(~ .x %>%
        map(~.x[[1]]) %>%
        flatten() %>% 
        as_tibble()) %>%
  bind_rows() %>%
  bind_cols(test)

tidy_model

View the graph using tensorboard

tensorboard(model$estimator$model_dir, launch_browser = TRUE)