View on TensorFlow.org
|
Run in Google Colab
|
View source on GitHub
|
Download notebook
|
Overview
This end-to-end walkthrough trains a logistic regression model using the tf.estimator API. The model is often used as a baseline for other, more complex, algorithms.
Setup
pip install sklearnimport os
import sys
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import clear_output
from six.moves import urllib
Load the titanic dataset
You will use the Titanic dataset with the (rather morbid) goal of predicting passenger survival, given characteristics such as gender, age, class, etc.
import tensorflow.compat.v2.feature_column as fc
import tensorflow as tf
# Load dataset.
dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv')
dfeval = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv')
y_train = dftrain.pop('survived')
y_eval = dfeval.pop('survived')
Explore the data
The dataset contains the following features
dftrain.head()
dftrain.describe()
There are 627 and 264 examples in the training and evaluation sets, respectively.
dftrain.shape[0], dfeval.shape[0]
The majority of passengers are in their 20's and 30's.
dftrain.age.hist(bins=20)
There are approximately twice as many male passengers as female passengers aboard.
dftrain.sex.value_counts().plot(kind='barh')
The majority of passengers were in the "third" class.
dftrain['class'].value_counts().plot(kind='barh')
Females have a much higher chance of surviving versus males. This is clearly a predictive feature for the model.
pd.concat([dftrain, y_train], axis=1).groupby('sex').survived.mean().plot(kind='barh').set_xlabel('% survive')
Feature Engineering for the Model
Estimators use a system called feature columns to describe how the model should interpret each of the raw input features. An Estimator expects a vector of numeric inputs, and feature columns describe how the model should convert each feature.
Selecting and crafting the right set of feature columns is key to learning an effective model. A feature column can be either one of the raw inputs in the original features dict (a base feature column), or any new columns created using transformations defined over one or multiple base columns (a derived feature columns).
The linear estimator uses both numeric and categorical features. Feature columns work with all TensorFlow estimators and their purpose is to define the features used for modeling. Additionally, they provide some feature engineering capabilities like one-hot-encoding, normalization, and bucketization.
Base Feature Columns
CATEGORICAL_COLUMNS = ['sex', 'n_siblings_spouses', 'parch', 'class', 'deck',
'embark_town', 'alone']
NUMERIC_COLUMNS = ['age', 'fare']
feature_columns = []
for feature_name
View on TensorFlow.org
Run in Google Colab
View source on GitHub
Download notebook