Skip to content

Instantly share code, notes, and snippets.

@a-laughlin
Last active September 23, 2019 03:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save a-laughlin/2fcd99134e9cdbde3bc9337da83134d7 to your computer and use it in GitHub Desktop.
Save a-laughlin/2fcd99134e9cdbde3bc9337da83134d7 to your computer and use it in GitHub Desktop.
3022 2019 Spring Project
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "3022 2019 Spring Project",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [
"wqQIK2tcgDCu"
],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "bwOg75IfnHt2",
"colab_type": "text"
},
"source": [
"## Table of Contents"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KGkDBG6LnDAJ",
"colab_type": "toc"
},
"source": [
">>[Deliverable 1 (4/16)](#scrollTo=2ZAxdSSHDTiN)\n",
"\n",
">>>[Problem Overview](#scrollTo=Qj87keTcCL2c)\n",
"\n",
">>>[Data Description](#scrollTo=elh1jAL_Cs2J)\n",
"\n",
">>>>[Data Factors](#scrollTo=F9MNxek86tan)\n",
"\n",
">>>[Exploratory Data Analysis](#scrollTo=4tcxwqg3e2d4)\n",
"\n",
">>>>[Libraries and Utilities](#scrollTo=EbwV1-7zhFe2)\n",
"\n",
">>>>[Data](#scrollTo=wqQIK2tcgDCu)\n",
"\n",
">>>>[Data Format](#scrollTo=K1BfBtze6-MU)\n",
"\n",
">>>>[Initial Data Frame](#scrollTo=JbSQweRw3WSL)\n",
"\n",
">>>>[Plotting Data Factors](#scrollTo=jODo1R8k7Zoj)\n",
"\n",
">>>>[Data Transformation and Cleaning](#scrollTo=toCobi-i8FRV)\n",
"\n",
">>>>[Important Notes](#scrollTo=NYfz6ICjrTi1)\n",
"\n",
">>>>[Planning](#scrollTo=rh_uQsRSoKMN)\n",
"\n",
">>>>[Anticipated Difficulties](#scrollTo=aZyC41PM2Owc)\n",
"\n",
">>[Main Analysis](#scrollTo=9UDV3UwsDTiR)\n",
"\n",
">>>[Continuing Exploratory Data Analysis](#scrollTo=fKXwugQKzLAc)\n",
"\n",
">>>[Data Prep](#scrollTo=2-sDPVTYzUMR)\n",
"\n",
">>>[Compare Model Parameters](#scrollTo=WMCZIyyfzhFB)\n",
"\n",
">>[Results](#scrollTo=58J5_lvB8tMO)\n",
"\n",
">>[Sources](#scrollTo=7bWRq89WFX29)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "2ZAxdSSHDTiN"
},
"source": [
"## Deliverable 1 (4/16)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Qj87keTcCL2c",
"colab_type": "text"
},
"source": [
"### Problem Overview"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JJ0RYyf9JFKh",
"colab_type": "text"
},
"source": [
"**Problem Statement**\n",
"\n",
"\n",
"> The Oura Ring (https://ouraring.com/) is a a heath device that tracks sleep. The device collects data while you sleep and provides you a daily sleep score indicating sleep quality. This score ranges from 0 - 100, where a score above 70 is good and a score above 85 is excellent. \n",
"\n",
"> Oura provides and explains the categories that contribute to sleep score. However, they do not supply the calculation process. This is the problem we want to solve: How can we reverse engineer sleep score?\n",
"\n",
"\n",
"**Research Goals**\n",
"\n",
"> We want to determine how the Oura Ring predicts sleep scores. We plan to identify the factors that contribute to sleep score and then isolate the factors that most influence the Oura Ring's evaluation. We will use these findings to predict the sleep score of a data set. We can assess the accuracy of our model by comparing our test data predictions to the actual test data."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZYH-IWcSwNw0",
"colab_type": "text"
},
"source": [
"**Types of Analysis**\n",
"\n",
"> We will conduct a **classification** study. Regression focuses on continuous data whereas classification **focuses on categorical or discrete data**. Classification is **used to predict a discrete class label**, whereas regression predicts a continuous quantity. Classification can also predict a continuous value, and regression can predict a discrete value. However, classification **can predict a probability for a feature** and regression can predict a discrete, integer quantity. Classification and regression have some overlapping algorithms, as well as algorithms specific to their problem type. One benefit of choosing classification is that its **predictions can be assessed for accuracy**. One of our research goals is to determine the accuracy of our prediction.\n",
"\n",
"> We will conduct a **prediction** study because we will use our model to predict the sleep score for new sleep data (predictive modeling). We will use the following prediction process:\n",
"\n",
"> - Examine and evaluate different models and parameter settings.\n",
"> - Analyze the models to select which performs the best (achieves the best predictions).\n",
"> - Use the selected model on new data to predict sleep scores.\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "elh1jAL_Cs2J"
},
"source": [
"### Data Description\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QoPUNKKt4AKl",
"colab_type": "text"
},
"source": [
"**Data Source**\n",
"\n",
"> Adam's Oura Ring collected the sleep data while he wore it from 5/11/2018 to 4/03/2018.\n",
"\n",
"> We exported the sleep data from [Oura Ring API](https://cloud.ouraring.com/docs/) on 4/03/2019. "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "F9MNxek86tan",
"colab_type": "text"
},
"source": [
"#### Data Factors"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fgJG1i66nuVJ",
"colab_type": "text"
},
"source": [
"* **summary_date**: Date when the sleep period ended. \n",
"* **period_id**: Index of the sleep period among sleep periods with the same summary_date, where 0 = first sleep period of the day. \n",
"* **timezone**: Timezone offset from UTC as minutes.\n",
"* **bedtime_start**: Local time when the sleep period started. \n",
"* **bedtime_end**: Local time when the sleep period ended. \n",
"* **duration**: Total duration of the sleep period, where duration = bedtime_end - bedtime_start.\n",
"* **total**: Total amount of sleep registered during the sleep period, where total = awake + rem + light + deep.\n",
"* **awake**: Total amount of awake time registered during the sleep period. \n",
"* **rem**: Total amount of REM sleep registered during the sleep period. \n",
"* **light**: Total amount of light (N1 or N2) sleep registered during the sleep period. \n",
"* **deep**: Total amount of deep (N3) sleep registered during the sleep period. \n",
"* **hr_lowest**: The lowest heart rate (5 minutes sliding average) registered during the sleep period. \n",
"* **hr_average**: The average heart rate registered during the sleep period. \n",
"* **hr_5min**: Average heart rate for each beginning 5 minutes of the sleep period, the first period starting from bedtime_start. \n",
"* **efficiency**: Sleep efficiency is the percentage of the sleep period spent asleep, where efficiency = 100% * total / duration.\n",
"* **onset_latency**: Detected latency from bedtime_start to the beginning of the first five minutes of persistent sleep. \n",
"* **midpoint_time**: Detected latency from bedtime.start to the beginning of the first five minutes of persistent sleep. \n",
"* **restless**: Restlessness of the sleep time, i.e. percentage of sleep time when the user was moving. \n",
"* **temperature_delta**: Skin temperature deviation from the long-term temperature average. \n",
"* **breath_average**: Average respiratory rate. \n",
"* **score**: Sleep score represents overall sleep quality during the sleep period.\n",
"It is calculated as a weighted average of sleep score contributors that\n",
"represent one aspect of sleep quality each. The sleep score contributor\n",
"values are also available as separate parameters. \n",
"* **score_total**: Represents total sleep time's contribution\n",
"for sleep quality. The value depends on age of the user - the younger,\n",
"the more sleep is needed for good score. The weight of score_total in sleep score calculation is 0.35. \n",
"* **score_rem**: Represents REM sleep time's contribution for\n",
"sleep quality. The value depends on age of the user - the younger,\n",
"the more sleep REM is needed for good score. The weight of score_rem in sleep score calculation is 0.10. \n",
"* **score_deep**: Represents deep (N3) sleep time's contribution\n",
"for sleep quality. The value depends on age of the user -\n",
"the younger, the more sleep is needed for good score. The weight of score_deep in sleep score calculation is 0.10. \n",
"* **score_efficiency**: Represents sleep efficiency's contribution for sleep\n",
"quality. The higher efficiency, the higher score. The weight of score_efficiency in sleep score calculation is 0.10. \n",
"* **score_latency**: Represents sleep onset latency's contribution for sleep quality.\n",
"A latency of about 15 minutes gives best score. Latency longer than that many indicate\n",
"problems falling asleep, whereas a very short latency may be a sign of sleep debt. The weight of score_latency in sleep score calculation is 0.10.\n",
"* **score_disturbances**: Represents sleep disturbances' contribution for sleep quality.\n",
"Three separate measurements are used to calculate this contributor value. Each of these three values has weight 0.05 in sleep score calculation:\n",
" - Wake-up count (wake_up_count) - the more wake-ups, the lower score.\n",
" - Got-up count (got_up_count) - the more got-ups, the lower score.\n",
" - Restless sleep (restless) - the more motion detected during sleep, the lower score.\n",
"* **score_alignment**: Represents circadian alignment's contribution for sleep score.\n",
"Sleep midpoint time between 12PM and 3AM gives highest score.\n",
"The more the midpoint time deviates from that range, the lower score. The weigh of score_alignment in sleep score calculation is 0.10. \n",
"* **hypnogram_5min** : A string that contains one character for each starting five minutes of the sleep period,\n",
"so that the first period starts from bedtime.start:\n",
" - '1' = deep (N3) sleep\n",
" - '2' = light (N1 or N2) sleep\n",
" - '3' = REM sleep\n",
" - '4' = awake \n",
"* **rmssd**: The average HRV calculated with rMSSD method. \n",
"* **rmssd_5min**: The average HRV (calculated using rMSSD method) for each beginning 5 minutes of the sleep period, the first period starting from bedtime_start."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4tcxwqg3e2d4",
"colab_type": "text"
},
"source": [
"### Exploratory Data Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EbwV1-7zhFe2",
"colab_type": "text"
},
"source": [
"#### Libraries and Utilities"
]
},
{
"cell_type": "code",
"metadata": {
"id": "a2w5BGZ4qAXt",
"colab_type": "code",
"colab": {}
},
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import scipy as sp\n",
"from scipy import stats\n",
"import seaborn as sns\n",
"%matplotlib inline\n",
"np.set_printoptions(\n",
" suppress=True, # print as floats instead of scientific notation\n",
" precision=4, # Number of digits of precision for floating point output\n",
" threshold=20, # Total number of array elements which trigger summarization rather than full repr \n",
" floatmode=\"maxprec_equal\", # Print at most precision fractional digits, using same # for all elements in a given array\n",
")\n",
"pd.set_option('display.expand_frame_repr', False)\n",
"pd.set_option('display.width', 1500)\n",
"\n",
"\n",
"from types import SimpleNamespace\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.datasets import make_moons, make_circles, make_classification\n",
"from sklearn.neural_network import MLPClassifier\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.svm import SVC\n",
"from sklearn.gaussian_process import GaussianProcessClassifier\n",
"from sklearn.gaussian_process.kernels import RBF\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier\n",
"from sklearn.naive_bayes import GaussianNB\n",
"from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis,LinearDiscriminantAnalysis\n",
"from sklearn.metrics import confusion_matrix,precision_score\n",
"from sklearn.metrics.classification import precision_recall_fscore_support\n",
"from sklearn.utils.sparsefuncs import count_nonzero\n",
"from sklearn.model_selection import RandomizedSearchCV,GridSearchCV\n",
"from sklearn import __version__\n",
"from time import time;\n",
"from IPython.display import display\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"# warnings.filterwarnings('error')\n",
"# warnings.filterwarnings(action='once')\n",
"\n",
"# Functional programming with Python + Pandas + Jupyter still feels awkward and incomplete to me. Works for now.\n",
"if 'pipe' not in locals():\n",
" !pip install -U -q funcy;\n",
"\n",
"from funcy import autocurry, juxt, rcompose as pipe, merge,identity;\n",
"map = autocurry(lambda fn,data:[fn(d) for d in data]);\n",
"\n",
"from matplotlib.gridspec import GridSpec\n",
"def enum_axes(r=1,c=1,w=5,h=5,subplots_adjust_kw=dict(left=0.125,right=0.9,bottom=0.1,top=0.9,wspace=0.1,hspace=0.1)):\n",
" \"\"\"data=[[],[]] or [], r=rows,c=cols,w=cell_width,h=cell_height\"\"\"\n",
" fig = plt.figure()\n",
" spec = GridSpec(ncols=c, nrows=r, figure=fig)\n",
"\n",
" fig.set_figheight(r * h)\n",
" fig.set_figwidth(c * w)\n",
"\n",
" zipped=[(fig.add_subplot(spec[ri, ci]),ri,ci) for ci in range(c) for ri in range(r)]\n",
" fig.tight_layout()\n",
" fig.subplots_adjust(**subplots_adjust_kw)\n",
" # subplots_adjust_kw\n",
" # left = 0.125 # the left side of the subplots of the figure\n",
" # right = 0.9 # the right side of the subplots of the figure\n",
" # bottom = 0.1 # the bottom of the subplots of the figure\n",
" # top = 0.9 # the top of the subplots of the figure\n",
" # wspace = 0.2 # the amount of width reserved for space between subplots,\n",
" # # expressed as a fraction of the average axis width\n",
" # hspace = 0.2 # the amount of height reserved for space between subplots,\n",
" # # expressed as a fraction of the average axis height\n",
" return zipped\n",
"\n",
"\n",
"def classif_obj_factory(o=dict(),**kw):\n",
" o=merge(dict(**o),kw)\n",
" o['df'] = o.get('df',np.atleast_2d([]))\n",
" assert o['df'].ndim == 2\n",
" o['train_x'] = o.get('train_x',np.atleast_2d([]))\n",
" assert o['train_x'].ndim == 2\n",
" o['train_y'] = o.get('train_y',np.array([]))\n",
" assert o['train_y'].ndim == 1\n",
" o['test_x'] = o.get('test_x',np.atleast_2d([]))\n",
" assert o['test_x'].ndim == 2\n",
" o['test_y'] = o.get('test_y',np.array([]))\n",
" assert o['test_y'].ndim == 1\n",
" o['possible_labels'] = o.get('possible_labels',np.array([]))\n",
" assert o['possible_labels'].ndim == 1\n",
" o['readable_labels'] = o.get('readable_labels',np.array([]))\n",
" assert o['readable_labels'].ndim == 1\n",
" o['test_labels_actual'] = o.get('test_labels_actual',np.array([]))\n",
" assert o['test_labels_actual'].ndim == 1\n",
" o['test_labels_predicted'] = o.get('test_labels_predicted',np.array([]))\n",
" assert o['test_labels_predicted'].ndim == 1\n",
" o['confusion_matrix'] = o.get('confusion_matrix', np.atleast_2d([]))\n",
" assert o['confusion_matrix'].ndim == 2\n",
" o['metrics'] = o.get('metrics', np.atleast_2d([]))\n",
" assert o['metrics'].ndim == 2\n",
" o['total'] = o.get('total', np.int64(0))\n",
" assert type(o['total']) == np.int64\n",
" o['precision'] = o.get('precision', np.float64(0))\n",
" assert type(o['precision']) == np.float64\n",
" o['recall'] = o.get('recall', np.float64(0))\n",
" assert type(o['recall']) == np.float64\n",
" return o"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "wqQIK2tcgDCu",
"colab_type": "text"
},
"source": [
"#### **Data**"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "cT8bgfeVYHdR",
"colab": {}
},
"source": [
"\n",
"if 'data' not in locals():\n",
" data=['...']\n",
"\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "K1BfBtze6-MU",
"colab_type": "text"
},
"source": [
"#### Data Format"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LVOMJANg7B4V",
"colab_type": "text"
},
"source": [
"```json\n",
"{\n",
" \"summary_date\": \"2017-11-05\",\n",
" \"period_id\": 0,\n",
" \"is_longest\": 1,\n",
" \"timezone\": 120,\n",
" \"bedtime_start\": \"2017-11-06T02:13:19+02:00\",\n",
" \"bedtime_end\": \"2017-11-06T08:12:19+02:00\",\n",
" \"score\": 70,\n",
" \"score_total\": 57,\n",
" \"score_disturbances\": 83,\n",
" \"score_efficiency\": 99,\n",
" \"score_latency\": 88,\n",
" \"score_rem\": 97,\n",
" \"score_deep\": 59,\n",
" \"score_alignment\": 31,\n",
" \"total\": 20310,\n",
" \"duration\": 21540,\n",
" \"awake\": 1230,\n",
" \"light\": 10260,\n",
" \"rem\": 7140,\n",
" \"deep\": 2910,\n",
" \"onset_latency\": 480,\n",
" \"restless\": 39,\n",
" \"efficiency\": 94,\n",
" \"midpoint_time\": 11010,\n",
" \"hr_lowest\": 49,\n",
" \"hr_average\": 56.375,\n",
" \"rmssd\": 54\n",
" \"breath_average\": 13,\n",
" \"temperature_delta\": -0.06,\n",
" \"hypnogram_5min\": \"443432222211222333321112222222222111133333322221112233333333332232222334\",\n",
" \"hr_5min\": [0, 53, 51, 0, 50, 50, 49, 49, 50, 50, 51, 52, 52, 51, 53, 58, 60, ...],\n",
" \"rmssd_5min\": [0, 0, 62, 0, 75, 52, 56, 56, 64, 57, 55, 78, 77, 83, 70, 35, 21, ...]\n",
"}\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JbSQweRw3WSL",
"colab_type": "text"
},
"source": [
"#### Initial Data Frame"
]
},
{
"cell_type": "code",
"metadata": {
"id": "vBEyF0t_3Fg0",
"colab_type": "code",
"colab": {}
},
"source": [
"# Create initial data frame\n",
"\n",
"def data_to_dataframe(data):\n",
" mins_keys = [\"hr_5min\",\"rmssd_5min\",\"hypnogram_5min\"]\n",
" days_keys = list(set(data[0].keys()) - set(mins_keys))\n",
"\n",
" days_dict = dict(**{k:[] for k in days_keys})\n",
" mins_dict = dict(summary_date=[],minute=[],**{k:[] for k in mins_keys})\n",
" \n",
" for sleep in data:\n",
"\n",
" for k in days_keys:\n",
" days_dict[k].append(sleep[k]);\n",
"\n",
" for date_key in ['bedtime_start','bedtime_end','summary_date']:\n",
" days_dict[date_key][-1]=pd.to_datetime(days_dict[date_key][-1])\n",
" \n",
" days = pd.DataFrame(days_dict)\n",
" days = days.reindex(sorted(days.columns,reverse=True), axis=1)\n",
"\n",
" # mins = pd.DataFrame(mins_dict)\n",
" # mins.summary_date = pd.to_datetime(mins.summary_date,yearfirst=True,utc=True)\n",
" # mins.minute = pd.to_datetime(mins.minute,yearfirst=True,utc=True)\n",
" # mins.hypnogram_5min=mins.hypnogram_5min.fillna('0').apply(int)\n",
" # mins = mins.set_index('minute')\n",
" return classif_obj_factory(dict(df=days));\n",
"o = data_to_dataframe(data)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "vYiHUUVw6_fB",
"colab_type": "code",
"colab": {}
},
"source": [
"def set_dtypes(o):\n",
" days = o['df'].copy()\n",
" days.summary_date = pd.to_datetime(days.summary_date,yearfirst=True,utc=True)\n",
" days.bedtime_start = pd.to_datetime(days.bedtime_start,yearfirst=True,utc=True)\n",
" days.bedtime_end = pd.to_datetime(days.bedtime_end,yearfirst=True,utc=True)\n",
" days.summary_date = days.summary_date.apply(lambda d:d.timestamp())\n",
" days.bedtime_start = days.bedtime_start.apply(lambda d:d.timestamp())\n",
" days.bedtime_end = days.bedtime_end.apply(lambda d:d.timestamp())\n",
" days = days.set_index('summary_date')\n",
" return classif_obj_factory(o,df=days)\n",
"o = set_dtypes(o)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "jODo1R8k7Zoj",
"colab_type": "text"
},
"source": [
"#### Plotting Data Factors"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6_DxcGYgwmjl",
"colab_type": "text"
},
"source": [
"> We will start by creating **boxplots** for our factors. This is essential for our exploratory data analysis. Our data set has many factors to consider. A boxplot chart will help us to both understand and compare our categories. With our particular data set, we need more information than what we can observe from measurements such as the mean, median, and mode. We are concerned with the spread of our data: the variability and dispersion. \n",
"\n",
"> Boxplots have advantages over other graphing methods such as histograms. They work well for datasets with many factors because they do not take up a lot of space. This will help with visual interpretation, comparison, and analysis."
]
},
{
"cell_type": "code",
"metadata": {
"id": "dX-rJpYR7tCC",
"colab_type": "code",
"outputId": "e25d6bd7-428f-49f3-a3c9-ba11ac094fa0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 391
}
},
"source": [
"ax = o['df'].plot.box(figsize=(6,6),vert=False);\n",
"ax.vlines([0],ymin=0,ymax=100,linestyles='dotted',colors='grey');"
],
"execution_count": 278,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n83vf+x4Affr0yWTTzjnXoXg2bBuT1N3MtkrKB54jvJj6n41tx7NhnXOu8Twbtv14KE5L2Q24pimF\nsjk++OADAPbcc8/WPKxzzrUrHXXqSJ3inMd/SVpb42dSGvtOlnR5JvtjZkPji6L7mtnsFH39ZiaP\nl6ykpIS99tqLY+8/FkmUlJS01KGcc65dy7liGb0VC1TyT9U8xixK3ekNtEixLCkpoaysjGHDhgEw\natQoysrKvGA651wKuVosm5Twk0xSP0nPSCqV9KCk/SR9RtKauP4oSSapIH7/i6Q960n9OSlplPuC\npL2B64ET4rJLM/kHKCsrY9SoUTz++OMAzJ8/v6pgOuecqy5Xi2VTE36S/R8w0cxKgDLgx2b2JtBN\n0j7ACcBqQrE7BHjTzD6g7tSfy4GLzaxf3PdD4ErgqTjy/WXNDjQnwQdg1qxZbN26tdp355xztWXL\n5cbW1tSEHwDidI59zWxZXHQXcH/8vBIYDJwIXAucSggZeCquryv1ZwVwo6Q5wANm9vekbVJqToIP\nwLhx4zjjjDNC7+J355xzteVqsWxqwk86niSMDA8hZMpOBAx4OK5PmfoDXC/pYWAksELSiAz0pU7F\nxcUsWLCAbdu2wbfg9NNPZ8GCBRQXF7fkYZ1zrl3K1cuwzWJm7wJbJJ0QF30LSIwynwLOA16Nma+V\nhAK4PK5PpP4A4d5n/H2YmZWZ2VRC+MGRwPvA3i1xDqWlpRQXF/PYY48BVBXK0tLSljicc861a7k6\nssyE84HpkvYE/gpcAGBmGxSunz4Zt1sOfNbMtsTvdaX+/EDSMOBTQlLPn+LnnZLWAbNT3bdsjtLS\nUt59910AeliPTDbtnHMdiif4dBBNTfCZPXs2AGPHjs1sh5xzrh3wBB+XlhNPPLGtu+Ccc1nPi2UK\nMc3nrBqL708OLugoPve5z7V1F5xzLuvlzAM+klamu62ZTYnzHfcFhtdM+GlNkn7Uku1v2bKF4rv8\nCVjnnKtPzhRLMxvU1n1oohYtlvPnz2/J5p1zrkPImWIpaWv8faCkJ2OEXHnS9I+G9r8sbl8u6Qdx\nWW9J62tG58V1A2MU3lpJN0gqj8s7x++r4vr/rKtfkq4H9ojL5rTE32Xo0KEt0axzznUoOVMsk3wT\nWBwvsx4FrG1geyT1J0wNORY4DrhQ0hfj6rqi8+4E/jMeZ2dSc+MIL3geCAyMbR2aql9mdiXwYbwM\n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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bADaZb2R7yUi",
"colab_type": "text"
},
"source": [
"**Observations:**\n",
"This box plot above is unhelpful due to the large values of unix time stamps. We will create another after further data cleanup and z scoring the values.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "toCobi-i8FRV",
"colab_type": "text"
},
"source": [
"#### Data Transformation and Cleaning"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "y6ErEAgR8NCV",
"colab_type": "text"
},
"source": [
"**Data Transformation**\n",
"\n",
"> We have already transformed some data. We converted the 5-minutes increment data to a separate table. We have not found a reason to transform any other data at this point in our analysis.\n",
"\n",
"**Data Cleaning**\n",
"> We need to clean the data set. These are the steps we have taken and will continue to follow to clean the data:\n",
"> - The \"minute\" intervals such as `hr_5min` do not translate directly to day-indexed dataframes. One option to make them compatible is the CSV approach - duplicating all the \"day\" data (e.g., score, timezone) for each \"minute\" interval. Another option is the database approach - creating one dataframe for days and another for minutes, with a common key to join on if needed. We chose the database approach to save a few bytes and make it easier to reason about day columns.\n",
"> - One mins list ocassionally contains fewer values than the others. To compensate for this, we loop over the longest list length and fill any missing values with None. hypnogram_5min appears to be the reason that this is happening. It is intermittently short by one integer somewhere. We are not sure where the intermittently missing number comes from, so that might impact its prediction usefulness. We will determine this later.\n",
"> - Days and minutes will need to be converted to timestamps. \n",
"> - We will need to fill in missing hr_5min data points.\n",
"> - `hypnogram_5min` was (oddly) a string instead of integer values. We are currently not sure why. We have converted it to a list of integers. However, it still shows up as a list of floats when printing. This may be due to the \"None\" values. We will come back to this.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NYfz6ICjrTi1",
"colab_type": "text"
},
"source": [
"#### Important Notes"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "po9LYSk2CAOK",
"colab_type": "text"
},
"source": [
"* There are currently 117 days containing 11345 biometric data sample means averaged at 5 minute intervals during sleep.\n",
"* Date range: 2018/11/05 to 2019/03/04\n",
"* We have 30 - 60 extra days if needed given the last export on March 4th.\n",
"* `days` contains 32 columns including the \"score\" column that we will try to predict\n",
"* `mins` contains 4 columns \\[\"day\", \"hr_5min\", \"rmssd_5min\", \"hypnogram_5min\"]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rh_uQsRSoKMN",
"colab_type": "text"
},
"source": [
"####Planning"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bTjRAOOHoV-L",
"colab_type": "text"
},
"source": [
"1) We need to finish our Exploratory Data Analysis and then start our main classification study this week. We will try a few models to determine which factors are the best predictors of sleep score. We will leave these models in our final project and compare their prediction accuracy for sleep score. We will also determine the limitations of each model in terms of prediction accuracy. The lectures and readings on Classification include methods that we want to explore and test out over the next week.\n",
"\n",
"2) When we are finished with our main analysis, we need to plan our 5-10 minute video. We will write a video script that summarizes our problem, the methods and analysis used, and then our final project results.\n",
"\n",
"3) We will add our work to a Github respository before our final submission.\n",
"\n",
"4) We will continue to observe the factors that we think will be more important than others during our main analysis. These consist of the following:\n",
"* Sleep duration\n",
"* Average heart rate\n",
"* Efficiency\n",
"* Restfulness\n",
"* REM sleep\n",
"* Deep sleep\n",
"* Latency"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aZyC41PM2Owc",
"colab_type": "text"
},
"source": [
"#### Anticipated Difficulties"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KCkZloG--f3T",
"colab_type": "text"
},
"source": [
"* We need to consider the balance of accuracy and interpretability. The most accurate model may be difficult to interpret due to complexity. The most interpretable model may be inaccurate due to simplicity. We value accuracy more than interpretation so we can anticipate a complex interpretation.\n",
"\n",
"* Prediction studies can result in overfitting a model. We will keep this in mind, especially if the test and training data are similar.\n",
"\n",
"* We may encounter challenges when cleaning the data (see Data Cleaning section).\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "9UDV3UwsDTiR"
},
"source": [
"## Main Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fKXwugQKzLAc",
"colab_type": "text"
},
"source": [
"### Continuing Exploratory Data Analysis"
]
},
{
"cell_type": "code",
"metadata": {
"id": "yDsVOhcqUk4y",
"colab_type": "code",
"outputId": "36d6dd08-f3b5-4e9f-8cde-5cd9ee554b58",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"def remove_irrelevant_features(o):\n",
" dropped = ['period_id','timezone','is_longest']\n",
" print('dropped',dropped);\n",
" return classif_obj_factory(o,df=o['df'].drop(dropped, axis=1));\n",
"o = remove_irrelevant_features(o)"
],
"execution_count": 279,
"outputs": [
{
"output_type": "stream",
"text": [
"dropped ['period_id', 'timezone', 'is_longest']\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kQgOTzAVas2j",
"colab_type": "text"
},
"source": [
"Removing summary features seemed like a good idea, until realizing that some summarize data that is unavailable other features, so we kept them in."
]
},
{
"cell_type": "code",
"metadata": {
"id": "7z22NyA78zQ3",
"colab_type": "code",
"colab": {}
},
"source": [
"# def remove_features_that_summarize_other_features(o):\n",
"# dropped = [c for c in o['df'].columns if c.startswith('score_')]\n",
"# print('dropped',dropped);\n",
"# return classif_obj_factory(o,df=o['df'].drop(dropped, axis=1));\n",
"# o = remove_features_that_summarize_other_features(o)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "gdK9O39rbD_4",
"colab_type": "text"
},
"source": [
"remove colinearity for logistic_regression, lda, and qda"
]
},
{
"cell_type": "code",
"metadata": {
"id": "AvdurKQk7Tqr",
"colab_type": "code",
"outputId": "1dc8f7d9-f0f9-47db-856d-f5a7f3d8fecc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"def remove_colinear_features(o):\n",
" # from https://chrisalbon.com/machine_learning/feature_selection/drop_highly_correlated_features/\n",
" df = o['df']\n",
" # omit score temporarily\n",
" score = df.score\n",
" df=df.drop(['score'],axis=1)\n",
" # Create correlation matrix\n",
" corr_matrix = df.corr().abs()\n",
"\n",
" # Select upper triangle of correlation matrix\n",
" upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(np.bool))\n",
" # Find index of feature columns with correlation greater than 0.90\n",
" dropped = [column for column in upper.columns if any((upper[column] > 0.90))]\n",
" print('dropped',dropped);\n",
" df['score']=score;\n",
" return classif_obj_factory(o,df=df.drop(dropped, axis=1))\n",
"o = remove_colinear_features(o)"
],
"execution_count": 281,
"outputs": [
{
"output_type": "stream",
"text": [
"dropped ['score_total', 'midpoint_at_delta', 'efficiency', 'duration', 'deep', 'bedtime_start_delta', 'bedtime_end_delta', 'bedtime_end']\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "LNNiVuJqUm6g",
"colab_type": "code",
"colab": {}
},
"source": [
"def set_labels(o):\n",
" df = o['df'].copy()\n",
" df.score = df.score.floordiv(10)*10\n",
" return classif_obj_factory(o,\n",
" possible_labels=np.arange(0,101,10),\n",
" readable_labels=np.arange(0,101,10),\n",
" df = df\n",
" );\n",
"o = set_labels(o)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "eGb9SZmkUozX",
"colab_type": "code",
"colab": {}
},
"source": [
"def numeric_features_to_zscores(o):\n",
" df=o['df'].copy()\n",
" df = df.loc[:,df.std(ddof=0)!=0]\n",
" df = (df-df.mean())/df.std();\n",
" return classif_obj_factory(o,df=df,df_unscaled=o['df'])\n",
"o = numeric_features_to_zscores(o)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "VCLsQiHxbKNn",
"colab_type": "text"
},
"source": [
"The box plots look better with the features transformed to z-scores. Interestingly, many of the summary features (starting with \"score_\") have low-end outliers."
]
},
{
"cell_type": "code",
"metadata": {
"id": "F8lImY2epRBE",
"colab_type": "code",
"outputId": "a22c1190-1507-451c-92e7-cdc473d88646",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 378
}
},
"source": [
"ax = o['df'].plot.box(figsize=(6,6),vert=False);\n",
"ax.vlines([0],ymin=0,ymax=100,linestyles='dotted',colors='grey');"
],
"execution_count": 284,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcgAAAFpCAYAAAAY4bihAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xuc1HXd///HiwV3OQklmgcuhTRs\nnV1DwfJABaWQZrCpaViXksQVGqulXqFtv7IDJBXUFaXb5Rc5qLslpohoirZ4WEVFBDltHhIxL7Mk\nAznKCq/fH+/3LLPD7O4cPjOfz+y+7rfb3Jj5zGfen9fMKC8+h3k/RVUxxhhjTGvdwi7AGGOMiSJr\nkMYYY0wK1iCNMcaYFKxBGmOMMSlYgzTGGGNSsAZpjDHGpGAN0hhjjEnBGqQxxhiTgjVIY4wxJgVr\nkMYYY0wK3cMuwGRvwIABOmjQoLDLMOYA+/btA6BbN/s3uImelStXblbVQztazxpkERs0aBDPPfdc\n2GUYY0xREZFN6axn/7wzxgSuqamJpqamsMswJie2B2mMCdwzzzwDQHl5eciVGJM9a5DGmEBVzq9k\n219uBOCG6+4PZMx+PXvwwg9GBzKWMemyBhkyEemuqu+HXUdXVl1dzS233MJ7771HaWkpkyZNYvbs\n2TmNeeKJJ7J27dqWx5WVlaxZsybr8caMGcPDDz+MqiIinHXWWTz00EM51ZhPr934+UDHGxRQozUm\nE3YOMgsi0ltE7heRF0RknYhcJCKniMhTftmzItJXRMpEZK6IrBWRVSIyyr9+gogsFpEG4M9+2X+L\nyAoRWSMiPwz1DXYh1dXV1NbWMn36dHbs2MH06dOpra2luro66zHjzXHs2LG8/fbbjB07lrVr13Li\niSdmNd6YMWNYunQpkydPZsuWLUyePJmlS5cyZsyYrGtMJCKBjJNo3bp1rFu3LvBxg5KP92w6IVW1\nW4Y34HzgloTH/YBXgVP844Nxe+fXALf6ZR8FXgfKgAnAG8AH/XOjgf8FBPePliXApzqqY9iwYWpy\nU1paqjNnzmy1bObMmVpaWpr1mICOHTu21bKxY8eq+98tcyKil19+eatll19+uYpI1jUmyrautlTM\nq9C5c+fq3LlzAxvzmKlLAhtLNfj3bIoL8Jym8Xe9uHVNJkRkCLAU+AOumW0BalX1jKT17gFmq2qD\n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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "24DuR1ZEGtbx",
"colab_type": "code",
"colab": {}
},
"source": [
"# pairplots aren't useful with this many features\n",
"\n",
"# pp = sns.pairplot(\n",
"# data=o['df']\n",
"# height=1.8,\n",
"# hue='score',\n",
"# palette=\"Greens\",\n",
"# diag_kind=\"hist\",\n",
"# diag_kws={\"linewidth\":0.0}\n",
"# )\n",
"# for ax in pp.axes.flat:\n",
"# ax.set_ybound(-5,5);\n",
"# ax.set_xbound(-5,5);\n",
"# pp._legend.remove();\n",
"# plt.show();"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "2-sDPVTYzUMR",
"colab_type": "text"
},
"source": [
"### Data Prep"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CDAdb0gqb7BK",
"colab_type": "text"
},
"source": [
"We'll split on train/test by evens and odds to get a diverse range of data for samples. Since weeks are 7 days, the even/odd split avoids bias from weekly cycles."
]
},
{
"cell_type": "code",
"metadata": {
"id": "nsmN7-YsUpj8",
"colab_type": "code",
"colab": {}
},
"source": [
"def split_df_to_train_test(o):\n",
" df = o['df'].copy()\n",
" df['score']=o['df_unscaled'].score\n",
" test=df.iloc[::2]\n",
" train=df.iloc[1::2]\n",
" assert(len(test)==len(train))\n",
" return classif_obj_factory(o,\n",
" train_x=train.drop('score',axis=1),\n",
" train_y=train.score,\n",
" test_x=test.drop('score',axis=1),\n",
" test_y=test.score\n",
" )\n",
"o = split_df_to_train_test(o);"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "WMCZIyyfzhFB",
"colab_type": "text"
},
"source": [
"### Compare Model Parameters"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "whQbjLqMWlCZ",
"colab_type": "text"
},
"source": [
"To select the best parameters for each model, we'll use sklearn's GridSearchCV to run each model with many parameter combinations."
]
},
{
"cell_type": "code",
"metadata": {
"id": "7SxDpwnIUqVV",
"colab_type": "code",
"colab": {}
},
"source": [
"def find_best_params(classifier):\n",
" import sklearn.metrics;\n",
" scorer = sklearn.metrics.make_scorer(sklearn.metrics.f1_score,average='micro',greater_is_better=True)\n",
" # scorer = sklearn.metrics.make_scorer(custom_f1_loss_fn,greater_is_better=True)\n",
" def apply(o):\n",
" modelclass,params = classifier\n",
" model = modelclass()\n",
" grid = GridSearchCV(\n",
" estimator=model, \n",
" param_grid=params,\n",
" cv=2,\n",
" iid=True,\n",
" return_train_score=True,\n",
" scoring = {\"f1\":scorer},\n",
" refit='f1'\n",
" );\n",
" # mutates grid\n",
" grid.fit(o['train_x'], o['train_y'])\n",
" return classif_obj_factory(\n",
" o,\n",
" model_grid = grid,\n",
" model_name = type(grid.best_estimator_).__name__\n",
" );\n",
" return apply"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "8MG5OQ4VWz__",
"colab_type": "text"
},
"source": [
"The models we'll select include:\n",
"- KNeighborsClassifier: classify by comparing features with neighbors' features using \"distance\" metrics. We chose [distance metrics](https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.html#sklearn.neighbors.DistanceMetric) euclidian and chebyshev.\n",
"- LinearDiscriminantAnalysis: classify by estimating features' probability of belonging to a class \n",
"- DecisionTreeClassifier: branch combinations to find those that best predict the score\n",
"- RandomForestClassifier: build many decision trees to counteract individual trees tendency to overfit\n",
"- AdaBoostClassifier: ran with defaults to test output\n",
"- GaussianNB: ran with defaults to test output"
]
},
{
"cell_type": "code",
"metadata": {
"id": "scZkkzrbWflc",
"colab_type": "code",
"colab": {}
},
"source": [
"os = juxt(*map(find_best_params,[\n",
" [KNeighborsClassifier,{\"n_neighbors\": np.arange(1, 31, 2),\t\"metric\": [\"euclidean\", \"chebyshev\"]}],\n",
" [DecisionTreeClassifier,{\"max_depth\":np.arange(1, 11),\"max_features\":np.arange(1,11)}],\n",
" [RandomForestClassifier,{\"n_estimators\":[20],\"max_depth\":np.arange(1, 11),\"max_features\":np.arange(1,11)}],\n",
" [AdaBoostClassifier,{}],\n",
" [GaussianNB,{}],#\"Naive Bayes\"\n",
" [LinearDiscriminantAnalysis,{}],#\"QDA\"\n",
"]))(o)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "zsQdg-C2kRuc",
"colab_type": "text"
},
"source": [
"Models we attempted but didn't use:\n",
"- QuadraticDiscriminantAnalysis: Didn't work due to data sparsity in some classes\n",
"- LogisticRegression: Didn't work on this dataset (threw errors), possibly due to the multiple classes"
]
},
{
"cell_type": "code",
"metadata": {
"id": "tAw9crJTUsPm",
"colab_type": "code",
"colab": {}
},
"source": [
"def get_predictions(o):\n",
" return classif_obj_factory(o,\n",
" test_labels_actual = o['test_y'],\n",
" test_labels_predicted = o['model_grid'].best_estimator_.predict(o['test_x'])\n",
" );\n",
"os = map(get_predictions)(os)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "j1F9X3-EUtup",
"colab_type": "code",
"colab": {}
},
"source": [
"def get_classification_metrics(o):\n",
" r = SimpleNamespace(**o)\n",
" r.confusion_matrix = pd.DataFrame(columns=r.possible_labels,index=r.possible_labels,data=np.zeros((len(r.possible_labels),len(r.possible_labels))))\n",
" r.confusion_matrix.index.name = 'Actual'\n",
" r.confusion_matrix.columns.name = 'Predicted'\n",
" r.metrics=pd.DataFrame(index=r.possible_labels,columns=['actual','predicted','true_pos','true_neg','false_pos','false_neg'],data=np.zeros((len(r.possible_labels),6)))\n",
" for actual,predicted in zip(r.test_labels_actual,r.test_labels_predicted):\n",
" r.confusion_matrix.loc[predicted,actual]+=1\n",
" r.metrics.loc[actual].actual+=1\n",
" r.metrics.loc[predicted].predicted+=1\n",
" if(actual==predicted):\n",
" r.metrics.loc[actual].true_pos+=1;\n",
" r.metrics.loc[actual].true_neg+=1;\n",
" else:\n",
" r.metrics.loc[predicted].false_pos+=1;\n",
" r.metrics.loc[actual].false_neg+=1;\n",
" r.present_metrics = r.metrics.query('actual > 0 or predicted > 0')\n",
" r.metrics['precision'] = (r.present_metrics.true_pos / (r.present_metrics.true_pos + r.present_metrics.false_pos) ).fillna(0)\n",
" r.metrics['recall'] = (r.present_metrics.true_pos / (r.present_metrics.true_pos + r.present_metrics.false_neg) ).fillna(0)\n",
" r.metrics['true_pos_rate'] = r.metrics.recall\n",
" r.metrics['false_pos_rate'] = 1 - r.metrics.true_pos_rate\n",
" r.metrics['f1'] = 2 * ((r.metrics.precision * r.metrics.recall) / (r.metrics.precision + r.metrics.recall))\n",
" r.stats_df = pd.DataFrame(r.model_grid.cv_results_)[['params','mean_train_f1','mean_test_f1']].set_index('params')\n",
" r.stats_df = r.stats_df.sort_values('mean_test_f1',ascending=False)\n",
" r.f1_from_cv_results = r.stats_df.mean_test_f1.iloc[0]\n",
" r.f1 = np.float64(r.metrics.f1.mean())\n",
" \n",
"# assert o['classifier'].best_score_ == r.f1\n",
" r.precision = np.float64(r.metrics.precision.mean())\n",
" r.recall = np.float64(r.metrics.recall.mean())\n",
"\n",
" p,rec,f,s = precision_recall_fscore_support(r.test_labels_actual,r.test_labels_predicted)\n",
" pbar,recbar,fbar,sbar = np.mean([p,rec,f,s],axis=1)\n",
"# print('precision vs sklearn precision',r.precision, pbar)\n",
"# print('recall vs sklearn recall',r.recall, recbar)\n",
" assert(pbar==r.precision)\n",
" assert(recbar==r.recall)\n",
" return classif_obj_factory(o,**r.__dict__)\n",
"os = map(get_classification_metrics)(os);"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-G5yC2KqUvb4",
"colab_type": "code",
"colab": {}
},
"source": [
"def sort_by_best_score(os):\n",
" return sorted(os,key=lambda o:o['f1'],reverse=True);\n",
"os = sort_by_best_score(os)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "09XKTtV0U1hn",
"colab_type": "code",
"outputId": "d1a89287-fe1a-4c4a-beca-1f915237276a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"# best parameter combinations for one classifier\n",
"otemp = os[3]\n",
"stats_df = otemp['stats_df']\n",
"stats_df.columns.name=otemp['model_name'];\n",
"stats_df.head(10)"
],
"execution_count": 292,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>RandomForestClassifier</th>\n",
" <th>mean_train_f1</th>\n",
" <th>mean_test_f1</th>\n",
" </tr>\n",
" <tr>\n",
" <th>params</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>{'max_depth': 10, 'max_features': 2, 'n_estimators': 20}</th>\n",
" <td>0.988636</td>\n",
" <td>0.611765</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 1, 'max_features': 7, 'n_estimators': 20}</th>\n",
" <td>0.727827</td>\n",
" <td>0.611765</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 2, 'max_features': 7, 'n_estimators': 20}</th>\n",
" <td>0.835089</td>\n",
" <td>0.588235</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 9, 'max_features': 4, 'n_estimators': 20}</th>\n",
" <td>0.987805</td>\n",
" <td>0.588235</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 8, 'max_features': 10, 'n_estimators': 20}</th>\n",
" <td>0.987805</td>\n",
" <td>0.588235</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 8, 'max_features': 9, 'n_estimators': 20}</th>\n",
" <td>0.988636</td>\n",
" <td>0.588235</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 6, 'max_features': 2, 'n_estimators': 20}</th>\n",
" <td>1.000000</td>\n",
" <td>0.588235</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 5, 'max_features': 2, 'n_estimators': 20}</th>\n",
" <td>0.987805</td>\n",
" <td>0.576471</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 5, 'max_features': 4, 'n_estimators': 20}</th>\n",
" <td>0.975610</td>\n",
" <td>0.576471</td>\n",
" </tr>\n",
" <tr>\n",
" <th>{'max_depth': 4, 'max_features': 2, 'n_estimators': 20}</th>\n",
" <td>0.965078</td>\n",
" <td>0.576471</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"RandomForestClassifier mean_train_f1 mean_test_f1\n",
"params \n",
"{'max_depth': 10, 'max_features': 2, 'n_estimat... 0.988636 0.611765\n",
"{'max_depth': 1, 'max_features': 7, 'n_estimato... 0.727827 0.611765\n",
"{'max_depth': 2, 'max_features': 7, 'n_estimato... 0.835089 0.588235\n",
"{'max_depth': 9, 'max_features': 4, 'n_estimato... 0.987805 0.588235\n",
"{'max_depth': 8, 'max_features': 10, 'n_estimat... 0.987805 0.588235\n",
"{'max_depth': 8, 'max_features': 9, 'n_estimato... 0.988636 0.588235\n",
"{'max_depth': 6, 'max_features': 2, 'n_estimato... 1.000000 0.588235\n",
"{'max_depth': 5, 'max_features': 2, 'n_estimato... 0.987805 0.576471\n",
"{'max_depth': 5, 'max_features': 4, 'n_estimato... 0.975610 0.576471\n",
"{'max_depth': 4, 'max_features': 2, 'n_estimato... 0.965078 0.576471"
]
},
"metadata": {
"tags": []
},
"execution_count": 292
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "58J5_lvB8tMO",
"colab_type": "text"
},
"source": [
"## Results"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cH1ko5TgBYl0",
"colab_type": "text"
},
"source": [
"A model's f1 score (harmonic mean of precision and recall) approximates its similarity to Oura's sleep score model. \n",
"Our Linear Discriminant Analysis Classifier achieves the greatest similarity even with its default params."
]
},
{
"cell_type": "code",
"metadata": {
"id": "zILexppbU3Pu",
"colab_type": "code",
"outputId": "5b53e261-cdec-41d1-c2a8-428d23d4cc31",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 225
}
},
"source": [
"def print_inter_model_comparison(os):\n",
" df = pd.DataFrame({o['model_name']:[\n",
" str(o['model_grid'].best_params_),\n",
" o['f1']\n",
" ] for o in os},index=['best params combo','f1'])\n",
" display(df.transpose().sort_values('f1',ascending=False))\n",
" return os;\n",
"os = print_inter_model_comparison(os);"
],
"execution_count": 293,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>best params combo</th>\n",
" <th>f1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>LinearDiscriminantAnalysis</th>\n",
" <td>{}</td>\n",
" <td>0.843073</td>\n",
" </tr>\n",
" <tr>\n",
" <th>GaussianNB</th>\n",
" <td>{}</td>\n",
" <td>0.775561</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AdaBoostClassifier</th>\n",
" <td>{}</td>\n",
" <td>0.671351</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RandomForestClassifier</th>\n",
" <td>{'max_depth': 1, 'max_features': 7, 'n_estimat...</td>\n",
" <td>0.583922</td>\n",
" </tr>\n",
" <tr>\n",
" <th>KNeighborsClassifier</th>\n",
" <td>{'metric': 'euclidean', 'n_neighbors': 5}</td>\n",
" <td>0.562695</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DecisionTreeClassifier</th>\n",
" <td>{'max_depth': 5, 'max_features': 8}</td>\n",
" <td>0.561225</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" best params combo f1\n",
"LinearDiscriminantAnalysis {} 0.843073\n",
"GaussianNB {} 0.775561\n",
"AdaBoostClassifier {} 0.671351\n",
"RandomForestClassifier {'max_depth': 1, 'max_features': 7, 'n_estimat... 0.583922\n",
"KNeighborsClassifier {'metric': 'euclidean', 'n_neighbors': 5} 0.562695\n",
"DecisionTreeClassifier {'max_depth': 5, 'max_features': 8} 0.561225"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QT8xoJ1gWISi",
"colab_type": "text"
},
"source": [
"The conclusion is supported by the confusion matrices."
]
},
{
"cell_type": "code",
"metadata": {
"id": "Rk8FF-MNU4yg",
"colab_type": "code",
"outputId": "57f0db76-3356-4799-d92f-c1234f0c137a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 510
}
},
"source": [
"def print_confusion_matrices(os):\n",
" subplots_adjust_kw=dict(left=0,right=1,bottom=0,top=1,wspace=0.3,hspace=0.4)\n",
" os2d = np.reshape(os,(2,3))\n",
" for ax,r,c in enum_axes(*os2d.shape,w=3,h=3,subplots_adjust_kw=subplots_adjust_kw):\n",
" o = os2d[r][c]\n",
" cm = o['confusion_matrix']\n",
" ax.set_title(o['model_name'])\n",
" annot= cm.astype(int).astype(str)\n",
" sns.heatmap(cm,annot=annot,fmt='',cbar=False,square=True,cmap=\"Greens\",ax=ax)\n",
" return os;\n",
"os = print_confusion_matrices(os);"
],
"execution_count": 294,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 648x432 with 6 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7bWRq89WFX29",
"colab_type": "text"
},
"source": [
"## Sources"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "mv-FZTkBFepk",
"colab_type": "text"
},
"source": [
"> Grus, Joel. Data Science from Scratch: First Principles with Python. 1st ed., O'Reilly, 2015\n",
"\n",
"> https://towardsdatascience.com/machine-learning-for-beginners-d247a9420dab\n",
"\n",
"> https://towardsdatascience.com/supervised-machine-learning-classification-5e685fe18a6d\n",
"\n",
"> https://www.datascienceblog.net/post/commentary/inference-vs-prediction/\n",
"\n",
"> https://blog.exploratory.io/introduction-to-boxplot-chart-in-exploratory-255c316a01ca\n",
"\n",
"> https://stats.idre.ucla.edu/spss/whatstat/what-statistical-analysis-should-i-usestatistical-analyses-using-spss/\n",
"\n",
"> https://www.analyticsvidhya.com/blog/2017/08/introduction-to-multi-label-classification/\n",
"\n",
"> https://towardsdatascience.com/precision-vs-recall-386cf9f89488\n",
"\n",
"> http://fa.bianp.net/blog/2013/loss-functions-for-ordinal-regression/\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7ZlPaIa2AkXZ",
"colab_type": "text"
},
"source": [
"> "
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment