An Introduction to Type 2 Diabetes Prediction Model

Contents

  1. Introdution
  2. Preparing CSV
  3. Using End point
    • 3.1 Creating model
    • 3.2 Creating Endpoint Config
    • 3.3 Creating Endpoint
    • 3.4 Invoking Endpoint
    • 3.5. Deleting the Endpoint - Optional
  4. Model Output

1. Introdution

Type 2 Diabetes is considered as one of the most serious and common disease across the patient population in USA. Prediction model helps to identify the person suffering from T2D by taking into account various observational parameters.

2. Preparing CSV

The csv file used in the model has 14 columns viz

  • URXUMA = Albumin, urine (ug/mL)
  • URXUCR.x = Urinary creatinine (mg/dL)
  • URDACT = Albumin creatinine ratio (mg/g)
  • LBXSCR = Creatinine (mg/dL)
  • LBXSGL = Glucose, refrigerated serum (mg/dL)
  • LBXSIR = Iron, refrigerated serum (ug/dL)
  • LBXSLDSI = Lactate dehydrogenase (U/L)
  • LBXSOSSI = Osmolality (mmol/Kg)
  • LBXRDW = Red cell distribution width (%)
  • LBXPLTSI = Platelet count (1000 cells/uL)
  • LBXGH = Glycohemoglobin (%)
  • URXVOL1 = The volume of urine collection #1 (mL)
  • URDFLOW1 = Urine #1 Flow Rate (mL/min)
  • LBDB12 = Vitamin B12(pg/mL)

Same kind of CSV file should be fed to the model for best output.

For reference, A sample CSV file is attached in the link. The user only needs to click on the link to get it downloaded to the local. The data should be in a similar format like the sample csv.

Download sample Data from the link : Data Source for Type 2 Diabetes

In [ ]:
import pandas as pd
df = pd.read_csv('S3/Sagemaker path of Type2Diabetes.csv file')
df.to_csv("sample.csv",index=False)
df.head(3)

3. Using Endpoint

The model can be directly accessed via the console provided by AWS. However, for a more customized process one can access the model using the below code as well.

3.1 Creating Model

To create a model, import boto3, sagemaker and get the arn of the model package

In [ ]:
import boto3
import sagemaker
role = sagemaker.get_execution_role()
smmp = boto3.client('sagemakermp')
modelName='Name of the model'
modelArn = 'Model ARN name'
createHeatIndexResponse = smmp.create_model(ModelName=modelName,\
                             Containers=[{'ModelPackageName': modelArn}],\
                             ExecutionRoleArn=role,\
                             EnableNetworkIsolation=True )

3.2 Creating Endpoint Config

In [ ]:
configName ='<Input Configuration Name>'
instanceType = '<Input Instance Type>'
createHeatIndexEndpointConfig = smmp.create_endpoint_config(EndpointConfigName = configName, ProductionVariants = [{'InstanceType':instanceType, 'InitialInstanceCount':1, 'ModelName':modelName, 'VariantName':'xyz'}])

3.3 Creating Endpoint

In [ ]:
endpointName = '<Input Endpoint Name>'
createHeatIndexEndpoint = smmp.create_endpoint(EndpointName = endpointName, EndpointConfigName = configName)

3.4 Invoking Endpoint

In [ ]:
runtime = boto3.Session().client('runtime.sagemaker')

#Reading Input Data 
with open('sample.csv','rb') as f:
    payload = f.read()

response = runtime.invoke_endpoint(EndpointName = endpointName, ContentType = 'text/csv', Body = payload)
result = response['Body'].read().decode()

#Writing Output Data 
with open('sampleOutput.txt','w') as f:
    f.write(result)

3.5. Deleting the Endpoint - Optional

If you're ready to be done with this notebook, please run the delete_endpoint line in the cell below. This will remove the hosted endpoint you created and avoid any charges from a stray instance being left on

In [ ]:
sagemaker.Session().delete_endpoint(endpointName)

4. Model Output

In [ ]:
with open("./sampleOutput.txt","r") as f:
    sampleResponse =f.read()
    sampleResponse = sampleResponse.split('\n')
sampleResponse