Linear Learner Binary Classification - qyjohn/AWS_Tutorials GitHub Wiki

Work in progress.

Setting up input and output

import boto3
import sagemaker

bucket = 'bucket-name'
prefix = 'prefix-name'
s3_training_data = 's3://{}/{}/training/training.csv'.format(bucket, prefix)
s3_validate_data = 's3://{}/{}/validate/validate.csv'.format(bucket, prefix)
output_location = 's3://{}/{}/model-output-3'.format(bucket, prefix)
training_input_config = sagemaker.session.s3_input(s3_data=s3_training_data,content_type="text/csv")
validate_input_config = sagemaker.session.s3_input(s3_data=s3_validate_data,content_type="text/csv")

Linear Learner Image

sess = sagemaker.Session()
from sagemaker import get_execution_role
role = get_execution_role()
from sagemaker.amazon.amazon_estimator import get_image_uri
container = get_image_uri(boto3.Session().region_name, 'linear-learner')

Training with training set and validate set

linear = sagemaker.estimator.Estimator(container,
                                       role, 
                                       train_instance_count=1, 
                                       train_instance_type='ml.c4.xlarge',
                                       output_path=output_location,
                                       sagemaker_session=sess)
linear.set_hyperparameters(feature_dim=8,
                           predictor_type='binary_classifier',
                           binary_classifier_model_selection_criteria='recall_at_target_precision',
                           target_precision=0.95,
                           mini_batch_size=200)

linear.fit({'train': training_input_config, 'validation': validate_input_config})

Deploy an endpoint

linear_predictor = linear.deploy(initial_instance_count=1,
                                 instance_type='ml.m4.xlarge')

Prepare for inference

from sagemaker.predictor import csv_serializer, json_deserializer

linear_predictor.content_type = 'text/csv'
linear_predictor.serializer = csv_serializer
linear_predictor.deserializer = json_deserializer

Actual inference

result = linear_predictor.predict([50,50,12,40,33,36,88,82](/qyjohn/AWS_Tutorials/wiki/50,50,12,40,33,36,88,82))
print(result)