{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# SageMaker Built-In Linear Learner Algorithm - Model for Predicting Medicare Average Hospital Spending:\n",
"In this notebook, we show how to build a Model to predict Medicare spending per beneficiary at a hospital based on state and national average costs using Amazon SageMaker. This notebook contains code instructions for all the steps for building, training and deploying a machine learning model using SageMaker built-in Linear Learner algorithm. In this example, the notebook is created on a \"ml.c4.xlarge\" instance. Use the 'conda_python3' environment for the notebook.\n",
"\n",
"## Learning Objectives:\n",
"This workshop covers both the preprocessing using SageMaker algorithms and other Python libraries. The major learnings are:\n",
"\n",
"1. Load data into SageMaker Notebooks\n",
"2. Perform basic preprocessing including: feature cleaning, normalization and basic feature engineering.\n",
"3. Perform basic feature selection/subsampling.\n",
"4. Perform exploratory data analysis.\n",
"5. Build, train, and deploy Linear Learner regression model.\n",
"\n",
"## Business Problem:\n",
"Medicare is a national health insurance program, administered by the Center for Medicare and Medicaid Services (CMS). This is a primary health insurance for Americans who are aged 65 and older. Medicare has published historical data showing hospital’s average spending for Medicare Part A and Part B claims based on different claim types and claim periods covering 1 to 3 days prior to hospital admission up to 30 days after discharge from hospital admission. These hospital spending are price standardized and non-risk adjusted, since risk adjustment is done at the episode level of the claims spanning the entire period during the episode. The hospital average costs are listed against the corresponding state level average cost and national level average cost.\n",
"\n",
"In this notebook, the data is used to build a machine learning model using Amazon SageMaker built-in Linear Learner algorithm, which predicts average hospital spending cost based on the average state level spending and average national level spending. The predicted cost can be used for purposes of budget and for negotiating pricing with the hospitals. From the hospital’s perspective, the predicted average hospital spending provides visibility to claim financials that can be used by the hospitals to increase their efficiency and level of care.\n",
"\n",
"## Public Dataset Used:\n",
"Medicare has published dataset showing average hospital spending on Medicare Part A and Part B claims. Both the links below refer to the same data set, one is listed in the healthdata.gov site and the other is listed at the data.medicare.gov site. The data dictionary is described in the link marked as #2 below. The dataset has hospital spending data from the year 2018 and has 67,826 data rows spanning across 13 columns. For the purposes of our analysis and machine learning, we use the dataset in csv (Comma Separated Values) format.\n",
"1.\thttps://healthdata.gov/dataset/medicare-hospital-spending-claim\n",
"2.\thttps://data.medicare.gov/Hospital-Compare/Medicare-Hospital-Spending-by-Claim/nrth-mfg3\n",
"\n",
"A direct link to download the dataset to local computer can be accessed at this link - https://data.medicare.gov/api/views/nrth-mfg3/rows.csv?accessType=DOWNLOAD"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import boto3\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import os\n",
"import pandas as pd\n",
"from pandas.plotting import scatter_matrix\n",
"import sagemaker\n",
"from sagemaker import get_execution_role\n",
"from sagemaker import image_uris\n",
"from sagemaker.deserializers import JSONDeserializer\n",
"from sagemaker.s3 import S3Uploader, S3Downloader\n",
"from sagemaker.serializers import CSVSerializer\n",
"import seaborn as sn\n",
"from sklearn.feature_selection import chi2\n",
"from sklearn.feature_selection import SelectKBest\n",
"from sklearn.model_selection import StratifiedShuffleSplit\n",
"from sklearn.preprocessing import scale"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"sagemaker_session = sagemaker.Session()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"S3Downloader.download(\n",
" s3_uri=\"s3://aws-hcls-ml/workshop/immersion_day_workshop_data_DO_NOT_DELETE/data/medicare_data_07_13_2021/Medicare_Hospital_Spending_by_Claim.csv\",\n",
" local_path=\"data\",\n",
" sagemaker_session=sagemaker_session,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data Preprocessing on the Raw Dataset:\n",
"In this section we read the raw csv data set into a pandas data frame. We inspect the data using pandas head() function. We do data pre-processing using feature encoding, feature engineering, column renaming, dropping some columns that have no relevance to the prediction of `Avg_Hosp` cost and examining there are no missing values in the data set.\n",
"\n",
"**Note**: Many of these transformations and preprocessing steps are for demonstration purposes only and may not correspond to the optimal transformations for a specific column."
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Facility ID
\n",
"
Facility Name
\n",
"
State
\n",
"
Period
\n",
"
Claim Type
\n",
"
Avg Spending Per Episode Hospital
\n",
"
Avg Spending Per Episode State
\n",
"
Avg Spending Per Episode Nation
\n",
"
Percent of Spending Hospital
\n",
"
Percent of Spending State
\n",
"
Percent of Spending Nation
\n",
"
Start Date
\n",
"
End Date
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
670102
\n",
"
AD HOSPITAL EAST LLC
\n",
"
TX
\n",
"
1 to 3 days Prior to Index Hospital Admission
\n",
"
Hospice
\n",
"
0
\n",
"
1
\n",
"
1
\n",
"
0.00%
\n",
"
0.00%
\n",
"
0.00%
\n",
"
01/01/2018
\n",
"
12/31/2018
\n",
"
\n",
"
\n",
"
1
\n",
"
670102
\n",
"
AD HOSPITAL EAST LLC
\n",
"
TX
\n",
"
1 to 3 days Prior to Index Hospital Admission
\n",
"
Inpatient
\n",
"
0
\n",
"
7
\n",
"
7
\n",
"
0.00%
\n",
"
0.03%
\n",
"
0.03%
\n",
"
01/01/2018
\n",
"
12/31/2018
\n",
"
\n",
"
\n",
"
2
\n",
"
670102
\n",
"
AD HOSPITAL EAST LLC
\n",
"
TX
\n",
"
1 to 3 days Prior to Index Hospital Admission
\n",
"
Outpatient
\n",
"
48
\n",
"
140
\n",
"
152
\n",
"
0.17%
\n",
"
0.60%
\n",
"
0.70%
\n",
"
01/01/2018
\n",
"
12/31/2018
\n",
"
\n",
"
\n",
"
3
\n",
"
670102
\n",
"
AD HOSPITAL EAST LLC
\n",
"
TX
\n",
"
1 to 3 days Prior to Index Hospital Admission
\n",
"
Skilled Nursing Facility
\n",
"
0
\n",
"
3
\n",
"
2
\n",
"
0.00%
\n",
"
0.01%
\n",
"
0.01%
\n",
"
01/01/2018
\n",
"
12/31/2018
\n",
"
\n",
"
\n",
"
4
\n",
"
670102
\n",
"
AD HOSPITAL EAST LLC
\n",
"
TX
\n",
"
1 to 3 days Prior to Index Hospital Admission
\n",
"
Durable Medical Equipment
\n",
"
0
\n",
"
8
\n",
"
8
\n",
"
0.00%
\n",
"
0.03%
\n",
"
0.04%
\n",
"
01/01/2018
\n",
"
12/31/2018
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Facility ID Facility Name State \\\n",
"0 670102 AD HOSPITAL EAST LLC TX \n",
"1 670102 AD HOSPITAL EAST LLC TX \n",
"2 670102 AD HOSPITAL EAST LLC TX \n",
"3 670102 AD HOSPITAL EAST LLC TX \n",
"4 670102 AD HOSPITAL EAST LLC TX \n",
"\n",
" Period Claim Type \\\n",
"0 1 to 3 days Prior to Index Hospital Admission Hospice \n",
"1 1 to 3 days Prior to Index Hospital Admission Inpatient \n",
"2 1 to 3 days Prior to Index Hospital Admission Outpatient \n",
"3 1 to 3 days Prior to Index Hospital Admission Skilled Nursing Facility \n",
"4 1 to 3 days Prior to Index Hospital Admission Durable Medical Equipment \n",
"\n",
" Avg Spending Per Episode Hospital Avg Spending Per Episode State \\\n",
"0 0 1 \n",
"1 0 7 \n",
"2 48 140 \n",
"3 0 3 \n",
"4 0 8 \n",
"\n",
" Avg Spending Per Episode Nation Percent of Spending Hospital \\\n",
"0 1 0.00% \n",
"1 7 0.00% \n",
"2 152 0.17% \n",
"3 2 0.00% \n",
"4 8 0.00% \n",
"\n",
" Percent of Spending State Percent of Spending Nation Start Date End Date \n",
"0 0.00% 0.00% 01/01/2018 12/31/2018 \n",
"1 0.03% 0.03% 01/01/2018 12/31/2018 \n",
"2 0.60% 0.70% 01/01/2018 12/31/2018 \n",
"3 0.01% 0.01% 01/01/2018 12/31/2018 \n",
"4 0.03% 0.04% 01/01/2018 12/31/2018 "
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Read the CSV file into panda dataframe and save it to another table so we can keep a copy of the original dataset\n",
"# In our example we use the dataframe called table1 for all pre-processing, while the dataframe table\n",
"# maintains a copy of the original data\n",
"\n",
"table = pd.read_csv(\"data/Medicare_Hospital_Spending_by_Claim.csv\")\n",
"table1 = table.copy()\n",
"table1.head()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [],
"source": [
"# Encode column \"State\"\n",
"\n",
"replace_map = {\n",
" \"State\": {\n",
" \"AK\": 1,\n",
" \"AL\": 2,\n",
" \"AR\": 3,\n",
" \"AZ\": 4,\n",
" \"CA\": 5,\n",
" \"CO\": 6,\n",
" \"CT\": 7,\n",
" \"DC\": 8,\n",
" \"DE\": 9,\n",
" \"FL\": 10,\n",
" \"GA\": 11,\n",
" \"HI\": 12,\n",
" \"IA\": 13,\n",
" \"ID\": 14,\n",
" \"IL\": 15,\n",
" \"IN\": 16,\n",
" \"KS\": 17,\n",
" \"KY\": 18,\n",
" \"LA\": 19,\n",
" \"MA\": 20,\n",
" \"ME\": 21,\n",
" \"MI\": 22,\n",
" \"MN\": 23,\n",
" \"MO\": 24,\n",
" \"MS\": 25,\n",
" \"MT\": 26,\n",
" \"NC\": 27,\n",
" \"ND\": 28,\n",
" \"NE\": 29,\n",
" \"NH\": 30,\n",
" \"NJ\": 31,\n",
" \"NM\": 32,\n",
" \"NV\": 33,\n",
" \"NY\": 34,\n",
" \"OH\": 35,\n",
" \"OK\": 36,\n",
" \"OR\": 37,\n",
" \"PA\": 38,\n",
" \"RI\": 39,\n",
" \"SC\": 40,\n",
" \"SD\": 41,\n",
" \"TN\": 42,\n",
" \"TX\": 43,\n",
" \"UT\": 44,\n",
" \"VA\": 45,\n",
" \"VT\": 46,\n",
" \"WA\": 47,\n",
" \"WI\": 48,\n",
" \"WV\": 49,\n",
" \"WY\": 50,\n",
" }\n",
"}\n",
"table1.replace(replace_map, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"# Encode column \"Period\"\n",
"\n",
"replace_map = {\n",
" \"Period\": {\n",
" \"1 to 3 days Prior to Index Hospital Admission\": 1,\n",
" \"During Index Hospital Admission\": 2,\n",
" \"1 through 30 days After Discharge from Index Hospital Admission\": 3,\n",
" \"Complete Episode\": 4,\n",
" }\n",
"}\n",
"table1.replace(replace_map, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"# Encode column \"Claim Type\"\n",
"\n",
"replace_map = {\n",
" \"Claim Type\": {\n",
" \"Home Health Agency\": 1,\n",
" \"Hospice\": 2,\n",
" \"Inpatient\": 3,\n",
" \"Outpatient\": 4,\n",
" \"Skilled Nursing Facility\": 5,\n",
" \"Durable Medical Equipment\": 6,\n",
" \"Carrier\": 7,\n",
" \"Total\": 8,\n",
" }\n",
"}\n",
"table1.replace(replace_map, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"# Convert the column \"Percent of Spending Hospital\tPercent of Spending\" to float, remove the percent sign and\n",
"# divide by 100 to normalize for percentage\n",
"\n",
"table1[\"Percent of Spending Hospital\"] = (\n",
" table1[\"Percent of Spending Hospital\"].str.rstrip(\"%\").astype(\"float\")\n",
")\n",
"table1[\"Percent of Spending Hospital\"] = table1[\"Percent of Spending Hospital\"] / 100"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"# Convert the column \"Percent of Spending State\" to float, remove the percent sign and\n",
"# divide by 100 to normalize for percentage\n",
"\n",
"table1[\"Percent of Spending State\"] = (\n",
" table1[\"Percent of Spending State\"].str.rstrip(\"%\").astype(\"float\")\n",
")\n",
"table1[\"Percent of Spending State\"] = table1[\"Percent of Spending State\"] / 100"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"# Convert the column \"Percent of Spending Nation\" to float, remove the percent sign and\n",
"# divide by 100 to normalize for percentage\n",
"\n",
"table1[\"Percent of Spending Nation\"] = (\n",
" table1[\"Percent of Spending Nation\"].str.rstrip(\"%\").astype(\"float\")\n",
")\n",
"table1[\"Percent of Spending Nation\"] = table1[\"Percent of Spending Nation\"] / 100"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"# Drop Column \"Facility Name\", Facility Id related to the facility, hence facility name is not\n",
"# relevant for the model\n",
"\n",
"table1.drop([\"Facility Name\"], axis=1, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"# Move the \"Avg Spending Per Episode Hospital\" column to the beginning, since the\n",
"# algorithm requires the prediction column at the beginning\n",
"\n",
"col_name = \"Avg Spending Per Episode Hospital\"\n",
"first_col = table1.pop(col_name)\n",
"table1.insert(0, col_name, first_col)"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"# Convert integer values to float in the columns \"Avg Spending Per Episode Hospital\",\n",
"# \"Avg Spending Per Episode State\" and \"Avg Spending Per Episode Nation\"\n",
"# Columns with integer values are interpreted as categorical values. Changing to float avoids any mis-interpretetaion\n",
"\n",
"table1[\"Avg Spending Per Episode Hospital\"] = table1[\n",
" \"Avg Spending Per Episode Hospital\"\n",
"].astype(\"float\")\n",
"table1[\"Avg Spending Per Episode State\"] = table1[\n",
" \"Avg Spending Per Episode State\"\n",
"].astype(\"float\")\n",
"table1[\"Avg Spending Per Episode Nation\"] = table1[\n",
" \"Avg Spending Per Episode Nation\"\n",
"].astype(\"float\")"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"# Rename long column names for costs and percentage costs on the hospital, state and nation,\n",
"# so they are easily referenced in the rest of this discussion\n",
"\n",
"table1.rename(\n",
" columns={\n",
" \"Avg Spending Per Episode Hospital\": \"Avg_Hosp\",\n",
" \"Avg Spending Per Episode State\": \"Avg_State\",\n",
" \"Avg Spending Per Episode Nation\": \"Avg_Nation\",\n",
" \"Percent of Spending Hospital\": \"Percent_Hosp\",\n",
" \"Percent of Spending State\": \"Percent_State\",\n",
" \"Percent of Spending Nation\": \"Percent_Nation\",\n",
" },\n",
" inplace=True,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [],
"source": [
"# Convert Start Date and End Date to datetime objects, then convert them to integers. First the data is converted\n",
"# to Pandas datetime object. Then the year, month and days are extracted from the datetime object and\n",
"# multipled with some weights to convert into final integer values.\n",
"\n",
"table1[\"Start Date\"] = pd.to_datetime(table1[\"Start Date\"])\n",
"table1[\"End Date\"] = pd.to_datetime(table1[\"End Date\"])\n",
"table1[\"Start Date\"] = (\n",
" 1000 * table1[\"Start Date\"].dt.year\n",
" + 100 * table1[\"Start Date\"].dt.month\n",
" + table1[\"Start Date\"].dt.day\n",
")\n",
"table1[\"End Date\"] = (\n",
" 1000 * table1[\"End Date\"].dt.year\n",
" + 100 * table1[\"End Date\"].dt.month\n",
" + table1[\"End Date\"].dt.day\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Avg_Hosp
\n",
"
Facility ID
\n",
"
State
\n",
"
Period
\n",
"
Claim Type
\n",
"
Avg_State
\n",
"
Avg_Nation
\n",
"
Percent_Hosp
\n",
"
Percent_State
\n",
"
Percent_Nation
\n",
"
Start Date
\n",
"
End Date
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
0.0
\n",
"
670102
\n",
"
43
\n",
"
1
\n",
"
2
\n",
"
1.0
\n",
"
1.0
\n",
"
0.0000
\n",
"
0.0000
\n",
"
0.0000
\n",
"
2018101
\n",
"
2019231
\n",
"
\n",
"
\n",
"
1
\n",
"
0.0
\n",
"
670102
\n",
"
43
\n",
"
1
\n",
"
3
\n",
"
7.0
\n",
"
7.0
\n",
"
0.0000
\n",
"
0.0003
\n",
"
0.0003
\n",
"
2018101
\n",
"
2019231
\n",
"
\n",
"
\n",
"
2
\n",
"
48.0
\n",
"
670102
\n",
"
43
\n",
"
1
\n",
"
4
\n",
"
140.0
\n",
"
152.0
\n",
"
0.0017
\n",
"
0.0060
\n",
"
0.0070
\n",
"
2018101
\n",
"
2019231
\n",
"
\n",
"
\n",
"
3
\n",
"
0.0
\n",
"
670102
\n",
"
43
\n",
"
1
\n",
"
5
\n",
"
3.0
\n",
"
2.0
\n",
"
0.0000
\n",
"
0.0001
\n",
"
0.0001
\n",
"
2018101
\n",
"
2019231
\n",
"
\n",
"
\n",
"
4
\n",
"
0.0
\n",
"
670102
\n",
"
43
\n",
"
1
\n",
"
6
\n",
"
8.0
\n",
"
8.0
\n",
"
0.0000
\n",
"
0.0003
\n",
"
0.0004
\n",
"
2018101
\n",
"
2019231
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Avg_Hosp Facility ID State Period Claim Type Avg_State Avg_Nation \\\n",
"0 0.0 670102 43 1 2 1.0 1.0 \n",
"1 0.0 670102 43 1 3 7.0 7.0 \n",
"2 48.0 670102 43 1 4 140.0 152.0 \n",
"3 0.0 670102 43 1 5 3.0 2.0 \n",
"4 0.0 670102 43 1 6 8.0 8.0 \n",
"\n",
" Percent_Hosp Percent_State Percent_Nation Start Date End Date \n",
"0 0.0000 0.0000 0.0000 2018101 2019231 \n",
"1 0.0000 0.0003 0.0003 2018101 2019231 \n",
"2 0.0017 0.0060 0.0070 2018101 2019231 \n",
"3 0.0000 0.0001 0.0001 2018101 2019231 \n",
"4 0.0000 0.0003 0.0004 2018101 2019231 "
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# See the first 5 rows in the dataframe to see how the changed data looks\n",
"\n",
"table1.head()"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"# Drop Columns \"Start Date\" and \"End Date\". The dataset is only for 2018, hence all start and end dates\n",
"# are same in each row and does not impact the model\n",
"\n",
"table1.drop([\"Start Date\"], axis=1, inplace=True)\n",
"table1.drop([\"End Date\"], axis=1, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Avg_Hosp 0\n",
"Facility ID 0\n",
"State 0\n",
"Period 0\n",
"Claim Type 0\n",
"Avg_State 0\n",
"Avg_Nation 0\n",
"Percent_Hosp 0\n",
"Percent_State 0\n",
"Percent_Nation 0\n",
"dtype: int64"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Make sure the table do not have missing values. The following code line shows there are no missing values\n",
"# in the table\n",
"\n",
"table1.isna().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exploratory Data Analysis (EDA):\n",
"In this section, we perform **Exploratory Data Analysis** of the data set and use various techniques for feature selection\n",
"\n",
"First, we see the scatter_matrix plot of the feature variables in the data frame as they relate to the prediction variable `Avg_Hosp` cost. For this we use the scatter_matrix function from pandas.plotting library.\n",
"\n",
"The entire dataset has 67826 data rows. For analysis, we take a random sample of 400 data rows for the scatter_matrix. Before selecting the 400 random data rows, we use the scale function from sklearn.preprocessing library to appropriately scale the values of the data columns. This helps the scatter_matrix plot label decorations fit properly. This plots helps in determining if we should keep all the feature columns while training the model.\n",
"\n",
"Next we use the SelectKBest class and chi2 statistical test available from sklearn.feature_selection library to find the scores of feature columns as they relate to the prediction column. This is another mechanism to determine which feature columns are relevant to keep in the model\n",
"\n",
"Following that, we create and visualize the correlation matrix. This is another mechanism towards feature selection prior to training the model."
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"# After selecting the random sample of 400 data rows for the scatter_matrix analysis, this step\n",
"# uses the scale function from sklearn.preprocessing library to scale the values. A new pandas data frame is created\n",
"# that holds the sampled 400 data rows. We want to keep the original data set intact so we can use the original\n",
"# data set for the subsequent training of the model\n",
"\n",
"table1_sample = table1.sample(n=400, random_state=2)\n",
"standardised_table1_sample = scale(table1_sample)\n",
"\n",
"standardised_table1_sample = pd.DataFrame(\n",
" standardised_table1_sample, index=table1_sample.index, columns=table1_sample.columns\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"# The scatter_matrix is plotted using a tight layout for ease of visualization within the notebook. Hence,\n",
"# in the scaled randomized sample of 400 data rows, the column names are renamed to shorter column names.\n",
"\n",
"standardised_table1_sample.rename(columns={\"Avg_Hosp\": \"A_Ho\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"Facility ID\": \"F_Id\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"State\": \"ST\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"Period\": \"Per\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"Claim Type\": \"Clm\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"Avg_State\": \"A_ST\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"Avg_Nation\": \"A_Na\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"Percent_Hosp\": \"P_Ho\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"Percent_State\": \"P_ST\"}, inplace=True)\n",
"standardised_table1_sample.rename(columns={\"Percent_Nation\": \"P_Na\"}, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# In this step, the scatter matrix is plotted between the prediction column \"Avg_Hosp\" whose shortened name is \"A_Ho\"\n",
"# and each of the other remaining feature columns. For clarity of visualization, we create two scatter_matrix\n",
"# plots. The first one showing Avg_Hosp with the columns \"Facility Id\", \"State\", \"Period\" and \"Claim Type\".\n",
"# The second plot shows Avg_Hosp relation with the columns \"Avg_State\", \"Avg_Nation\", \"Percent_Hosp\",\n",
"# \"Percent_State\" and \"Percent_Nation\"\n",
"\n",
"%matplotlib inline\n",
"\n",
"plt.figure(figsize=(11, 8))\n",
"pd.plotting.scatter_matrix(\n",
" standardised_table1_sample.loc[:, \"A_Ho\":\"Clm\"], diagonal=\"kde\"\n",
")\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"pd.plotting.scatter_matrix(\n",
" standardised_table1_sample.loc[:, [\"A_Ho\", \"A_ST\", \"A_Na\", \"P_Ho\", \"P_ST\", \"P_Na\"]],\n",
" diagonal=\"kde\",\n",
")\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Features Score\n",
"0 Facility ID 9.760495e+08\n",
"4 Avg_State 7.996024e+08\n",
"5 Avg_Nation 7.950498e+08\n",
"1 State 8.320571e+04\n",
"6 Percent_Hosp 3.732397e+04\n",
"7 Percent_State 3.685061e+04\n",
"8 Percent_Nation 3.673161e+04\n",
"3 Claim Type 2.672140e+04\n",
"2 Period 1.624859e+04\n"
]
}
],
"source": [
"# In this step, we calculate the statistical scores of the feature columns as it relates to the prediction column\n",
"# Avg_Hosp using the SelectKBest library function based on the chi2 statistical test. The scores are displayed in a\n",
"# tabluar format for visualization. The X data frame has all the feature columns. The y data frame has the\n",
"# prediction column.\n",
"\n",
"X = table1.iloc[:, 1:10]\n",
"y = table1.iloc[:, 0:1]\n",
"\n",
"# We are selecting all the feature columns to see the scores for each feature column\n",
"selected = SelectKBest(score_func=chi2, k=9)\n",
"fit = selected.fit(X, y)\n",
"datascores = pd.DataFrame(fit.scores_)\n",
"datacolumns = pd.DataFrame(X.columns)\n",
"\n",
"# concat two dataframes for better visualization\n",
"featureScores = pd.concat([datacolumns, datascores], axis=1)\n",
"featureScores.columns = [\"Features\", \"Score\"] # naming the dataframe columns\n",
"print(featureScores.nlargest(9, \"Score\")) # print 9 best features"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Avg_Hosp Facility ID State Period \\\n",
"Avg_Hosp 1.000000 -8.863661e-06 -2.051140e-04 4.912669e-01 \n",
"Facility ID -0.000009 1.000000e+00 9.821420e-01 -7.250570e-16 \n",
"State -0.000205 9.821420e-01 1.000000e+00 -7.941509e-16 \n",
"Period 0.491267 -7.250570e-16 -7.941509e-16 1.000000e+00 \n",
"Claim Type 0.329614 1.675355e-14 1.650797e-14 1.815683e-01 \n",
"Avg_State 0.978819 8.851031e-04 6.733522e-04 4.994380e-01 \n",
"Avg_Nation 0.976734 -1.315365e-15 -1.331209e-15 5.009157e-01 \n",
"Percent_Hosp 0.982630 1.653416e-07 1.680870e-07 5.003226e-01 \n",
"Percent_State 0.977278 1.628740e-06 1.705365e-06 4.995657e-01 \n",
"Percent_Nation 0.976734 1.502742e-15 1.561542e-15 5.009206e-01 \n",
"\n",
" Claim Type Avg_State Avg_Nation Percent_Hosp \\\n",
"Avg_Hosp 3.296143e-01 0.978819 9.767342e-01 9.826304e-01 \n",
"Facility ID 1.675355e-14 0.000885 -1.315365e-15 1.653416e-07 \n",
"State 1.650797e-14 0.000673 -1.331209e-15 1.680870e-07 \n",
"Period 1.815683e-01 0.499438 5.009157e-01 5.003226e-01 \n",
"Claim Type 1.000000e+00 0.337399 3.388598e-01 3.351493e-01 \n",
"Avg_State 3.373986e-01 1.000000 9.984595e-01 9.939270e-01 \n",
"Avg_Nation 3.388598e-01 0.998460 1.000000e+00 9.939876e-01 \n",
"Percent_Hosp 3.351493e-01 0.993927 9.939876e-01 1.000000e+00 \n",
"Percent_State 3.375192e-01 0.999169 9.991468e-01 9.946930e-01 \n",
"Percent_Nation 3.388660e-01 0.998460 1.000000e+00 9.939871e-01 \n",
"\n",
" Percent_State Percent_Nation \n",
"Avg_Hosp 0.977278 9.767338e-01 \n",
"Facility ID 0.000002 1.502742e-15 \n",
"State 0.000002 1.561542e-15 \n",
"Period 0.499566 5.009206e-01 \n",
"Claim Type 0.337519 3.388660e-01 \n",
"Avg_State 0.999169 9.984596e-01 \n",
"Avg_Nation 0.999147 1.000000e+00 \n",
"Percent_Hosp 0.994693 9.939871e-01 \n",
"Percent_State 1.000000 9.991469e-01 \n",
"Percent_Nation 0.999147 1.000000e+00 \n"
]
}
],
"source": [
"# Calculate Correlation Matrix to see how the data is related\n",
"\n",
"corrMatrix = table1.corr()\n",
"print(corrMatrix)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA5QAAAK+CAYAAADddlGsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAD3AklEQVR4nOzdd3hUxf7H8fc3IUA6TUV65xJFLICIKEizIIqA/kBBsYANwYbda8N2lauo6KVaQEBFUOwVUFFRLIAEwUiRIkhNLySZ3x+7pC4l2Wyygc/rec6TnDNz5sxMzu7mu3POHHPOISIiIiIiIlJSIRVdAREREREREamcFFCKiIiIiIhIqSigFBERERERkVJRQCkiIiIiIiKlooBSRERERERESkUBpYiIiIiIiJSKAkoREREREZEjgJlNM7N/zOy3/aSbmT1nZglmttzMTj5YmQooRUREREREjgyvAOccIP1coKV3GQG8dLACFVCKiIiIiIgcAZxzXwG7DpDlQuA15/E9UMPMjj1QmVXKsoIie3esdRVdh2ARXu+Miq6CBKFv6pxa0VUIGp+FhVd0FYLGnYvvqugqSDAK0ff+eXJzK7oGEoSqNmhrFV2Hgynv/42rHtX8Wjwji/tMcs5NKkER9YGNBdY3ebf9vb8dFFCKiIiIiIgcBrzBY0kCyKJ8BekHDIr11ZeIiIiIiIiAZ0SyYYH1BsCWA+2gEUoREREREZFAyM2p6BqU1HxgpJnNBk4FEp1z+73cFRRQioiIiIiIHBHMbBbQDahjZpuAB4AwAOfc/4APgfOABCANuPJgZSqgFBERERERCQQXXBNKOecGHyTdATeWpEzdQykiIiIiIiKlohFKERERERGRQDgCHnmjEUoREREREREpFY1QioiIiIiIBIALsnsoA0EjlCIiIiIiIlIqGqEUEREREREJBN1DKSIiIiIiIuKbRihFREREREQCQfdQioiIiIiIiPimEUoREREREZFAyM2p6BoEnEYoRUREREREpFQ0QikiIiIiIhIIuodSRERERERExDcFlCIiIiIiIlIquuRVREREREQkEHJ1yauIiIiIiIiITwooS8jMTjKzHDNbXM7HXWhmL/jYPtDMXHnWRUREREREDs653HJdKoICypIbDrwIHG9mbSq6MkeCmXPmc8lVozipW1/uHTvugHlfmz2Prn0vpVPvAdz32H/JysrKS0tMSmbU3Q/ToUc/evW/gg8+XRDoqgfU6FHD2fTXL+zcvorJk8ZRtWrV/eZt1+44lnz/EUl7Eljy/Ue0a3dcqcsKNuoHj9AaUbSaeicdEmZy0g8TqX3RGQfdp82bD9Fpy1wIzf8oqN6iPm3efIj2v0/nxMUTqHnOqYGsdkBUj43k4ok3c+eqqdy0eDzHX9jZZ77j+nbihi+fYsyKydz604tcMO5aqkaF56X3e/Z6bv7xBe74bQo3LHiaEwd1K6cWlJ3EpGRG//s/dOxzGb0HX8cHX3ztM19W1l6efPFlul8ynM4XXsHY8ZPZm52dl7556z9cf/ejdL7wCroNvIZHn5tCdk7leraa+iJfYlIyo+9/go7nDqb3oBF88PlXPvNlZe3lyQnT6D7wajr3HcrYZyYW74u7xtK571C69b+KR8dPrpx9ofMCUF9I6SmgLAEzCwcuBSYDc4CrvdtnmdnbRfKGmNlGM7vFux5pZq+ZWYqZbTOzu83sfTN7JQD17G9mK8ws01uHe83MiqQvN7N0M9tlZovM7Bhv2oNm9puZXWNmf3nzvGNmdcq6nofqqDq1uXbYIC7q0/uA+RYv+YkpM95k6vjH+WTOK2zaspUJU2fkpY8dN4GwKmEsem8WTz4whkeefoGEtRsCXf2A6N2rK3eMuZHe5/wfzVt2olnTRjz4wG0+84aFhTF3zjRmzpxLnaPjmD79LebOmUZYWFiJywo26od8TR8bjtubzU8nXEXCyGdo+vgIwls13G/+2hediVUp8hEQGkLrl+9m9+dLWRp3BWvveIkWL4ymerNjA1z7snXuI8PI2ZvDf0+5gXdGT+DcsVdyVMv6xfJtXLqGlwc8xFNth/P8GbcQUiWUs26/OC998YT5PH/6zfzn+Gt445pxnHXbxdQ9vkk5tsR/jz43hbCwKiycM4Un7hnN2PGTSVi/sVi+qbPnEb/6T+ZN+S/vv/ocq/5Yy6QZ+R9rY8dPplaNWBa8NZk5k55i6fJ43nj34/Jsit/UF/keHT+ZsCpVWDh3Gk/cewtjn51Ewrq/iuWbOmuupy+mPcv701/w9MX0OXnpY5+d5OmLt6cyZ8o4li5byRvvVLK+0HmRR30RILm55btUAAWUJTMQ2OCcWw5MBy43szBgBtDHzGoUyNsVOBaY5V0f5912EdAdaAccfAihhMzsFOAtYC7QFrgLuBsY6U2vC8wGXgXaAGd621JQE2AIcCHQE2gJTCvruh6qXt1Op8eZnakRG3PAfO9+9Dn9zz+bFs0aExsTzXXDBvPOh58DkJaewWcLF3PT8KFERIRzcrvj6dalE+998kV5NKHMDR16MS+/Mpv4+DXs2ZPIo4+N5/Khl/jM263raVSpEsr45yaTlZXFCxOmYWZ0P+v0EpcVbNQPHiHh1ah1Xic2/mcmuWkZJP/wO7s//ZE6A7v6zB8aHUGDWy/hr7GFX/rhLRpQtW5Ntk56D3JzSVr8G8k//k6dAd3KoRVlIyy8Gm3O7cjCcW+xNy2TjUvXsObzn2nbv0uxvEl/7yJ9d0reusvJpWaTY/LWt/+xmZws77fuDhyOWo2PKVpM0EpLz+Czr5cwctggIsLDObltG7qd1p73PltULO/C75Zyaf/ziI2JplaNWC696DzmffxlXvrmrf9wdrfOVKtalTq1atKlw4kkrN9Uns3xi/oiX1p6Bp999T0jr7o0vy86d/DdF98u5dL+ffL7on8f5n2U/7m5+e9thfui40kkrC8emAYrnRf51BfiDwWUJXMN+cHXIiANuAD4BEgCBhTIexnwhXNuq5lFAVcBdzrnPnPOrcQzulnSrxFGeEc48xaKB4O3Aouccw8459Y4514Hngbu9KbXA8KAOc659c6535xzU5xz2wqUEQ5c7pz7xTm3GLgW6GtmLUtY33KVsG4DrVs0zVtv3aIZO3ftZk9iEhs2biI0JIQmjRoUSG9KwrrKOUIZF9eaZcvj89aXLV9J3bpHU6tWTZ95V6xYVWjbihWriItrXeKygo36waN683qQk0vG2r/ztqXFbyCite8RyoZ3X8a21z5m7z+7CyeYj8xmRPyrURnWNrBqN6tLbm4uu9Ztzdu2bdUGjmrVwGf+hu1bMWbFZO5aNY1/nduBH6YW/hb93LHDuOv3adyw4GlS/tnDHwt+DWT1y9SGTVs873sN6+Vta928MX/6GHFwzrPkrzu2bd9JckoqAEP6n8fHC74hPSOTbdt38s0Pv9Cl44mBbkKZUV/kK1lfOFyBzijWFwPO5+MvC/TFkp/p0vGkwDeijOi8yKe+CCCXW75LBVBAeYjMrAVwOjATwHneYV8HrnHOZQNv4AkiMbNqeILLfddbNscTxP2wrzznXCrwWwmr8QZwYpFlTJE8bYCiEwZ9A9Q3sxhgGfA58JuZvW1m15vZUUXyb3bOFfyKcQme4Deo7xlNS0snOioybz3K+3tqWjppaRl56/tER0WSmpZernUsK1GRESQlJuWtJyYmAxAdHVk8b1QkiUnJhbYlJiXl5S1JWcFG/eARGlGd7OS0QttyklIJjQwvljfyhOZEd/gXW6d9WCwtI2Eze3ckcuwN/bAqocR2bUdMpzhCwivPvaRhEdXJTCrcF5lJ6VSNrO4z/8ala3iq7XCe7TiS7yZ+wJ5N2wulf3TfKzwZdzWvDHiI3z9emj9iWQmkpWcQFRlRaFtUZASp6cXf97p0PInX537Arj2J7Ni1m5nzPOdHRqbnPvT2JxxHwvpNnNZ3KD0HXUtcq+Z0P71j4BtRRtQX+Xz3he/Pwy6nnszrb7+f3xdz9/VFJgDt2x1HwvqNnNbnMnpeMpy41i3o3qXy3Het8yKf+kL8oYDy0F0DhAJ/mVm2mWXjuZy0t5k1xBM8djWz+kAfoCowz7vvvu/9/Z2NNdE5l1BwAbYWyWMHOI5zzuUAvb3LcjwjpX+YWbvSVsrMRpjZUjNbOuW1WQffIUAiIsJJSc3/RzLV+3tkRDgREdXz1vdJSU0jMqL4P9zBaPDgi9izaw17dq3h/fnTSUlNIzomOi89xvt7cnJqsX1TUlKJiY4qtC0mJjovb0nKqmjqB99y0jIIjS78j0BodAQ5qUX+ETCj6eMjWH//VMgp/i2my85hzVVPUrPHKZz86zSOvfYCdr73LVl/7wxk9cvU3rQMqkUXfl1Xiw4nKzXjgPslb9vNn4uW0/+FkcXSXK5j49I1xNStxSlDepZpfQMpIrw6qWmF3/dSU9OJDC/+vjfisv78q0VTLh4xhiGj7qX76R2pUqUKtWrEkJuby7V3jaXnGafywwev8/Xcl0lKSeGZSTOKlROs1Bf5fPZFmu/PwxFDBvCvls24ePhtDBl5D9277OuLWE9f3PEwPc/sxA8fzeLrd14lKTmFZyYWvXAqeOm8yKe+CKDcnPJdKoACykNgZlWAK/Dci3higaUdnqDsSufcEuBPYDCekcp3nHP7bs5JAPYCHQuUGQEcH4DqxgNFbxbqAmxyziWDJ6p0zn3nnHsI6ABsAf6vQP763iB5n454zpXC1wt6OecmOefaO+faX3P54LJqR4m1aNqY1Qlr89ZXJ6yldq2a1IiNoXHDBmTn5LBh4+YC6eto0bRxRVS1xGbNmkeNWq2oUasV518wlPj41bQ7IS4vvd0JcWzd+g+7du0utm98/Grato0rtK3t8W2Ij1+dl36oZVU09YNvGX9uwUJDqN40f/KciLgmpK0ufKlSaHQ4ke2a0/J/t3Hyr1M5/qP/AHDyT5OJ7ui5ACFt1QbiB9zPT8dfwe+XPkL1xseQ8ktC+TXGTzvXbiUkNJRaBe6FPKZNI7avOfj9OyGhIdRstP97JEOqhFCz8dFlUs/y0LhBPbJzctmwKf9S6NVr19O8SfFLoatXq8a9o67hizcn8fGMF4mNiSauZTNCQ0NJTE5h6z87GHzhOVStGkaN2Gj6nd2dr3/4uTyb4xf1Rb78vtiSt211wgH6YvRwvnhrCh/PfMnTF62K9EW/c/P74tzufL3kp/Jsjl90XuRTX4g/FFAemj5AHWCy957DvAXPBDdXmVkI3ktgvfnzvorxBpbTgCfNrIeZxQFT8PR/WT9DchyekdIHzayVmV0G3Ab8B8DMOpnZfWbWwcwa4bkHtCGeQHSfdOBVMzvRzE4D/gd84Jz7o4zrekiys3PIzMwiJyeXnNxcMjOzyM4u/g3MBef0YO77n/Lnug0kJiUz8ZXZ9DvPM5oQEV6dnl0788KU6aSlZ/Dz8pUs+Po7+p7do7ybUyZmzJjDlcMG0aZNS2rUiOWeu0fz2vQ3feZduOg7cnJyuGnk1VStWpUbrh8GwJcLFpe4rGCjfvDITc9k10dLaDBmECHh1Yjq8C9qnt2BHXMKT6aQk5TGzyddw4pet7Gi1238PuRRAFacM4aUXzwv74g2jbFqYYSEV+XY6y4k7OiabH/zy2LHDFZ70zP5/eMf6XrrQMLCq9GgfSta9TqFFXO/KZb3+H6dialXG4DY+nU4a8wlrP92JQARtWM4rm8nwiKqYSFGszPbctwFp7H+2/hi5QSriPDq9OzSkQmvzCYtPYNffvudBd8upW+v4pM1bdu+k3927MI5x7L4NUycMYcbh3kmpaoZG0P9Y4/mjfc+JTsnh6SUVOZ/upBWzSvHF3KgvigoIrw6Pc84lQkve/tixSoWfPvjIfTFaiZOf4sbhw0C9vXFMbwx/5P8vvhkAa2aNynnFpWezot86osAOgLuobSCN1uLb2Y2H6junCv23Aoza4ZnZPJs788E4B+gvvfeyn35ooCXgP5ACvAM0AtY45y7/hDqsBD4zTk3ssj2gcBbzrlCjwUBHgJaA9vwBISPOeec99mZ/wVOBmoAG4FJzrl9AeeDeGazfQ64H08g/Smee0UL31zkw94da8v8hJowdQYvTXu90Lbrr7qM/n16c8GQa5k/YyLH1vWMGrw6ey5TZ7xFZmYmvbp14d9jRuY9SzAxKZn7H3uG7378mdjYGG657kr69D6rrKubJ7xemU/iW8jNo0cw5vYbCA+vztx5H3LDjXflPXfz/fnT+WbxDzzx5PMAnHjicUz839PEtWnJqt8TGHHtbfz668pDKivYVbZ++KZOYO4vCq0RRfP/3kjsme3I3p3MX4/NYOe8r6lavw7tFo5nWbfRZG3eUWifag2O4qQfJvJ9w4F5l8A2uv9yjh7cEwsLJXnJKtbdN4XM9UWvrC8bn4UF5pLz6rGRXPDUCJqecTzpu1P48sk3+O3db4mpV5vrP/8PL/W8g6QtOzlrzMWcMOBMqsdGkJGYRsKCX/nyyTdI35NCRK1oBr40mmPaNMJCQkjcvIMfXv6EX2YH5vm1dy6+KyDlJiYlc/9TL/L9z8uJjYnm5msuo0+PM/h723YuvOoW3p32DMcecxRLl8dz7xPPs2tPInWPqsO1Qwdyfs8z88r5PWEdT774Mqv/3EBoSAgdTjyOe0cNp3bN2IDUOxAqZV+EBOZ7/8SkZO7/zwS+/2mZpy+GD6FPzzM9fTFsNO++Mt7TF8tWcu/jz3n64ug6XDv0Ys4vEGD8nrCOJ1+Yxuo/13v64qTjuXf0cGrXrFH2lQ7Q4xAq5XkRIJWxL6o2aOtrOrmgkrlqQbkGW9XanFXufaKAsoJ4J+7ZADzlnBtX0fXZZ19A6Zwr1eW4gQgoK6tAB5RSOQUqoKyMAhVQVkaBCiilkgtQQFkpVdDz9SS4VYqAcuUX5RtQHtej3PukSnkf8EhlZifhmSX1ByAaz2M8ovHM3CoiIiIiIlLpKKAsX7fiuQw1G/gVONM5t8nMzgA+2t9Ozrmo/aWJiIiIiEiQqqD7GsuTAspy4pz7BWi/n+SleGaNrXDOuQeBByu4GiIiIiIiUgkooAwCzrl0PJP5iIiIiIiIVBoKKEVERERERALhCJhQStOHiYiIiIiISKlohFJERERERCQAnMup6CoEnEYoRUREREREpFQ0QikiIiIiIhIIR8BjQzRCKSIiIiIiIqWiEUoREREREZFA0CyvIiIiIiIiIr5phFJERERERCQQdA+liIiIiIiIiG8aoRQREREREQmEXD2HUkRERERERMQnjVCKiIiIiIgEgu6hFBEREREREfFNI5QiIiIiIiKBoOdQioiIiIiIiPimgFJERERERERKRZe8ioiIiIiIBMIRMCmPAkopU+H1zqjoKgSN9C1fV3QVgobLSq/oKgSNiCa9K7oKEoQearawoqsgIlLpZGdtrugqCAooRUREREREAkOT8oiIiIiIiIj4phFKERERERGRQNAIpYiIiIiIiIhvGqEUEREREREJAOdyKroKAacRShERERERESkVjVCKiIiIiIgEgu6hFBEREREREfFNI5QiIiIiIiKB4DRCKSIiIiIiIuKTRihFREREREQCQfdQioiIiIiIiPimEUoREREREZFA0D2UIiIiIiIiIr4poBQREREREZFS0SWvIiIiIiIigaBJeURERERERER80wiliIiIiIhIIGhSHhERERERERHfNEIpIiIiIiISCLqHUsqDmb1iZu8f6rqIiIiIiEgwUEB5iLxBnfOxnFgGxY8GhhxqupktNLMX/D2omQ0zs5QC690KtCvXzJLMbLmZjTezpv4eryyMHjWcTX/9ws7tq5g8aRxVq1bdb9527Y5jyfcfkbQngSXff0S7dseVuqxgMXPOfC65ahQndevLvWPHHTDva7Pn0bXvpXTqPYD7HvsvWVlZeWmJScmMuvthOvToR6/+V/DBpwsCXfWASExKZvT9T9Dx3MH0HjSCDz7/yme+rKy9PDlhGt0HXk3nvkMZ+8xE9mZn56Vv3voP1981ls59h9Kt/1U8On4y2Tk55dWMMnOkvz72qVmzBnPemkLi7j/4848lDBrUb795D9TOkpQTrNQXhek14qHzIp/6Ip/6IkByc8t3qQAKKEvmc+DYIstv/hbqnEt0zu0pbXoAHAfUA04GHvL+XGFmXcuxDsX07tWVO8bcSO9z/o/mLTvRrGkjHnzgNp95w8LCmDtnGjNnzqXO0XFMn/4Wc+dMIywsrMRlBZOj6tTm2mGDuKhP7wPmW7zkJ6bMeJOp4x/nkzmvsGnLViZMnZGXPnbcBMKqhLHovVk8+cAYHnn6BRLWbgh09cvco+MnE1alCgvnTuOJe29h7LOTSFj3V7F8U2fNJX71n8yb9izvT3+BVX+sZdL0OXnpY5+d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JSIiIiIikghKKDfcpUAHIA/4CdjX3eeY2T5AufPNF3ZnFRERERGRmqkgBWqUSig3gLv/CHQtZ/d4gnGKIiIiIiIiNZISyiri7tkEk/mIiIiIiIjUSEooRUREREREqkBB1AEkQK21NxEREREREREpSxVKERERERGRKlDzp+RRhVJEREREREQqSRVKERERERGRKqAxlCIiIiIiIiLlUIVSRERERESkChRY1BFUPVUoRUREREREpFJUoRQREREREakCBSkwz6sqlCIiIiIiIlIpqlCKiIiIiIhUgZpfn1SFUkRERERERCpJFUoREREREZEqoHUoRURERERERMqhCqWIiIiIiEgV0CyvIiIiIiIiIuVQQikiIiIiIiKVoi6vsnHV0ncUIrJuUqEb0DoryI86AklGtdKijiB56HdEqqlU+EunT/8iIiIiIiJSKapQioiIiIiIVAEtGyIiIiIiIiJSDlUoRUREREREqkAqzBegCqWIiIiIiIhUiiqUIiIiIiIiVaDm1ydVoRQREREREZFKUoVSRERERESkCmiWVxEREREREZFyqEIpIiIiIiJSBTwFRlGqQikiIiIiIiKVogqliIiIiIhIFdAYShEREREREZFyqEIpIiIiIiJSBQo0hlJEREREREQkPiWUIiIiIiIiUinq8ioiIiIiIlIFan6HV1UoRUREREREpJJUoRQREREREakCmpRHREREREREpByqUIqIiIiIiFSBgqgDSIBqXaE0s6fMzMPbGjObbmZ3mVmDqGOriJndaGa/rudjZprZ5XG2X25mMzdacElq2fIVXHT9/+h+2IkcfMIg3v7os7jtcnPXcPtDT3DAsaezV+/+DL7nMdbk5RXt/2veAs65ajB79e5Pz74DueW+YeTl5yfqNDaKpk2b8PJLw1m25A+m/fENJ5zQp9y2F114JnP+/JFF//zGsKFDqFu3bqWOk6x0LYqlNWnINsOvYpcpo9jp66E067Nv3HbNjzuA3Wa9wi6Tny+6Ndpzx/U+TjKrn9mAYx+7mCt+e5zzx91Hp6P3ituuY+89OPuTO7nsl2Fc/P3D9B5yFnUbppdp17TNZvxn8pMcde85VR36Rrds+QouvGYw3Q46hoOOPY23Pxwbt11u7hpuv38Y+/c5hb0O+zc3D3m4xHvntJmzGXjRNexx6PEcdsKZfPTZlwk6g41H1yLw3Mtv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nbuQLa8bQPNjelKrQX3y/lnKotGf8ve9L+LhB4fyjlMVPkxruPZGlVA/swFH3HkmbfbZkewlKxl7+wtMev0rGrdqzpkf3c6wA//D8rmL2PeK49jpmH2on5nB6mVZTBvzE5/e/iLZS1eWOWaPi/vStM1mvHnxI1US8+Xf37TRj/nQ4yN45ImSEwqdM7AffY84mKNOPos3RjxGy82DiuzTo17l8REvkZOTw0E9e/B/V5xftFbrsuUruP7We/jqux/IzGzMJWefxhEHl00+klm1vRYFVbNO8rLlK7j+tvv4avyPZDZuzCVnn8oRB/Xk7/kLOKr/ubzx7MO03GxTxv/0K9fccjeLlyxj801bcPaAEzgy5nzveugJXn3rfdbk57Nb505cc/FZbL1lqwqeeQPUqvT39eWqtq+LKlBdr0WdFu3W1gsxcs0abZfQZGvxij8Sfk2qY0JpBDOSFo6bXE6QgN3h7h+Wl1CGjz0duAzYFlgMvOPuA8N9jQhmkD2GYKzgfIKxhte6+7R1TCjrESxv0osgOT3N3Z9ay7nOpGzydhjwDjAxJqFsDTxOMLvsEuBeoCewMCah3INgJtsOQD13t9Ixhu36Av8N280nSChvLVyrMhkTyuqoqhJKqd6qKqGsjqoqoayOqiKhlBqgihLKaqkKEkqp/qpDQtm04bYJ/Wy8ZOVUJZRSvSmhLKaEUuJRQllMCWUxJZQSlxLKYkooJQ4llGVFkVBWi2VDREREREREqpuCcufCrDmSeVKeas/M+sUuQ1LqNjHq+ERERERERDaEKpRV6w3gm3L2lV6WQ0REREREapBUGF6ohLIKhctwJOVSHCIiIiIiIhtKCaWIiIiIiEgViGptyETSGEoRERERERGpFFUoRUREREREqoBrllcRERERERGR+FShFBERERERqQIaQykiIiIiIiJSDlUoRUREREREqkAqrEOpCqWIiIiIiIhUihJKERERERERqRR1eRUREREREakCWjZEREREREREpByqUIqIiIiIiFQBTcojIiIiIiIiUg5VKEVERERERKqAKpQiIiIiIiJSI5jZoWY22cymmtlVcfabmd0f7p9gZruu7ZhKKEVERERERKqAJ/hWETNLAx4CDgM6AieaWcdSzQ4Dtgtvg4BH1naOSihFRERERERqvu7AVHef7u65wCjg6FJtjgae8cDXQBMza1nR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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Visualize Correlation matrix with Searborn and Matplotlib\n",
"plt.subplots(figsize=(15, 10))\n",
"plt.tick_params(labelsize=14)\n",
"sn.heatmap(corrMatrix, annot=True, annot_kws={\"size\": 12}, fmt=\".2f\", robust=True)\n",
"plt.xlabel(\"Parameters\", fontsize=25)\n",
"plt.ylabel(\"Parameters\", fontsize=25)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Avg_Hosp 1.000000\n",
"Percent_Hosp 0.982630\n",
"Avg_State 0.978819\n",
"Percent_State 0.977278\n",
"Avg_Nation 0.976734\n",
"Percent_Nation 0.976734\n",
"Period 0.491267\n",
"Claim Type 0.329614\n",
"Facility ID -0.000009\n",
"State -0.000205\n",
"Name: Avg_Hosp, dtype: float64"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Our target prediction is the column Avg_Hosp, we want to see\n",
"# how this value is correlated with the other feature columns\n",
"# From the below matrix, we see that the prediction column Avg_Hosp has the highest correlation\n",
"# with the Avg_State feature column\n",
"\n",
"corrMatrix[\"Avg_Hosp\"].sort_values(ascending=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Creating Train, Validation and Test Datasets:\n",
"In the last step of the previous section, we see that the prediction column `Avg_Hosp` cost has second highest correlation with the `Avg_State` feature column. In this section we examine the spread of values for the `Avg_State`. Then we use a technique called stratification to categorize each data row based on the category of the `Avg_State` cost. We did not use the column `Percent_Hosp` (highest correlation) for stratification because the `Percent_Hosp` column is derived from the `Avg_Hosp` value and the line which contains the Total Cost per Episode for a specific hospital. There is an obvious expected high degree of correlation between `Avg_Hosp` and `Percent_Hosp`. Using `Percent_Hosp` to stratify values will not give us a good representative sample for train, validation and test datasets.\n",
"\n",
"From the defined categories of the `Avg_State` values, we use the StratifiedShuffleSplit function from the Scikit-Learn library to split and randomly select data subsets for the training, validation and test data sets. We use this method two times. First we split the original data into train and test. Then we split the test set again into validation and test set. This stratification technique allows us to have good representation of data in each of the train, validation and test sets that are well spread across the `Avg_State` value categories. Then we move the prediction column `Avg_Hosp` to the first column in each of the train, validation and test data sets. The data sets are uploaded into S3 bucket location during the machine learning model creation process."
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages/seaborn/distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).\n",
" warnings.warn(msg, FutureWarning)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# We see the distribution of the data around the feature column \"Avg_State\" that has the highest\n",
"# correlation to the target prediction \"Avg_Hosp\"\n",
"# From the histogram below we see that most of the values are between 0 and 5000 for Avg_State\n",
"\n",
"sn.distplot(table1.Avg_State)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"# Before we divide this dataset into train, validation and test, we need to stratify the values of Avg_State\n",
"# to ensure we effectively select random sets of data into the train, validation and test data sets\n",
"# which is good representative sample based on the Avg_State values\n",
"# To do this, we introduce a new Feature column column called \"Avg_State_Category\", we make this column\n",
"# equal to the value of the respective Avg_State value divided by 1000 and then using the ceil (ceiling) function\n",
"\n",
"table1[\"Avg_State_Category\"] = np.ceil(table1[\"Avg_State\"] / 1000)"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0 14226\n",
"1.0 35069\n",
"2.0 6325\n",
"3.0 3561\n",
"4.0 2007\n",
"5.0 472\n",
"10.0 1060\n",
"11.0 1749\n",
"12.0 274\n",
"20.0 9\n",
"21.0 750\n",
"22.0 1482\n",
"23.0 544\n",
"24.0 298\n",
"Name: Avg_State_Category, dtype: int64"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Now see how these categories are distributed by aggregating across all the data rows\n",
"\n",
"table1.Avg_State_Category.value_counts().sort_index()"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"# From the above distribution, we see approximately 61k out of the total 67k values have category 0.0 to 5.0\n",
"# Only about 6k values of the total (approx 9%) of the values have category greater than 5.0\n",
"# Hence we update the category to 6.0 for all data rows that have category greater than 5.0\n",
"\n",
"table1[\"Avg_State_Category\"].where(table1[\"Avg_State_Category\"] < 5, 6.0, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0 14226\n",
"1.0 35069\n",
"2.0 6325\n",
"3.0 3561\n",
"4.0 2007\n",
"6.0 6638\n",
"Name: Avg_State_Category, dtype: int64"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# We see the distribution of the values for the Avg_State_Category across the category values 0.0 to 6.0\n",
"\n",
"table1.Avg_State_Category.value_counts().sort_index()"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [],
"source": [
"# We use the stratified shuffle split function available within sklearn library to create\n",
"# train, validation and test datasets based on our defined perentages and splitting the data appropriately\n",
"# and randomly across all the established categories with respect to the Avg_State values\n",
"\n",
"# The function splits the data into two parts. First we split into training set which will be 80% of the data\n",
"# and a test set which will be 20% of the data. Then we split this test set into validation set\n",
"# where the validation set will be 90% of the previous test set and the final test set is\n",
"# the remaining 10% of the previous test set. This is a two fold splitting\n",
"\n",
"# First lets create the training set and the temporray set\n",
"split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)\n",
"\n",
"for train_index, test_index in split.split(table1, table1[\"Avg_State_Category\"]):\n",
" strat_train_set = table1.loc[train_index]\n",
" strat_test_set = table1.loc[test_index]"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [],
"source": [
"# Here we take the test set and split it into the validation set and the test set\n",
"# as mentioned in the prior step\n",
"split = StratifiedShuffleSplit(n_splits=1, test_size=0.1, random_state=42)\n",
"\n",
"for train_index, test_index in split.split(\n",
" strat_test_set, strat_test_set[\"Avg_State_Category\"]\n",
"):\n",
" strat_validation_set = table1.loc[train_index]\n",
" strat_test_set = table1.loc[test_index]"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(67826, 54260, 12209, 1357)"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print total rows of data from the original dataset, training set, validation set and test set\n",
"# To see the numbers match up, add the training, validation and test data set record counts to get the total in the\n",
"# original data set\n",
"\n",
"Total = table1.shape[0]\n",
"Train = strat_train_set.shape[0]\n",
"Validation = strat_validation_set.shape[0]\n",
"Test = strat_test_set.shape[0]\n",
"Total, Train, Validation, Test"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
"# Drop the column \"Avg_State_category\" from train, validation and test datasets. This column\n",
"# was introduced to do stratification of the data for meaningful sampling and is not relevant\n",
"# for the model anymore\n",
"\n",
"strat_train_set.drop([\"Avg_State_Category\"], axis=1, inplace=True)\n",
"strat_validation_set.drop([\"Avg_State_Category\"], axis=1, inplace=True)\n",
"strat_test_set.drop([\"Avg_State_Category\"], axis=1, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
"# Replace the bucket name with the your bucket name obtained form the CloudFormation output tab\n",
"# From the SageMaker library, we use the get_execution_role function to get the execution\n",
"# role for SageMaker to access AWS reqources while creating the machine learning model\n",
"\n",
"# Define IAM role\n",
"role = get_execution_role()\n",
"bucket = sagemaker_session.default_bucket()\n",
"prefix = \"linear_learner\""
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [],
"source": [
"# Split each of the Train, Validation and Test datasets from pandas data frame into two subsets.\n",
"# The x subset is the feature columns and the y subset is the label column\n",
"\n",
"x_train = strat_train_set.iloc[:, 1:10]\n",
"y_train = strat_train_set.iloc[:, 0:1]\n",
"\n",
"x_validation = strat_validation_set.iloc[:, 1:10]\n",
"y_validation = strat_validation_set.iloc[:, 0:1]\n",
"\n",
"x_test = strat_test_set.iloc[:, 1:10]\n",
"y_test = strat_test_set.iloc[:, 0:1]\n",
"\n",
"train_df = pd.concat([y_train, x_train], axis=1)\n",
"validation_df = pd.concat([y_validation, x_validation], axis=1)\n",
"test_df = pd.concat([y_test, x_test], axis=1)\n",
"\n",
"# copy the training dataframe to s3\n",
"train_df.to_csv(\"data/train_data.csv\", index=False, header=False)\n",
"validation_df.to_csv(\"data/validation_data.csv\", index=False, header=False)\n",
"test_df.to_csv(\"data/test_data.csv\", index=False, header=False)\n",
"\n",
"train_data_location = f\"s3://{bucket}/{prefix}/data/train\"\n",
"validation_data_location = f\"s3://{bucket}/{prefix}/data/validation\"\n",
"test_data_location = f\"s3://{bucket}/{prefix}/data/test\"\n",
"\n",
"# Upload the training data to S3\n",
"S3Uploader.upload(\n",
" local_path=\"data/train_data.csv\",\n",
" desired_s3_uri=train_data_location,\n",
" sagemaker_session=sagemaker_session,\n",
")\n",
"\n",
"# Upload the validation data to S3\n",
"S3Uploader.upload(\n",
" local_path=\"data/validation_data.csv\",\n",
" desired_s3_uri=validation_data_location,\n",
" sagemaker_session=sagemaker_session,\n",
")\n",
"\n",
"# Upload the testing data to S3\n",
"S3Uploader.upload(\n",
" local_path=\"data/test_data.csv\",\n",
" desired_s3_uri=test_data_location,\n",
" sagemaker_session=sagemaker_session,\n",
")\n",
"\n",
"\n",
"output_location = f\"s3://{bucket}/{prefix}/output\"\n",
"\n",
"train_data_location_input = sagemaker.inputs.TrainingInput(\n",
" train_data_location,\n",
" distribution=\"FullyReplicated\",\n",
" content_type=\"text/csv\",\n",
" s3_data_type=\"S3Prefix\",\n",
" record_wrapping=None,\n",
" compression=None,\n",
")\n",
"\n",
"validation_data_location_input = sagemaker.inputs.TrainingInput(\n",
" validation_data_location,\n",
" distribution=\"FullyReplicated\",\n",
" content_type=\"text/csv\",\n",
" s3_data_type=\"S3Prefix\",\n",
" record_wrapping=None,\n",
" compression=None,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Train Machine Learning Model using Amazon SageMaker:\n",
"In this section, the SageMaker built-in Linear Learner algorithm is used to train the model using the training and validation data sets as input channels. The algorithm is used in the “Regressor” mode to train the model. The boto3 Python library for AWS and the SageMaker library for Python is used. In the step below, replace with your own **bucket name** from CloudFormation Outputs tab"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [],
"source": [
"# In this step, we initialize the Linear Learner Estimator\n",
"# We define the parameters for the estimator which will be used by SageMaker to train the model.\n",
"# In this example, we use an instance of type \"ml.c4.xlarge\". Note that the SageMaker built-in Linear Learner\n",
"# algorithm do not need GPU type instances mandatorily. GPU instances can be selected if the dataset is large\n",
"# and using GPU instances will help boost the performance of the model creation process.\n",
"\n",
"# from sagemaker import LinearLearner\n",
"# from sagemaker.sklearn.estimator import LinearLearner\n",
"\n",
"\n",
"container = image_uris.retrieve(\n",
" region=boto3.Session().region_name, framework=\"linear-learner\"\n",
")\n",
"\n",
"sess = sagemaker.Session()\n",
"\n",
"linear = sagemaker.estimator.Estimator(\n",
" container,\n",
" role,\n",
" instance_count=1,\n",
" instance_type=\"ml.c4.xlarge\",\n",
" output_path=output_location,\n",
" sagemaker_session=sagemaker_session,\n",
" disable_profiler=True,\n",
")\n",
"\n",
"linear.set_hyperparameters(predictor_type=\"regressor\", mini_batch_size=200)"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'DataSource': {'S3DataSource': {'S3DataType': 'S3Prefix',\n",
" 'S3Uri': 's3://sagemaker-ap-southeast-2-431579215499/linear_learner/data/validation',\n",
" 'S3DataDistributionType': 'FullyReplicated'}},\n",
" 'ContentType': 'text/csv'}"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"validation_data_location_input.config"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'DataSource': {'S3DataSource': {'S3DataType': 'S3Prefix',\n",
" 'S3Uri': 's3://sagemaker-ap-southeast-2-431579215499/linear_learner/data/train',\n",
" 'S3DataDistributionType': 'FullyReplicated'}},\n",
" 'ContentType': 'text/csv'}"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data_location_input.config"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"2022-06-06 01:44:54 Starting - Starting the training job.....\n",
"2022-06-06 01:45:20 Starting - Preparing the instances for training.............\n",
"2022-06-06 01:46:33 Downloading - Downloading input data..\n",
"2022-06-06 01:46:49 Training - Downloading the training image.........\n",
"2022-06-06 01:47:39 Training - Training image download completed. Training in progress..............................\n",
"2022-06-06 01:50:10 Uploading - Uploading generated training model.\n",
"2022-06-06 01:50:16 Completed - Training job completed\n"
]
}
],
"source": [
"# In this step, we call the fit function to train the model using the training dataset and the validation dataset\n",
"# llearner.fit([train_data_location,validation_data_location])\n",
"linear.fit(\n",
" inputs={\n",
" \"train\": train_data_location_input,\n",
" \"validation\": validation_data_location_input,\n",
" },\n",
" logs=\"None\",\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-------!"
]
}
],
"source": [
"# In this step, we deploy the model created in the previous step as an endpoint. In this example,\n",
"# we use an instance type of \"ml.m4.xlarge\" to deploy the model. Once deployed, the endpoint\n",
"# can be invoked to make inference and predict the value of the \"Avg_Hosp\" cost. Please note deploying the\n",
"# model to an endpoint takes a few minutes\n",
"\n",
"llearner_predictor = linear.deploy(\n",
" initial_instance_count=1, instance_type=\"ml.m4.xlarge\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([5.0107e+04, 5.0000e+00, 2.0000e+00, 4.0000e+00, 0.0000e+00,\n",
" 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00])"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_test.values[0]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'linear-learner-2022-06-06-00-56-35-125'"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"llearner_predictor.endpoint_name"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Facility ID
\n",
"
State
\n",
"
Period
\n",
"
Claim Type
\n",
"
Avg_State
\n",
"
Avg_Nation
\n",
"
Percent_Hosp
\n",
"
Percent_State
\n",
"
Percent_Nation
\n",
"
\n",
" \n",
" \n",
"
\n",
"
5380
\n",
"
50107
\n",
"
5
\n",
"
2
\n",
"
4
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0000
\n",
"
0.0000
\n",
"
0.0000
\n",
"
\n",
"
\n",
"
2823
\n",
"
30103
\n",
"
4
\n",
"
1
\n",
"
6
\n",
"
8.0
\n",
"
8.0
\n",
"
0.0004
\n",
"
0.0003
\n",
"
0.0004
\n",
"
\n",
"
\n",
"
12310
\n",
"
90001
\n",
"
8
\n",
"
2
\n",
"
2
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0000
\n",
"
0.0000
\n",
"
0.0000
\n",
"
\n",
"
\n",
"
9535
\n",
"
50701
\n",
"
5
\n",
"
1
\n",
"
7
\n",
"
585.0
\n",
"
585.0
\n",
"
0.0312
\n",
"
0.0262
\n",
"
0.0270
\n",
"
\n",
"
\n",
"
10433
\n",
"
50779
\n",
"
5
\n",
"
1
\n",
"
2
\n",
"
0.0
\n",
"
1.0
\n",
"
0.0000
\n",
"
0.0000
\n",
"
0.0000
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
1923
\n",
"
20018
\n",
"
1
\n",
"
2
\n",
"
1
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0000
\n",
"
0.0000
\n",
"
0.0000
\n",
"
\n",
"
\n",
"
12701
\n",
"
100025
\n",
"
10
\n",
"
1
\n",
"
4
\n",
"
72.0
\n",
"
152.0
\n",
"
0.0067
\n",
"
0.0033
\n",
"
0.0070
\n",
"
\n",
"
\n",
"
1579
\n",
"
10139
\n",
"
2
\n",
"
3
\n",
"
2
\n",
"
198.0
\n",
"
149.0
\n",
"
0.0079
\n",
"
0.0095
\n",
"
0.0069
\n",
"
\n",
"
\n",
"
5863
\n",
"
50138
\n",
"
5
\n",
"
2
\n",
"
3
\n",
"
10415.0
\n",
"
10139.0
\n",
"
0.5356
\n",
"
0.4669
\n",
"
0.4684
\n",
"
\n",
"
\n",
"
7136
\n",
"
50296
\n",
"
5
\n",
"
1
\n",
"
6
\n",
"
8.0
\n",
"
8.0
\n",
"
0.0004
\n",
"
0.0003
\n",
"
0.0004
\n",
"
\n",
" \n",
"
\n",
"
1357 rows × 9 columns
\n",
"
"
],
"text/plain": [
" Facility ID State Period Claim Type Avg_State Avg_Nation \\\n",
"5380 50107 5 2 4 0.0 0.0 \n",
"2823 30103 4 1 6 8.0 8.0 \n",
"12310 90001 8 2 2 0.0 0.0 \n",
"9535 50701 5 1 7 585.0 585.0 \n",
"10433 50779 5 1 2 0.0 1.0 \n",
"... ... ... ... ... ... ... \n",
"1923 20018 1 2 1 0.0 0.0 \n",
"12701 100025 10 1 4 72.0 152.0 \n",
"1579 10139 2 3 2 198.0 149.0 \n",
"5863 50138 5 2 3 10415.0 10139.0 \n",
"7136 50296 5 1 6 8.0 8.0 \n",
"\n",
" Percent_Hosp Percent_State Percent_Nation \n",
"5380 0.0000 0.0000 0.0000 \n",
"2823 0.0004 0.0003 0.0004 \n",
"12310 0.0000 0.0000 0.0000 \n",
"9535 0.0312 0.0262 0.0270 \n",
"10433 0.0000 0.0000 0.0000 \n",
"... ... ... ... \n",
"1923 0.0000 0.0000 0.0000 \n",
"12701 0.0067 0.0033 0.0070 \n",
"1579 0.0079 0.0095 0.0069 \n",
"5863 0.5356 0.4669 0.4684 \n",
"7136 0.0004 0.0003 0.0004 \n",
"\n",
"[1357 rows x 9 columns]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_test"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"# In this step, we invoke the endpoint for a single inference. The first data row from the Test dataset is passed\n",
"# to the endpoint for prediction. The predicted value is returned in the key value pair.\n",
"\n",
"# result = llearner_predictor.predict(x_test.values[0].astype('float32'))\n",
"# print(result)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"llearner_predictor.serializer = CSVSerializer()\n",
"llearner_predictor.deserializer = JSONDeserializer()"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'predictions': [{'score': 55.096778869628906}]}"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"llearner_predictor.predict(\n",
" x_test.iloc()[0].tolist(), initial_args={\"ContentType\": \"text/csv\"}\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"all_predictions = [\n",
" llearner_predictor.predict(\n",
" x_test.iloc()[i].tolist(), initial_args={\"ContentType\": \"text/csv\"}\n",
" )\n",
" for i in range(0, x_test.shape[0])\n",
"]\n",
"all_predictions_scores = [\n",
" all_predictions[i][\"predictions\"][0][\"score\"]\n",
" for i in range(0, len(all_predictions))\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"matplotlib.pyplot.scatter(y_test[\"Avg_Hosp\"], all_predictions_scores)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once you are finished testing, clean up the endpoint"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"llearner_predictor.delete_endpoint()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Summary\n",
"We see how the SageMaker built-in Linear Learner algorithm is used to train machine learning model and use this model for inference. The steps show how Jupyter notebooks in SageMaker can be used for build, train and deployment of machine learning models and evaluation of metrics from the model’s performance. This approach can be used in a wide variety of use cases at scale."
]
}
],
"metadata": {
"instance_type": "ml.m5.4xlarge",
"kernelspec": {
"display_name": "conda_python3",
"language": "python",
"name": "conda_python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
}
},
"nbformat": 4,
"nbformat_minor": 4
}