├── README.md ├── End to End Machine Learning Workflow on Titanic Data.ipynb ├── .gitignore ├── datasets ├── iris_data.csv ├── thyroid_data.csv └── diabetes.csv ├── Machine Learning Analysis on Thyroidism.ipynb └── Classification Model Evaluation.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # Machine-Learning-With-Python (Hands On Practice) 2 | 3 | **GET YOUR HANDS DIRTY BY Practicing lots of examples on important techniques used in Ml**. 4 | 5 | This repository contains machine learning related projects. These mini projects are done using Jupyter notebook. This covers several publically available datasets. 6 | 7 | Includes: 8 | 9 | * Data preprocessing 10 | * Data cleaning 11 | * Data analysis 12 | * Model selection 13 | * Model evaluation techniques. 14 | 15 | To be implemented: 16 | * Techniques for clustering 17 | * Scikit Learn pipeline implementation 18 | -------------------------------------------------------------------------------- /End to End Machine Learning Workflow on Titanic Data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# End to End Machine Learning Workflow on Titanic Data" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": null, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [] 16 | } 17 | ], 18 | "metadata": { 19 | "kernelspec": { 20 | "display_name": "Python 3", 21 | "language": "python", 22 | "name": "python3" 23 | }, 24 | "language_info": { 25 | "codemirror_mode": { 26 | "name": "ipython", 27 | "version": 3 28 | }, 29 | "file_extension": ".py", 30 | "mimetype": "text/x-python", 31 | "name": "python", 32 | "nbconvert_exporter": "python", 33 | "pygments_lexer": "ipython3", 34 | "version": "3.6.9" 35 | } 36 | }, 37 | "nbformat": 4, 38 | "nbformat_minor": 2 39 | } 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # mypy 101 | .mypy_cache/ 102 | -------------------------------------------------------------------------------- /datasets/iris_data.csv: -------------------------------------------------------------------------------- 1 | 5.1,3.5,1.4,0.2,Iris-setosa 2 | 4.9,3.0,1.4,0.2,Iris-setosa 3 | 4.7,3.2,1.3,0.2,Iris-setosa 4 | 4.6,3.1,1.5,0.2,Iris-setosa 5 | 5.0,3.6,1.4,0.2,Iris-setosa 6 | 5.4,3.9,1.7,0.4,Iris-setosa 7 | 4.6,3.4,1.4,0.3,Iris-setosa 8 | 5.0,3.4,1.5,0.2,Iris-setosa 9 | 4.4,2.9,1.4,0.2,Iris-setosa 10 | 4.9,3.1,1.5,0.1,Iris-setosa 11 | 5.4,3.7,1.5,0.2,Iris-setosa 12 | 4.8,3.4,1.6,0.2,Iris-setosa 13 | 4.8,3.0,1.4,0.1,Iris-setosa 14 | 4.3,3.0,1.1,0.1,Iris-setosa 15 | 5.8,4.0,1.2,0.2,Iris-setosa 16 | 5.7,4.4,1.5,0.4,Iris-setosa 17 | 5.4,3.9,1.3,0.4,Iris-setosa 18 | 5.1,3.5,1.4,0.3,Iris-setosa 19 | 5.7,3.8,1.7,0.3,Iris-setosa 20 | 5.1,3.8,1.5,0.3,Iris-setosa 21 | 5.4,3.4,1.7,0.2,Iris-setosa 22 | 5.1,3.7,1.5,0.4,Iris-setosa 23 | 4.6,3.6,1.0,0.2,Iris-setosa 24 | 5.1,3.3,1.7,0.5,Iris-setosa 25 | 4.8,3.4,1.9,0.2,Iris-setosa 26 | 5.0,3.0,1.6,0.2,Iris-setosa 27 | 5.0,3.4,1.6,0.4,Iris-setosa 28 | 5.2,3.5,1.5,0.2,Iris-setosa 29 | 5.2,3.4,1.4,0.2,Iris-setosa 30 | 4.7,3.2,1.6,0.2,Iris-setosa 31 | 4.8,3.1,1.6,0.2,Iris-setosa 32 | 5.4,3.4,1.5,0.4,Iris-setosa 33 | 5.2,4.1,1.5,0.1,Iris-setosa 34 | 5.5,4.2,1.4,0.2,Iris-setosa 35 | 4.9,3.1,1.5,0.1,Iris-setosa 36 | 5.0,3.2,1.2,0.2,Iris-setosa 37 | 5.5,3.5,1.3,0.2,Iris-setosa 38 | 4.9,3.1,1.5,0.1,Iris-setosa 39 | 4.4,3.0,1.3,0.2,Iris-setosa 40 | 5.1,3.4,1.5,0.2,Iris-setosa 41 | 5.0,3.5,1.3,0.3,Iris-setosa 42 | 4.5,2.3,1.3,0.3,Iris-setosa 43 | 4.4,3.2,1.3,0.2,Iris-setosa 44 | 5.0,3.5,1.6,0.6,Iris-setosa 45 | 5.1,3.8,1.9,0.4,Iris-setosa 46 | 4.8,3.0,1.4,0.3,Iris-setosa 47 | 5.1,3.8,1.6,0.2,Iris-setosa 48 | 4.6,3.2,1.4,0.2,Iris-setosa 49 | 5.3,3.7,1.5,0.2,Iris-setosa 50 | 5.0,3.3,1.4,0.2,Iris-setosa 51 | 7.0,3.2,4.7,1.4,Iris-versicolor 52 | 6.4,3.2,4.5,1.5,Iris-versicolor 53 | 6.9,3.1,4.9,1.5,Iris-versicolor 54 | 5.5,2.3,4.0,1.3,Iris-versicolor 55 | 6.5,2.8,4.6,1.5,Iris-versicolor 56 | 5.7,2.8,4.5,1.3,Iris-versicolor 57 | 6.3,3.3,4.7,1.6,Iris-versicolor 58 | 4.9,2.4,3.3,1.0,Iris-versicolor 59 | 6.6,2.9,4.6,1.3,Iris-versicolor 60 | 5.2,2.7,3.9,1.4,Iris-versicolor 61 | 5.0,2.0,3.5,1.0,Iris-versicolor 62 | 5.9,3.0,4.2,1.5,Iris-versicolor 63 | 6.0,2.2,4.0,1.0,Iris-versicolor 64 | 6.1,2.9,4.7,1.4,Iris-versicolor 65 | 5.6,2.9,3.6,1.3,Iris-versicolor 66 | 6.7,3.1,4.4,1.4,Iris-versicolor 67 | 5.6,3.0,4.5,1.5,Iris-versicolor 68 | 5.8,2.7,4.1,1.0,Iris-versicolor 69 | 6.2,2.2,4.5,1.5,Iris-versicolor 70 | 5.6,2.5,3.9,1.1,Iris-versicolor 71 | 5.9,3.2,4.8,1.8,Iris-versicolor 72 | 6.1,2.8,4.0,1.3,Iris-versicolor 73 | 6.3,2.5,4.9,1.5,Iris-versicolor 74 | 6.1,2.8,4.7,1.2,Iris-versicolor 75 | 6.4,2.9,4.3,1.3,Iris-versicolor 76 | 6.6,3.0,4.4,1.4,Iris-versicolor 77 | 6.8,2.8,4.8,1.4,Iris-versicolor 78 | 6.7,3.0,5.0,1.7,Iris-versicolor 79 | 6.0,2.9,4.5,1.5,Iris-versicolor 80 | 5.7,2.6,3.5,1.0,Iris-versicolor 81 | 5.5,2.4,3.8,1.1,Iris-versicolor 82 | 5.5,2.4,3.7,1.0,Iris-versicolor 83 | 5.8,2.7,3.9,1.2,Iris-versicolor 84 | 6.0,2.7,5.1,1.6,Iris-versicolor 85 | 5.4,3.0,4.5,1.5,Iris-versicolor 86 | 6.0,3.4,4.5,1.6,Iris-versicolor 87 | 6.7,3.1,4.7,1.5,Iris-versicolor 88 | 6.3,2.3,4.4,1.3,Iris-versicolor 89 | 5.6,3.0,4.1,1.3,Iris-versicolor 90 | 5.5,2.5,4.0,1.3,Iris-versicolor 91 | 5.5,2.6,4.4,1.2,Iris-versicolor 92 | 6.1,3.0,4.6,1.4,Iris-versicolor 93 | 5.8,2.6,4.0,1.2,Iris-versicolor 94 | 5.0,2.3,3.3,1.0,Iris-versicolor 95 | 5.6,2.7,4.2,1.3,Iris-versicolor 96 | 5.7,3.0,4.2,1.2,Iris-versicolor 97 | 5.7,2.9,4.2,1.3,Iris-versicolor 98 | 6.2,2.9,4.3,1.3,Iris-versicolor 99 | 5.1,2.5,3.0,1.1,Iris-versicolor 100 | 5.7,2.8,4.1,1.3,Iris-versicolor 101 | 6.3,3.3,6.0,2.5,Iris-virginica 102 | 5.8,2.7,5.1,1.9,Iris-virginica 103 | 7.1,3.0,5.9,2.1,Iris-virginica 104 | 6.3,2.9,5.6,1.8,Iris-virginica 105 | 6.5,3.0,5.8,2.2,Iris-virginica 106 | 7.6,3.0,6.6,2.1,Iris-virginica 107 | 4.9,2.5,4.5,1.7,Iris-virginica 108 | 7.3,2.9,6.3,1.8,Iris-virginica 109 | 6.7,2.5,5.8,1.8,Iris-virginica 110 | 7.2,3.6,6.1,2.5,Iris-virginica 111 | 6.5,3.2,5.1,2.0,Iris-virginica 112 | 6.4,2.7,5.3,1.9,Iris-virginica 113 | 6.8,3.0,5.5,2.1,Iris-virginica 114 | 5.7,2.5,5.0,2.0,Iris-virginica 115 | 5.8,2.8,5.1,2.4,Iris-virginica 116 | 6.4,3.2,5.3,2.3,Iris-virginica 117 | 6.5,3.0,5.5,1.8,Iris-virginica 118 | 7.7,3.8,6.7,2.2,Iris-virginica 119 | 7.7,2.6,6.9,2.3,Iris-virginica 120 | 6.0,2.2,5.0,1.5,Iris-virginica 121 | 6.9,3.2,5.7,2.3,Iris-virginica 122 | 5.6,2.8,4.9,2.0,Iris-virginica 123 | 7.7,2.8,6.7,2.0,Iris-virginica 124 | 6.3,2.7,4.9,1.8,Iris-virginica 125 | 6.7,3.3,5.7,2.1,Iris-virginica 126 | 7.2,3.2,6.0,1.8,Iris-virginica 127 | 6.2,2.8,4.8,1.8,Iris-virginica 128 | 6.1,3.0,4.9,1.8,Iris-virginica 129 | 6.4,2.8,5.6,2.1,Iris-virginica 130 | 7.2,3.0,5.8,1.6,Iris-virginica 131 | 7.4,2.8,6.1,1.9,Iris-virginica 132 | 7.9,3.8,6.4,2.0,Iris-virginica 133 | 6.4,2.8,5.6,2.2,Iris-virginica 134 | 6.3,2.8,5.1,1.5,Iris-virginica 135 | 6.1,2.6,5.6,1.4,Iris-virginica 136 | 7.7,3.0,6.1,2.3,Iris-virginica 137 | 6.3,3.4,5.6,2.4,Iris-virginica 138 | 6.4,3.1,5.5,1.8,Iris-virginica 139 | 6.0,3.0,4.8,1.8,Iris-virginica 140 | 6.9,3.1,5.4,2.1,Iris-virginica 141 | 6.7,3.1,5.6,2.4,Iris-virginica 142 | 6.9,3.1,5.1,2.3,Iris-virginica 143 | 5.8,2.7,5.1,1.9,Iris-virginica 144 | 6.8,3.2,5.9,2.3,Iris-virginica 145 | 6.7,3.3,5.7,2.5,Iris-virginica 146 | 6.7,3.0,5.2,2.3,Iris-virginica 147 | 6.3,2.5,5.0,1.9,Iris-virginica 148 | 6.5,3.0,5.2,2.0,Iris-virginica 149 | 6.2,3.4,5.4,2.3,Iris-virginica 150 | 5.9,3.0,5.1,1.8,Iris-virginica 151 | 152 | -------------------------------------------------------------------------------- /datasets/thyroid_data.csv: -------------------------------------------------------------------------------- 1 | T3_resin,Serum_thyroxin,Serum_triiodothyronine,Basal_TSH,Abs_diff_TSH,Outcome 2 | 107,10.1,2.2,0.9,2.7,1 3 | 113,9.9,3.1,2,5.9,1 4 | 127,12.9,2.4,1.4,0.6,1 5 | 109,5.3,1.6,1.4,1.5,1 6 | 105,7.3,1.5,1.5,-0.1,1 7 | 105,6.1,2.1,1.4,7,1 8 | 110,10.4,1.6,1.6,2.7,1 9 | 114,9.9,2.4,1.5,5.7,1 10 | 106,9.4,2.2,1.5,0,1 11 | 107,13,1.1,0.9,3.1,1 12 | 106,4.2,1.2,1.6,1.4,1 13 | 110,11.3,2.3,0.9,3.3,1 14 | 116,9.2,2.7,1,4.2,1 15 | 112,8.1,1.9,3.7,2,1 16 | 122,9.7,1.6,0.9,2.2,1 17 | 109,8.4,2.1,1.1,3.6,1 18 | 111,8.4,1.5,0.8,1.2,1 19 | 114,6.7,1.5,1,3.5,1 20 | 119,10.6,2.1,1.3,1.1,1 21 | 115,7.1,1.3,1.3,2,1 22 | 101,7.8,1.2,1,1.7,1 23 | 103,10.1,1.3,0.7,0.1,1 24 | 109,10.4,1.9,0.4,-0.1,1 25 | 102,7.6,1.8,2,2.5,1 26 | 121,10.1,1.7,1.3,0.1,1 27 | 100,6.1,2.4,1.8,3.8,1 28 | 106,9.6,2.4,1,1.3,1 29 | 116,10.1,2.2,1.6,0.8,1 30 | 105,11.1,2,1,1,1 31 | 110,10.4,1.8,1,2.3,1 32 | 120,8.4,1.1,1.4,1.4,1 33 | 116,11.1,2,1.2,2.3,1 34 | 110,7.8,1.9,2.1,6.4,1 35 | 90,8.1,1.6,1.4,1.1,1 36 | 117,12.2,1.9,1.2,3.9,1 37 | 117,11,1.4,1.5,2.1,1 38 | 113,9,2,1.8,1.6,1 39 | 106,9.4,1.5,0.8,0.5,1 40 | 130,9.5,1.7,0.4,3.2,1 41 | 100,10.5,2.4,0.9,1.9,1 42 | 121,10.1,2.4,0.8,3,1 43 | 110,9.2,1.6,1.5,0.3,1 44 | 129,11.9,2.7,1.2,3.5,1 45 | 121,13.5,1.5,1.6,0.5,1 46 | 123,8.1,2.3,1,5.1,1 47 | 107,8.4,1.8,1.5,0.8,1 48 | 109,10,1.3,1.8,4.3,1 49 | 120,6.8,1.9,1.3,1.9,1 50 | 100,9.5,2.5,1.3,-0.2,1 51 | 118,8.1,1.9,1.5,13.7,1 52 | 100,11.3,2.5,0.7,-0.3,1 53 | 103,12.2,1.2,1.3,2.7,1 54 | 115,8.1,1.7,0.6,2.2,1 55 | 119,8,2,0.6,3.2,1 56 | 106,9.4,1.7,0.9,3.1,1 57 | 114,10.9,2.1,0.3,1.4,1 58 | 93,8.9,1.5,0.8,2.7,1 59 | 120,10.4,2.1,1.1,1.8,1 60 | 106,11.3,1.8,0.9,1,1 61 | 110,8.7,1.9,1.6,4.4,1 62 | 103,8.1,1.4,0.5,3.8,1 63 | 101,7.1,2.2,0.8,2.2,1 64 | 115,10.4,1.8,1.6,2,1 65 | 116,10,1.7,1.5,4.3,1 66 | 117,9.2,1.9,1.5,6.8,1 67 | 106,6.7,1.5,1.2,3.9,1 68 | 118,10.5,2.1,0.7,3.5,1 69 | 97,7.8,1.3,1.2,0.9,1 70 | 113,11.1,1.7,0.8,2.3,1 71 | 104,6.3,2,1.2,4,1 72 | 96,9.4,1.5,1,3.1,1 73 | 120,12.4,2.4,0.8,1.9,1 74 | 133,9.7,2.9,0.8,1.9,1 75 | 126,9.4,2.3,1,4,1 76 | 113,8.5,1.8,0.8,0.5,1 77 | 109,9.7,1.4,1.1,2.1,1 78 | 119,12.9,1.5,1.3,3.6,1 79 | 101,7.1,1.6,1.5,1.6,1 80 | 108,10.4,2.1,1.3,2.4,1 81 | 117,6.7,2.2,1.8,6.7,1 82 | 115,15.3,2.3,2,2,1 83 | 91,8,1.7,2.1,4.6,1 84 | 103,8.5,1.8,1.9,1.1,1 85 | 98,9.1,1.4,1.9,-0.3,1 86 | 111,7.8,2,1.8,4.1,1 87 | 107,13,1.5,2.8,1.7,1 88 | 119,11.4,2.3,2.2,1.6,1 89 | 122,11.8,2.7,1.7,2.3,1 90 | 105,8.1,2,1.9,-0.5,1 91 | 109,7.6,1.3,2.2,1.9,1 92 | 105,9.5,1.8,1.6,3.6,1 93 | 112,5.9,1.7,2,1.3,1 94 | 112,9.5,2,1.2,0.7,1 95 | 98,8.6,1.6,1.6,6,1 96 | 109,12.4,2.3,1.7,0.8,1 97 | 114,9.1,2.6,1.5,1.5,1 98 | 114,11.1,2.4,2,-0.3,1 99 | 110,8.4,1.4,1,1.9,1 100 | 120,7.1,1.2,1.5,4.3,1 101 | 108,10.9,1.2,1.9,1,1 102 | 108,8.7,1.2,2.2,2.5,1 103 | 116,11.9,1.8,1.9,1.5,1 104 | 113,11.5,1.5,1.9,2.9,1 105 | 105,7,1.5,2.7,4.3,1 106 | 114,8.4,1.6,1.6,-0.2,1 107 | 114,8.1,1.6,1.6,0.5,1 108 | 105,11.1,1.1,0.8,1.2,1 109 | 107,13.8,1.5,1,1.9,1 110 | 116,11.5,1.8,1.4,5.4,1 111 | 102,9.5,1.4,1.1,1.6,1 112 | 116,16.1,0.9,1.3,1.5,1 113 | 118,10.6,1.8,1.4,3,1 114 | 109,8.9,1.7,1,0.9,1 115 | 110,7,1,1.6,4.3,1 116 | 104,9.6,1.1,1.3,0.8,1 117 | 105,8.7,1.5,1.1,1.5,1 118 | 102,8.5,1.2,1.3,1.4,1 119 | 112,6.8,1.7,1.4,3.3,1 120 | 111,8.5,1.6,1.1,3.9,1 121 | 111,8.5,1.6,1.2,7.7,1 122 | 103,7.3,1,0.7,0.5,1 123 | 98,10.4,1.6,2.3,-0.7,1 124 | 117,7.8,2,1,3.9,1 125 | 111,9.1,1.7,1.2,4.1,1 126 | 101,6.3,1.5,0.9,2.9,1 127 | 106,8.9,0.7,1,2.3,1 128 | 102,8.4,1.5,0.8,2.4,1 129 | 115,10.6,0.8,2.1,4.6,1 130 | 130,10,1.6,0.9,4.6,1 131 | 101,6.7,1.3,1,5.7,1 132 | 110,6.3,1,0.8,1,1 133 | 103,9.5,2.9,1.4,-0.1,1 134 | 113,7.8,2,1.1,3,1 135 | 112,10.6,1.6,0.9,-0.1,1 136 | 118,6.5,1.2,1.2,1.7,1 137 | 109,9.2,1.8,1.1,4.4,1 138 | 116,7.8,1.4,1.1,3.7,1 139 | 127,7.7,1.8,1.9,6.4,1 140 | 108,6.5,1,0.9,1.5,1 141 | 108,7.1,1.3,1.6,2.2,1 142 | 105,5.7,1,0.9,0.9,1 143 | 98,5.7,0.4,1.3,2.8,1 144 | 112,6.5,1.2,1.2,2,1 145 | 118,12.2,1.5,1,2.3,1 146 | 94,7.5,1.2,1.3,4.4,1 147 | 126,10.4,1.7,1.2,3.5,1 148 | 114,7.5,1.1,1.6,4.4,1 149 | 111,11.9,2.3,0.9,3.8,1 150 | 104,6.1,1.8,0.5,0.8,1 151 | 102,6.6,1.2,1.4,1.3,1 152 | 139,16.4,3.8,1.1,-0.2,2 153 | 111,16,2.1,0.9,-0.1,2 154 | 113,17.2,1.8,1,0,2 155 | 65,25.3,5.8,1.3,0.2,2 156 | 88,24.1,5.5,0.8,0.1,2 157 | 65,18.2,10,1.3,0.1,2 158 | 134,16.4,4.8,0.6,0.1,2 159 | 110,20.3,3.7,0.6,0.2,2 160 | 67,23.3,7.4,1.8,-0.6,2 161 | 95,11.1,2.7,1.6,-0.3,2 162 | 89,14.3,4.1,0.5,0.2,2 163 | 89,23.8,5.4,0.5,0.1,2 164 | 88,12.9,2.7,0.1,0.2,2 165 | 105,17.4,1.6,0.3,0.4,2 166 | 89,20.1,7.3,1.1,-0.2,2 167 | 99,13,3.6,0.7,-0.1,2 168 | 80,23,10,0.9,-0.1,2 169 | 89,21.8,7.1,0.7,-0.1,2 170 | 99,13,3.1,0.5,-0.1,2 171 | 68,14.7,7.8,0.6,-0.2,2 172 | 97,14.2,3.6,1.5,0.3,2 173 | 84,21.5,2.7,1.1,-0.6,2 174 | 84,18.5,4.4,1.1,-0.3,2 175 | 98,16.7,4.3,1.7,0.2,2 176 | 94,20.5,1.8,1.4,-0.5,2 177 | 99,17.5,1.9,1.4,0.3,2 178 | 76,25.3,4.5,1.2,-0.1,2 179 | 110,15.2,1.9,0.7,-0.2,2 180 | 144,22.3,3.3,1.3,0.6,2 181 | 105,12,3.3,1.1,0,2 182 | 88,16.5,4.9,0.8,0.1,2 183 | 97,15.1,1.8,1.2,-0.2,2 184 | 106,13.4,3,1.1,0,2 185 | 79,19,5.5,0.9,0.3,2 186 | 92,11.1,2,0.7,-0.2,2 187 | 125,2.3,0.9,16.5,9.5,3 188 | 120,6.8,2.1,10.4,38.6,3 189 | 108,3.5,0.6,1.7,1.4,3 190 | 120,3,2.5,1.2,4.5,3 191 | 119,3.8,1.1,23,5.7,3 192 | 141,5.6,1.8,9.2,14.4,3 193 | 129,1.5,0.6,12.5,2.9,3 194 | 118,3.6,1.5,11.6,48.8,3 195 | 120,1.9,0.7,18.5,24,3 196 | 119,0.8,0.7,56.4,21.6,3 197 | 123,5.6,1.1,13.7,56.3,3 198 | 115,6.3,1.2,4.7,14.4,3 199 | 126,0.5,0.2,12.2,8.8,3 200 | 121,4.7,1.8,11.2,53,3 201 | 131,2.7,0.8,9.9,4.7,3 202 | 134,2,0.5,12.2,2.2,3 203 | 141,2.5,1.3,8.5,7.5,3 204 | 113,5.1,0.7,5.8,19.6,3 205 | 136,1.4,0.3,32.6,8.4,3 206 | 120,3.4,1.8,7.5,21.5,3 207 | 125,3.7,1.1,8.5,25.9,3 208 | 123,1.9,0.3,22.8,22.2,3 209 | 112,2.6,0.7,41,19,3 210 | 134,1.9,0.6,18.4,8.2,3 211 | 119,5.1,1.1,7,40.8,3 212 | 118,6.5,1.3,1.7,11.5,3 213 | 139,4.2,0.7,4.3,6.3,3 214 | 103,5.1,1.4,1.2,5,3 215 | 97,4.7,1.1,2.1,12.6,3 216 | 102,5.3,1.4,1.3,6.7,3 217 | -------------------------------------------------------------------------------- /datasets/diabetes.csv: -------------------------------------------------------------------------------- 1 | Pregnancies,Glucose,BloodPressure,SkinThickness,Insulin,BMI,DiabetesPedigreeFunction,Age,Outcome 2 | 6,148,72,35,0,33.6,0.627,50,1 3 | 1,85,66,29,0,26.6,0.351,31,0 4 | 8,183,64,0,0,23.3,0.672,32,1 5 | 1,89,66,23,94,28.1,0.167,21,0 6 | 0,137,40,35,168,43.1,2.288,33,1 7 | 5,116,74,0,0,25.6,0.201,30,0 8 | 3,78,50,32,88,31,0.248,26,1 9 | 10,115,0,0,0,35.3,0.134,29,0 10 | 2,197,70,45,543,30.5,0.158,53,1 11 | 8,125,96,0,0,0,0.232,54,1 12 | 4,110,92,0,0,37.6,0.191,30,0 13 | 10,168,74,0,0,38,0.537,34,1 14 | 10,139,80,0,0,27.1,1.441,57,0 15 | 1,189,60,23,846,30.1,0.398,59,1 16 | 5,166,72,19,175,25.8,0.587,51,1 17 | 7,100,0,0,0,30,0.484,32,1 18 | 0,118,84,47,230,45.8,0.551,31,1 19 | 7,107,74,0,0,29.6,0.254,31,1 20 | 1,103,30,38,83,43.3,0.183,33,0 21 | 1,115,70,30,96,34.6,0.529,32,1 22 | 3,126,88,41,235,39.3,0.704,27,0 23 | 8,99,84,0,0,35.4,0.388,50,0 24 | 7,196,90,0,0,39.8,0.451,41,1 25 | 9,119,80,35,0,29,0.263,29,1 26 | 11,143,94,33,146,36.6,0.254,51,1 27 | 10,125,70,26,115,31.1,0.205,41,1 28 | 7,147,76,0,0,39.4,0.257,43,1 29 | 1,97,66,15,140,23.2,0.487,22,0 30 | 13,145,82,19,110,22.2,0.245,57,0 31 | 5,117,92,0,0,34.1,0.337,38,0 32 | 5,109,75,26,0,36,0.546,60,0 33 | 3,158,76,36,245,31.6,0.851,28,1 34 | 3,88,58,11,54,24.8,0.267,22,0 35 | 6,92,92,0,0,19.9,0.188,28,0 36 | 10,122,78,31,0,27.6,0.512,45,0 37 | 4,103,60,33,192,24,0.966,33,0 38 | 11,138,76,0,0,33.2,0.42,35,0 39 | 9,102,76,37,0,32.9,0.665,46,1 40 | 2,90,68,42,0,38.2,0.503,27,1 41 | 4,111,72,47,207,37.1,1.39,56,1 42 | 3,180,64,25,70,34,0.271,26,0 43 | 7,133,84,0,0,40.2,0.696,37,0 44 | 7,106,92,18,0,22.7,0.235,48,0 45 | 9,171,110,24,240,45.4,0.721,54,1 46 | 7,159,64,0,0,27.4,0.294,40,0 47 | 0,180,66,39,0,42,1.893,25,1 48 | 1,146,56,0,0,29.7,0.564,29,0 49 | 2,71,70,27,0,28,0.586,22,0 50 | 7,103,66,32,0,39.1,0.344,31,1 51 | 7,105,0,0,0,0,0.305,24,0 52 | 1,103,80,11,82,19.4,0.491,22,0 53 | 1,101,50,15,36,24.2,0.526,26,0 54 | 5,88,66,21,23,24.4,0.342,30,0 55 | 8,176,90,34,300,33.7,0.467,58,1 56 | 7,150,66,42,342,34.7,0.718,42,0 57 | 1,73,50,10,0,23,0.248,21,0 58 | 7,187,68,39,304,37.7,0.254,41,1 59 | 0,100,88,60,110,46.8,0.962,31,0 60 | 0,146,82,0,0,40.5,1.781,44,0 61 | 0,105,64,41,142,41.5,0.173,22,0 62 | 2,84,0,0,0,0,0.304,21,0 63 | 8,133,72,0,0,32.9,0.27,39,1 64 | 5,44,62,0,0,25,0.587,36,0 65 | 2,141,58,34,128,25.4,0.699,24,0 66 | 7,114,66,0,0,32.8,0.258,42,1 67 | 5,99,74,27,0,29,0.203,32,0 68 | 0,109,88,30,0,32.5,0.855,38,1 69 | 2,109,92,0,0,42.7,0.845,54,0 70 | 1,95,66,13,38,19.6,0.334,25,0 71 | 4,146,85,27,100,28.9,0.189,27,0 72 | 2,100,66,20,90,32.9,0.867,28,1 73 | 5,139,64,35,140,28.6,0.411,26,0 74 | 13,126,90,0,0,43.4,0.583,42,1 75 | 4,129,86,20,270,35.1,0.231,23,0 76 | 1,79,75,30,0,32,0.396,22,0 77 | 1,0,48,20,0,24.7,0.14,22,0 78 | 7,62,78,0,0,32.6,0.391,41,0 79 | 5,95,72,33,0,37.7,0.37,27,0 80 | 0,131,0,0,0,43.2,0.27,26,1 81 | 2,112,66,22,0,25,0.307,24,0 82 | 3,113,44,13,0,22.4,0.14,22,0 83 | 2,74,0,0,0,0,0.102,22,0 84 | 7,83,78,26,71,29.3,0.767,36,0 85 | 0,101,65,28,0,24.6,0.237,22,0 86 | 5,137,108,0,0,48.8,0.227,37,1 87 | 2,110,74,29,125,32.4,0.698,27,0 88 | 13,106,72,54,0,36.6,0.178,45,0 89 | 2,100,68,25,71,38.5,0.324,26,0 90 | 15,136,70,32,110,37.1,0.153,43,1 91 | 1,107,68,19,0,26.5,0.165,24,0 92 | 1,80,55,0,0,19.1,0.258,21,0 93 | 4,123,80,15,176,32,0.443,34,0 94 | 7,81,78,40,48,46.7,0.261,42,0 95 | 4,134,72,0,0,23.8,0.277,60,1 96 | 2,142,82,18,64,24.7,0.761,21,0 97 | 6,144,72,27,228,33.9,0.255,40,0 98 | 2,92,62,28,0,31.6,0.13,24,0 99 | 1,71,48,18,76,20.4,0.323,22,0 100 | 6,93,50,30,64,28.7,0.356,23,0 101 | 1,122,90,51,220,49.7,0.325,31,1 102 | 1,163,72,0,0,39,1.222,33,1 103 | 1,151,60,0,0,26.1,0.179,22,0 104 | 0,125,96,0,0,22.5,0.262,21,0 105 | 1,81,72,18,40,26.6,0.283,24,0 106 | 2,85,65,0,0,39.6,0.93,27,0 107 | 1,126,56,29,152,28.7,0.801,21,0 108 | 1,96,122,0,0,22.4,0.207,27,0 109 | 4,144,58,28,140,29.5,0.287,37,0 110 | 3,83,58,31,18,34.3,0.336,25,0 111 | 0,95,85,25,36,37.4,0.247,24,1 112 | 3,171,72,33,135,33.3,0.199,24,1 113 | 8,155,62,26,495,34,0.543,46,1 114 | 1,89,76,34,37,31.2,0.192,23,0 115 | 4,76,62,0,0,34,0.391,25,0 116 | 7,160,54,32,175,30.5,0.588,39,1 117 | 4,146,92,0,0,31.2,0.539,61,1 118 | 5,124,74,0,0,34,0.22,38,1 119 | 5,78,48,0,0,33.7,0.654,25,0 120 | 4,97,60,23,0,28.2,0.443,22,0 121 | 4,99,76,15,51,23.2,0.223,21,0 122 | 0,162,76,56,100,53.2,0.759,25,1 123 | 6,111,64,39,0,34.2,0.26,24,0 124 | 2,107,74,30,100,33.6,0.404,23,0 125 | 5,132,80,0,0,26.8,0.186,69,0 126 | 0,113,76,0,0,33.3,0.278,23,1 127 | 1,88,30,42,99,55,0.496,26,1 128 | 3,120,70,30,135,42.9,0.452,30,0 129 | 1,118,58,36,94,33.3,0.261,23,0 130 | 1,117,88,24,145,34.5,0.403,40,1 131 | 0,105,84,0,0,27.9,0.741,62,1 132 | 4,173,70,14,168,29.7,0.361,33,1 133 | 9,122,56,0,0,33.3,1.114,33,1 134 | 3,170,64,37,225,34.5,0.356,30,1 135 | 8,84,74,31,0,38.3,0.457,39,0 136 | 2,96,68,13,49,21.1,0.647,26,0 137 | 2,125,60,20,140,33.8,0.088,31,0 138 | 0,100,70,26,50,30.8,0.597,21,0 139 | 0,93,60,25,92,28.7,0.532,22,0 140 | 0,129,80,0,0,31.2,0.703,29,0 141 | 5,105,72,29,325,36.9,0.159,28,0 142 | 3,128,78,0,0,21.1,0.268,55,0 143 | 5,106,82,30,0,39.5,0.286,38,0 144 | 2,108,52,26,63,32.5,0.318,22,0 145 | 10,108,66,0,0,32.4,0.272,42,1 146 | 4,154,62,31,284,32.8,0.237,23,0 147 | 0,102,75,23,0,0,0.572,21,0 148 | 9,57,80,37,0,32.8,0.096,41,0 149 | 2,106,64,35,119,30.5,1.4,34,0 150 | 5,147,78,0,0,33.7,0.218,65,0 151 | 2,90,70,17,0,27.3,0.085,22,0 152 | 1,136,74,50,204,37.4,0.399,24,0 153 | 4,114,65,0,0,21.9,0.432,37,0 154 | 9,156,86,28,155,34.3,1.189,42,1 155 | 1,153,82,42,485,40.6,0.687,23,0 156 | 8,188,78,0,0,47.9,0.137,43,1 157 | 7,152,88,44,0,50,0.337,36,1 158 | 2,99,52,15,94,24.6,0.637,21,0 159 | 1,109,56,21,135,25.2,0.833,23,0 160 | 2,88,74,19,53,29,0.229,22,0 161 | 17,163,72,41,114,40.9,0.817,47,1 162 | 4,151,90,38,0,29.7,0.294,36,0 163 | 7,102,74,40,105,37.2,0.204,45,0 164 | 0,114,80,34,285,44.2,0.167,27,0 165 | 2,100,64,23,0,29.7,0.368,21,0 166 | 0,131,88,0,0,31.6,0.743,32,1 167 | 6,104,74,18,156,29.9,0.722,41,1 168 | 3,148,66,25,0,32.5,0.256,22,0 169 | 4,120,68,0,0,29.6,0.709,34,0 170 | 4,110,66,0,0,31.9,0.471,29,0 171 | 3,111,90,12,78,28.4,0.495,29,0 172 | 6,102,82,0,0,30.8,0.18,36,1 173 | 6,134,70,23,130,35.4,0.542,29,1 174 | 2,87,0,23,0,28.9,0.773,25,0 175 | 1,79,60,42,48,43.5,0.678,23,0 176 | 2,75,64,24,55,29.7,0.37,33,0 177 | 8,179,72,42,130,32.7,0.719,36,1 178 | 6,85,78,0,0,31.2,0.382,42,0 179 | 0,129,110,46,130,67.1,0.319,26,1 180 | 5,143,78,0,0,45,0.19,47,0 181 | 5,130,82,0,0,39.1,0.956,37,1 182 | 6,87,80,0,0,23.2,0.084,32,0 183 | 0,119,64,18,92,34.9,0.725,23,0 184 | 1,0,74,20,23,27.7,0.299,21,0 185 | 5,73,60,0,0,26.8,0.268,27,0 186 | 4,141,74,0,0,27.6,0.244,40,0 187 | 7,194,68,28,0,35.9,0.745,41,1 188 | 8,181,68,36,495,30.1,0.615,60,1 189 | 1,128,98,41,58,32,1.321,33,1 190 | 8,109,76,39,114,27.9,0.64,31,1 191 | 5,139,80,35,160,31.6,0.361,25,1 192 | 3,111,62,0,0,22.6,0.142,21,0 193 | 9,123,70,44,94,33.1,0.374,40,0 194 | 7,159,66,0,0,30.4,0.383,36,1 195 | 11,135,0,0,0,52.3,0.578,40,1 196 | 8,85,55,20,0,24.4,0.136,42,0 197 | 5,158,84,41,210,39.4,0.395,29,1 198 | 1,105,58,0,0,24.3,0.187,21,0 199 | 3,107,62,13,48,22.9,0.678,23,1 200 | 4,109,64,44,99,34.8,0.905,26,1 201 | 4,148,60,27,318,30.9,0.15,29,1 202 | 0,113,80,16,0,31,0.874,21,0 203 | 1,138,82,0,0,40.1,0.236,28,0 204 | 0,108,68,20,0,27.3,0.787,32,0 205 | 2,99,70,16,44,20.4,0.235,27,0 206 | 6,103,72,32,190,37.7,0.324,55,0 207 | 5,111,72,28,0,23.9,0.407,27,0 208 | 8,196,76,29,280,37.5,0.605,57,1 209 | 5,162,104,0,0,37.7,0.151,52,1 210 | 1,96,64,27,87,33.2,0.289,21,0 211 | 7,184,84,33,0,35.5,0.355,41,1 212 | 2,81,60,22,0,27.7,0.29,25,0 213 | 0,147,85,54,0,42.8,0.375,24,0 214 | 7,179,95,31,0,34.2,0.164,60,0 215 | 0,140,65,26,130,42.6,0.431,24,1 216 | 9,112,82,32,175,34.2,0.26,36,1 217 | 12,151,70,40,271,41.8,0.742,38,1 218 | 5,109,62,41,129,35.8,0.514,25,1 219 | 6,125,68,30,120,30,0.464,32,0 220 | 5,85,74,22,0,29,1.224,32,1 221 | 5,112,66,0,0,37.8,0.261,41,1 222 | 0,177,60,29,478,34.6,1.072,21,1 223 | 2,158,90,0,0,31.6,0.805,66,1 224 | 7,119,0,0,0,25.2,0.209,37,0 225 | 7,142,60,33,190,28.8,0.687,61,0 226 | 1,100,66,15,56,23.6,0.666,26,0 227 | 1,87,78,27,32,34.6,0.101,22,0 228 | 0,101,76,0,0,35.7,0.198,26,0 229 | 3,162,52,38,0,37.2,0.652,24,1 230 | 4,197,70,39,744,36.7,2.329,31,0 231 | 0,117,80,31,53,45.2,0.089,24,0 232 | 4,142,86,0,0,44,0.645,22,1 233 | 6,134,80,37,370,46.2,0.238,46,1 234 | 1,79,80,25,37,25.4,0.583,22,0 235 | 4,122,68,0,0,35,0.394,29,0 236 | 3,74,68,28,45,29.7,0.293,23,0 237 | 4,171,72,0,0,43.6,0.479,26,1 238 | 7,181,84,21,192,35.9,0.586,51,1 239 | 0,179,90,27,0,44.1,0.686,23,1 240 | 9,164,84,21,0,30.8,0.831,32,1 241 | 0,104,76,0,0,18.4,0.582,27,0 242 | 1,91,64,24,0,29.2,0.192,21,0 243 | 4,91,70,32,88,33.1,0.446,22,0 244 | 3,139,54,0,0,25.6,0.402,22,1 245 | 6,119,50,22,176,27.1,1.318,33,1 246 | 2,146,76,35,194,38.2,0.329,29,0 247 | 9,184,85,15,0,30,1.213,49,1 248 | 10,122,68,0,0,31.2,0.258,41,0 249 | 0,165,90,33,680,52.3,0.427,23,0 250 | 9,124,70,33,402,35.4,0.282,34,0 251 | 1,111,86,19,0,30.1,0.143,23,0 252 | 9,106,52,0,0,31.2,0.38,42,0 253 | 2,129,84,0,0,28,0.284,27,0 254 | 2,90,80,14,55,24.4,0.249,24,0 255 | 0,86,68,32,0,35.8,0.238,25,0 256 | 12,92,62,7,258,27.6,0.926,44,1 257 | 1,113,64,35,0,33.6,0.543,21,1 258 | 3,111,56,39,0,30.1,0.557,30,0 259 | 2,114,68,22,0,28.7,0.092,25,0 260 | 1,193,50,16,375,25.9,0.655,24,0 261 | 11,155,76,28,150,33.3,1.353,51,1 262 | 3,191,68,15,130,30.9,0.299,34,0 263 | 3,141,0,0,0,30,0.761,27,1 264 | 4,95,70,32,0,32.1,0.612,24,0 265 | 3,142,80,15,0,32.4,0.2,63,0 266 | 4,123,62,0,0,32,0.226,35,1 267 | 5,96,74,18,67,33.6,0.997,43,0 268 | 0,138,0,0,0,36.3,0.933,25,1 269 | 2,128,64,42,0,40,1.101,24,0 270 | 0,102,52,0,0,25.1,0.078,21,0 271 | 2,146,0,0,0,27.5,0.24,28,1 272 | 10,101,86,37,0,45.6,1.136,38,1 273 | 2,108,62,32,56,25.2,0.128,21,0 274 | 3,122,78,0,0,23,0.254,40,0 275 | 1,71,78,50,45,33.2,0.422,21,0 276 | 13,106,70,0,0,34.2,0.251,52,0 277 | 2,100,70,52,57,40.5,0.677,25,0 278 | 7,106,60,24,0,26.5,0.296,29,1 279 | 0,104,64,23,116,27.8,0.454,23,0 280 | 5,114,74,0,0,24.9,0.744,57,0 281 | 2,108,62,10,278,25.3,0.881,22,0 282 | 0,146,70,0,0,37.9,0.334,28,1 283 | 10,129,76,28,122,35.9,0.28,39,0 284 | 7,133,88,15,155,32.4,0.262,37,0 285 | 7,161,86,0,0,30.4,0.165,47,1 286 | 2,108,80,0,0,27,0.259,52,1 287 | 7,136,74,26,135,26,0.647,51,0 288 | 5,155,84,44,545,38.7,0.619,34,0 289 | 1,119,86,39,220,45.6,0.808,29,1 290 | 4,96,56,17,49,20.8,0.34,26,0 291 | 5,108,72,43,75,36.1,0.263,33,0 292 | 0,78,88,29,40,36.9,0.434,21,0 293 | 0,107,62,30,74,36.6,0.757,25,1 294 | 2,128,78,37,182,43.3,1.224,31,1 295 | 1,128,48,45,194,40.5,0.613,24,1 296 | 0,161,50,0,0,21.9,0.254,65,0 297 | 6,151,62,31,120,35.5,0.692,28,0 298 | 2,146,70,38,360,28,0.337,29,1 299 | 0,126,84,29,215,30.7,0.52,24,0 300 | 14,100,78,25,184,36.6,0.412,46,1 301 | 8,112,72,0,0,23.6,0.84,58,0 302 | 0,167,0,0,0,32.3,0.839,30,1 303 | 2,144,58,33,135,31.6,0.422,25,1 304 | 5,77,82,41,42,35.8,0.156,35,0 305 | 5,115,98,0,0,52.9,0.209,28,1 306 | 3,150,76,0,0,21,0.207,37,0 307 | 2,120,76,37,105,39.7,0.215,29,0 308 | 10,161,68,23,132,25.5,0.326,47,1 309 | 0,137,68,14,148,24.8,0.143,21,0 310 | 0,128,68,19,180,30.5,1.391,25,1 311 | 2,124,68,28,205,32.9,0.875,30,1 312 | 6,80,66,30,0,26.2,0.313,41,0 313 | 0,106,70,37,148,39.4,0.605,22,0 314 | 2,155,74,17,96,26.6,0.433,27,1 315 | 3,113,50,10,85,29.5,0.626,25,0 316 | 7,109,80,31,0,35.9,1.127,43,1 317 | 2,112,68,22,94,34.1,0.315,26,0 318 | 3,99,80,11,64,19.3,0.284,30,0 319 | 3,182,74,0,0,30.5,0.345,29,1 320 | 3,115,66,39,140,38.1,0.15,28,0 321 | 6,194,78,0,0,23.5,0.129,59,1 322 | 4,129,60,12,231,27.5,0.527,31,0 323 | 3,112,74,30,0,31.6,0.197,25,1 324 | 0,124,70,20,0,27.4,0.254,36,1 325 | 13,152,90,33,29,26.8,0.731,43,1 326 | 2,112,75,32,0,35.7,0.148,21,0 327 | 1,157,72,21,168,25.6,0.123,24,0 328 | 1,122,64,32,156,35.1,0.692,30,1 329 | 10,179,70,0,0,35.1,0.2,37,0 330 | 2,102,86,36,120,45.5,0.127,23,1 331 | 6,105,70,32,68,30.8,0.122,37,0 332 | 8,118,72,19,0,23.1,1.476,46,0 333 | 2,87,58,16,52,32.7,0.166,25,0 334 | 1,180,0,0,0,43.3,0.282,41,1 335 | 12,106,80,0,0,23.6,0.137,44,0 336 | 1,95,60,18,58,23.9,0.26,22,0 337 | 0,165,76,43,255,47.9,0.259,26,0 338 | 0,117,0,0,0,33.8,0.932,44,0 339 | 5,115,76,0,0,31.2,0.343,44,1 340 | 9,152,78,34,171,34.2,0.893,33,1 341 | 7,178,84,0,0,39.9,0.331,41,1 342 | 1,130,70,13,105,25.9,0.472,22,0 343 | 1,95,74,21,73,25.9,0.673,36,0 344 | 1,0,68,35,0,32,0.389,22,0 345 | 5,122,86,0,0,34.7,0.29,33,0 346 | 8,95,72,0,0,36.8,0.485,57,0 347 | 8,126,88,36,108,38.5,0.349,49,0 348 | 1,139,46,19,83,28.7,0.654,22,0 349 | 3,116,0,0,0,23.5,0.187,23,0 350 | 3,99,62,19,74,21.8,0.279,26,0 351 | 5,0,80,32,0,41,0.346,37,1 352 | 4,92,80,0,0,42.2,0.237,29,0 353 | 4,137,84,0,0,31.2,0.252,30,0 354 | 3,61,82,28,0,34.4,0.243,46,0 355 | 1,90,62,12,43,27.2,0.58,24,0 356 | 3,90,78,0,0,42.7,0.559,21,0 357 | 9,165,88,0,0,30.4,0.302,49,1 358 | 1,125,50,40,167,33.3,0.962,28,1 359 | 13,129,0,30,0,39.9,0.569,44,1 360 | 12,88,74,40,54,35.3,0.378,48,0 361 | 1,196,76,36,249,36.5,0.875,29,1 362 | 5,189,64,33,325,31.2,0.583,29,1 363 | 5,158,70,0,0,29.8,0.207,63,0 364 | 5,103,108,37,0,39.2,0.305,65,0 365 | 4,146,78,0,0,38.5,0.52,67,1 366 | 4,147,74,25,293,34.9,0.385,30,0 367 | 5,99,54,28,83,34,0.499,30,0 368 | 6,124,72,0,0,27.6,0.368,29,1 369 | 0,101,64,17,0,21,0.252,21,0 370 | 3,81,86,16,66,27.5,0.306,22,0 371 | 1,133,102,28,140,32.8,0.234,45,1 372 | 3,173,82,48,465,38.4,2.137,25,1 373 | 0,118,64,23,89,0,1.731,21,0 374 | 0,84,64,22,66,35.8,0.545,21,0 375 | 2,105,58,40,94,34.9,0.225,25,0 376 | 2,122,52,43,158,36.2,0.816,28,0 377 | 12,140,82,43,325,39.2,0.528,58,1 378 | 0,98,82,15,84,25.2,0.299,22,0 379 | 1,87,60,37,75,37.2,0.509,22,0 380 | 4,156,75,0,0,48.3,0.238,32,1 381 | 0,93,100,39,72,43.4,1.021,35,0 382 | 1,107,72,30,82,30.8,0.821,24,0 383 | 0,105,68,22,0,20,0.236,22,0 384 | 1,109,60,8,182,25.4,0.947,21,0 385 | 1,90,62,18,59,25.1,1.268,25,0 386 | 1,125,70,24,110,24.3,0.221,25,0 387 | 1,119,54,13,50,22.3,0.205,24,0 388 | 5,116,74,29,0,32.3,0.66,35,1 389 | 8,105,100,36,0,43.3,0.239,45,1 390 | 5,144,82,26,285,32,0.452,58,1 391 | 3,100,68,23,81,31.6,0.949,28,0 392 | 1,100,66,29,196,32,0.444,42,0 393 | 5,166,76,0,0,45.7,0.34,27,1 394 | 1,131,64,14,415,23.7,0.389,21,0 395 | 4,116,72,12,87,22.1,0.463,37,0 396 | 4,158,78,0,0,32.9,0.803,31,1 397 | 2,127,58,24,275,27.7,1.6,25,0 398 | 3,96,56,34,115,24.7,0.944,39,0 399 | 0,131,66,40,0,34.3,0.196,22,1 400 | 3,82,70,0,0,21.1,0.389,25,0 401 | 3,193,70,31,0,34.9,0.241,25,1 402 | 4,95,64,0,0,32,0.161,31,1 403 | 6,137,61,0,0,24.2,0.151,55,0 404 | 5,136,84,41,88,35,0.286,35,1 405 | 9,72,78,25,0,31.6,0.28,38,0 406 | 5,168,64,0,0,32.9,0.135,41,1 407 | 2,123,48,32,165,42.1,0.52,26,0 408 | 4,115,72,0,0,28.9,0.376,46,1 409 | 0,101,62,0,0,21.9,0.336,25,0 410 | 8,197,74,0,0,25.9,1.191,39,1 411 | 1,172,68,49,579,42.4,0.702,28,1 412 | 6,102,90,39,0,35.7,0.674,28,0 413 | 1,112,72,30,176,34.4,0.528,25,0 414 | 1,143,84,23,310,42.4,1.076,22,0 415 | 1,143,74,22,61,26.2,0.256,21,0 416 | 0,138,60,35,167,34.6,0.534,21,1 417 | 3,173,84,33,474,35.7,0.258,22,1 418 | 1,97,68,21,0,27.2,1.095,22,0 419 | 4,144,82,32,0,38.5,0.554,37,1 420 | 1,83,68,0,0,18.2,0.624,27,0 421 | 3,129,64,29,115,26.4,0.219,28,1 422 | 1,119,88,41,170,45.3,0.507,26,0 423 | 2,94,68,18,76,26,0.561,21,0 424 | 0,102,64,46,78,40.6,0.496,21,0 425 | 2,115,64,22,0,30.8,0.421,21,0 426 | 8,151,78,32,210,42.9,0.516,36,1 427 | 4,184,78,39,277,37,0.264,31,1 428 | 0,94,0,0,0,0,0.256,25,0 429 | 1,181,64,30,180,34.1,0.328,38,1 430 | 0,135,94,46,145,40.6,0.284,26,0 431 | 1,95,82,25,180,35,0.233,43,1 432 | 2,99,0,0,0,22.2,0.108,23,0 433 | 3,89,74,16,85,30.4,0.551,38,0 434 | 1,80,74,11,60,30,0.527,22,0 435 | 2,139,75,0,0,25.6,0.167,29,0 436 | 1,90,68,8,0,24.5,1.138,36,0 437 | 0,141,0,0,0,42.4,0.205,29,1 438 | 12,140,85,33,0,37.4,0.244,41,0 439 | 5,147,75,0,0,29.9,0.434,28,0 440 | 1,97,70,15,0,18.2,0.147,21,0 441 | 6,107,88,0,0,36.8,0.727,31,0 442 | 0,189,104,25,0,34.3,0.435,41,1 443 | 2,83,66,23,50,32.2,0.497,22,0 444 | 4,117,64,27,120,33.2,0.23,24,0 445 | 8,108,70,0,0,30.5,0.955,33,1 446 | 4,117,62,12,0,29.7,0.38,30,1 447 | 0,180,78,63,14,59.4,2.42,25,1 448 | 1,100,72,12,70,25.3,0.658,28,0 449 | 0,95,80,45,92,36.5,0.33,26,0 450 | 0,104,64,37,64,33.6,0.51,22,1 451 | 0,120,74,18,63,30.5,0.285,26,0 452 | 1,82,64,13,95,21.2,0.415,23,0 453 | 2,134,70,0,0,28.9,0.542,23,1 454 | 0,91,68,32,210,39.9,0.381,25,0 455 | 2,119,0,0,0,19.6,0.832,72,0 456 | 2,100,54,28,105,37.8,0.498,24,0 457 | 14,175,62,30,0,33.6,0.212,38,1 458 | 1,135,54,0,0,26.7,0.687,62,0 459 | 5,86,68,28,71,30.2,0.364,24,0 460 | 10,148,84,48,237,37.6,1.001,51,1 461 | 9,134,74,33,60,25.9,0.46,81,0 462 | 9,120,72,22,56,20.8,0.733,48,0 463 | 1,71,62,0,0,21.8,0.416,26,0 464 | 8,74,70,40,49,35.3,0.705,39,0 465 | 5,88,78,30,0,27.6,0.258,37,0 466 | 10,115,98,0,0,24,1.022,34,0 467 | 0,124,56,13,105,21.8,0.452,21,0 468 | 0,74,52,10,36,27.8,0.269,22,0 469 | 0,97,64,36,100,36.8,0.6,25,0 470 | 8,120,0,0,0,30,0.183,38,1 471 | 6,154,78,41,140,46.1,0.571,27,0 472 | 1,144,82,40,0,41.3,0.607,28,0 473 | 0,137,70,38,0,33.2,0.17,22,0 474 | 0,119,66,27,0,38.8,0.259,22,0 475 | 7,136,90,0,0,29.9,0.21,50,0 476 | 4,114,64,0,0,28.9,0.126,24,0 477 | 0,137,84,27,0,27.3,0.231,59,0 478 | 2,105,80,45,191,33.7,0.711,29,1 479 | 7,114,76,17,110,23.8,0.466,31,0 480 | 8,126,74,38,75,25.9,0.162,39,0 481 | 4,132,86,31,0,28,0.419,63,0 482 | 3,158,70,30,328,35.5,0.344,35,1 483 | 0,123,88,37,0,35.2,0.197,29,0 484 | 4,85,58,22,49,27.8,0.306,28,0 485 | 0,84,82,31,125,38.2,0.233,23,0 486 | 0,145,0,0,0,44.2,0.63,31,1 487 | 0,135,68,42,250,42.3,0.365,24,1 488 | 1,139,62,41,480,40.7,0.536,21,0 489 | 0,173,78,32,265,46.5,1.159,58,0 490 | 4,99,72,17,0,25.6,0.294,28,0 491 | 8,194,80,0,0,26.1,0.551,67,0 492 | 2,83,65,28,66,36.8,0.629,24,0 493 | 2,89,90,30,0,33.5,0.292,42,0 494 | 4,99,68,38,0,32.8,0.145,33,0 495 | 4,125,70,18,122,28.9,1.144,45,1 496 | 3,80,0,0,0,0,0.174,22,0 497 | 6,166,74,0,0,26.6,0.304,66,0 498 | 5,110,68,0,0,26,0.292,30,0 499 | 2,81,72,15,76,30.1,0.547,25,0 500 | 7,195,70,33,145,25.1,0.163,55,1 501 | 6,154,74,32,193,29.3,0.839,39,0 502 | 2,117,90,19,71,25.2,0.313,21,0 503 | 3,84,72,32,0,37.2,0.267,28,0 504 | 6,0,68,41,0,39,0.727,41,1 505 | 7,94,64,25,79,33.3,0.738,41,0 506 | 3,96,78,39,0,37.3,0.238,40,0 507 | 10,75,82,0,0,33.3,0.263,38,0 508 | 0,180,90,26,90,36.5,0.314,35,1 509 | 1,130,60,23,170,28.6,0.692,21,0 510 | 2,84,50,23,76,30.4,0.968,21,0 511 | 8,120,78,0,0,25,0.409,64,0 512 | 12,84,72,31,0,29.7,0.297,46,1 513 | 0,139,62,17,210,22.1,0.207,21,0 514 | 9,91,68,0,0,24.2,0.2,58,0 515 | 2,91,62,0,0,27.3,0.525,22,0 516 | 3,99,54,19,86,25.6,0.154,24,0 517 | 3,163,70,18,105,31.6,0.268,28,1 518 | 9,145,88,34,165,30.3,0.771,53,1 519 | 7,125,86,0,0,37.6,0.304,51,0 520 | 13,76,60,0,0,32.8,0.18,41,0 521 | 6,129,90,7,326,19.6,0.582,60,0 522 | 2,68,70,32,66,25,0.187,25,0 523 | 3,124,80,33,130,33.2,0.305,26,0 524 | 6,114,0,0,0,0,0.189,26,0 525 | 9,130,70,0,0,34.2,0.652,45,1 526 | 3,125,58,0,0,31.6,0.151,24,0 527 | 3,87,60,18,0,21.8,0.444,21,0 528 | 1,97,64,19,82,18.2,0.299,21,0 529 | 3,116,74,15,105,26.3,0.107,24,0 530 | 0,117,66,31,188,30.8,0.493,22,0 531 | 0,111,65,0,0,24.6,0.66,31,0 532 | 2,122,60,18,106,29.8,0.717,22,0 533 | 0,107,76,0,0,45.3,0.686,24,0 534 | 1,86,66,52,65,41.3,0.917,29,0 535 | 6,91,0,0,0,29.8,0.501,31,0 536 | 1,77,56,30,56,33.3,1.251,24,0 537 | 4,132,0,0,0,32.9,0.302,23,1 538 | 0,105,90,0,0,29.6,0.197,46,0 539 | 0,57,60,0,0,21.7,0.735,67,0 540 | 0,127,80,37,210,36.3,0.804,23,0 541 | 3,129,92,49,155,36.4,0.968,32,1 542 | 8,100,74,40,215,39.4,0.661,43,1 543 | 3,128,72,25,190,32.4,0.549,27,1 544 | 10,90,85,32,0,34.9,0.825,56,1 545 | 4,84,90,23,56,39.5,0.159,25,0 546 | 1,88,78,29,76,32,0.365,29,0 547 | 8,186,90,35,225,34.5,0.423,37,1 548 | 5,187,76,27,207,43.6,1.034,53,1 549 | 4,131,68,21,166,33.1,0.16,28,0 550 | 1,164,82,43,67,32.8,0.341,50,0 551 | 4,189,110,31,0,28.5,0.68,37,0 552 | 1,116,70,28,0,27.4,0.204,21,0 553 | 3,84,68,30,106,31.9,0.591,25,0 554 | 6,114,88,0,0,27.8,0.247,66,0 555 | 1,88,62,24,44,29.9,0.422,23,0 556 | 1,84,64,23,115,36.9,0.471,28,0 557 | 7,124,70,33,215,25.5,0.161,37,0 558 | 1,97,70,40,0,38.1,0.218,30,0 559 | 8,110,76,0,0,27.8,0.237,58,0 560 | 11,103,68,40,0,46.2,0.126,42,0 561 | 11,85,74,0,0,30.1,0.3,35,0 562 | 6,125,76,0,0,33.8,0.121,54,1 563 | 0,198,66,32,274,41.3,0.502,28,1 564 | 1,87,68,34,77,37.6,0.401,24,0 565 | 6,99,60,19,54,26.9,0.497,32,0 566 | 0,91,80,0,0,32.4,0.601,27,0 567 | 2,95,54,14,88,26.1,0.748,22,0 568 | 1,99,72,30,18,38.6,0.412,21,0 569 | 6,92,62,32,126,32,0.085,46,0 570 | 4,154,72,29,126,31.3,0.338,37,0 571 | 0,121,66,30,165,34.3,0.203,33,1 572 | 3,78,70,0,0,32.5,0.27,39,0 573 | 2,130,96,0,0,22.6,0.268,21,0 574 | 3,111,58,31,44,29.5,0.43,22,0 575 | 2,98,60,17,120,34.7,0.198,22,0 576 | 1,143,86,30,330,30.1,0.892,23,0 577 | 1,119,44,47,63,35.5,0.28,25,0 578 | 6,108,44,20,130,24,0.813,35,0 579 | 2,118,80,0,0,42.9,0.693,21,1 580 | 10,133,68,0,0,27,0.245,36,0 581 | 2,197,70,99,0,34.7,0.575,62,1 582 | 0,151,90,46,0,42.1,0.371,21,1 583 | 6,109,60,27,0,25,0.206,27,0 584 | 12,121,78,17,0,26.5,0.259,62,0 585 | 8,100,76,0,0,38.7,0.19,42,0 586 | 8,124,76,24,600,28.7,0.687,52,1 587 | 1,93,56,11,0,22.5,0.417,22,0 588 | 8,143,66,0,0,34.9,0.129,41,1 589 | 6,103,66,0,0,24.3,0.249,29,0 590 | 3,176,86,27,156,33.3,1.154,52,1 591 | 0,73,0,0,0,21.1,0.342,25,0 592 | 11,111,84,40,0,46.8,0.925,45,1 593 | 2,112,78,50,140,39.4,0.175,24,0 594 | 3,132,80,0,0,34.4,0.402,44,1 595 | 2,82,52,22,115,28.5,1.699,25,0 596 | 6,123,72,45,230,33.6,0.733,34,0 597 | 0,188,82,14,185,32,0.682,22,1 598 | 0,67,76,0,0,45.3,0.194,46,0 599 | 1,89,24,19,25,27.8,0.559,21,0 600 | 1,173,74,0,0,36.8,0.088,38,1 601 | 1,109,38,18,120,23.1,0.407,26,0 602 | 1,108,88,19,0,27.1,0.4,24,0 603 | 6,96,0,0,0,23.7,0.19,28,0 604 | 1,124,74,36,0,27.8,0.1,30,0 605 | 7,150,78,29,126,35.2,0.692,54,1 606 | 4,183,0,0,0,28.4,0.212,36,1 607 | 1,124,60,32,0,35.8,0.514,21,0 608 | 1,181,78,42,293,40,1.258,22,1 609 | 1,92,62,25,41,19.5,0.482,25,0 610 | 0,152,82,39,272,41.5,0.27,27,0 611 | 1,111,62,13,182,24,0.138,23,0 612 | 3,106,54,21,158,30.9,0.292,24,0 613 | 3,174,58,22,194,32.9,0.593,36,1 614 | 7,168,88,42,321,38.2,0.787,40,1 615 | 6,105,80,28,0,32.5,0.878,26,0 616 | 11,138,74,26,144,36.1,0.557,50,1 617 | 3,106,72,0,0,25.8,0.207,27,0 618 | 6,117,96,0,0,28.7,0.157,30,0 619 | 2,68,62,13,15,20.1,0.257,23,0 620 | 9,112,82,24,0,28.2,1.282,50,1 621 | 0,119,0,0,0,32.4,0.141,24,1 622 | 2,112,86,42,160,38.4,0.246,28,0 623 | 2,92,76,20,0,24.2,1.698,28,0 624 | 6,183,94,0,0,40.8,1.461,45,0 625 | 0,94,70,27,115,43.5,0.347,21,0 626 | 2,108,64,0,0,30.8,0.158,21,0 627 | 4,90,88,47,54,37.7,0.362,29,0 628 | 0,125,68,0,0,24.7,0.206,21,0 629 | 0,132,78,0,0,32.4,0.393,21,0 630 | 5,128,80,0,0,34.6,0.144,45,0 631 | 4,94,65,22,0,24.7,0.148,21,0 632 | 7,114,64,0,0,27.4,0.732,34,1 633 | 0,102,78,40,90,34.5,0.238,24,0 634 | 2,111,60,0,0,26.2,0.343,23,0 635 | 1,128,82,17,183,27.5,0.115,22,0 636 | 10,92,62,0,0,25.9,0.167,31,0 637 | 13,104,72,0,0,31.2,0.465,38,1 638 | 5,104,74,0,0,28.8,0.153,48,0 639 | 2,94,76,18,66,31.6,0.649,23,0 640 | 7,97,76,32,91,40.9,0.871,32,1 641 | 1,100,74,12,46,19.5,0.149,28,0 642 | 0,102,86,17,105,29.3,0.695,27,0 643 | 4,128,70,0,0,34.3,0.303,24,0 644 | 6,147,80,0,0,29.5,0.178,50,1 645 | 4,90,0,0,0,28,0.61,31,0 646 | 3,103,72,30,152,27.6,0.73,27,0 647 | 2,157,74,35,440,39.4,0.134,30,0 648 | 1,167,74,17,144,23.4,0.447,33,1 649 | 0,179,50,36,159,37.8,0.455,22,1 650 | 11,136,84,35,130,28.3,0.26,42,1 651 | 0,107,60,25,0,26.4,0.133,23,0 652 | 1,91,54,25,100,25.2,0.234,23,0 653 | 1,117,60,23,106,33.8,0.466,27,0 654 | 5,123,74,40,77,34.1,0.269,28,0 655 | 2,120,54,0,0,26.8,0.455,27,0 656 | 1,106,70,28,135,34.2,0.142,22,0 657 | 2,155,52,27,540,38.7,0.24,25,1 658 | 2,101,58,35,90,21.8,0.155,22,0 659 | 1,120,80,48,200,38.9,1.162,41,0 660 | 11,127,106,0,0,39,0.19,51,0 661 | 3,80,82,31,70,34.2,1.292,27,1 662 | 10,162,84,0,0,27.7,0.182,54,0 663 | 1,199,76,43,0,42.9,1.394,22,1 664 | 8,167,106,46,231,37.6,0.165,43,1 665 | 9,145,80,46,130,37.9,0.637,40,1 666 | 6,115,60,39,0,33.7,0.245,40,1 667 | 1,112,80,45,132,34.8,0.217,24,0 668 | 4,145,82,18,0,32.5,0.235,70,1 669 | 10,111,70,27,0,27.5,0.141,40,1 670 | 6,98,58,33,190,34,0.43,43,0 671 | 9,154,78,30,100,30.9,0.164,45,0 672 | 6,165,68,26,168,33.6,0.631,49,0 673 | 1,99,58,10,0,25.4,0.551,21,0 674 | 10,68,106,23,49,35.5,0.285,47,0 675 | 3,123,100,35,240,57.3,0.88,22,0 676 | 8,91,82,0,0,35.6,0.587,68,0 677 | 6,195,70,0,0,30.9,0.328,31,1 678 | 9,156,86,0,0,24.8,0.23,53,1 679 | 0,93,60,0,0,35.3,0.263,25,0 680 | 3,121,52,0,0,36,0.127,25,1 681 | 2,101,58,17,265,24.2,0.614,23,0 682 | 2,56,56,28,45,24.2,0.332,22,0 683 | 0,162,76,36,0,49.6,0.364,26,1 684 | 0,95,64,39,105,44.6,0.366,22,0 685 | 4,125,80,0,0,32.3,0.536,27,1 686 | 5,136,82,0,0,0,0.64,69,0 687 | 2,129,74,26,205,33.2,0.591,25,0 688 | 3,130,64,0,0,23.1,0.314,22,0 689 | 1,107,50,19,0,28.3,0.181,29,0 690 | 1,140,74,26,180,24.1,0.828,23,0 691 | 1,144,82,46,180,46.1,0.335,46,1 692 | 8,107,80,0,0,24.6,0.856,34,0 693 | 13,158,114,0,0,42.3,0.257,44,1 694 | 2,121,70,32,95,39.1,0.886,23,0 695 | 7,129,68,49,125,38.5,0.439,43,1 696 | 2,90,60,0,0,23.5,0.191,25,0 697 | 7,142,90,24,480,30.4,0.128,43,1 698 | 3,169,74,19,125,29.9,0.268,31,1 699 | 0,99,0,0,0,25,0.253,22,0 700 | 4,127,88,11,155,34.5,0.598,28,0 701 | 4,118,70,0,0,44.5,0.904,26,0 702 | 2,122,76,27,200,35.9,0.483,26,0 703 | 6,125,78,31,0,27.6,0.565,49,1 704 | 1,168,88,29,0,35,0.905,52,1 705 | 2,129,0,0,0,38.5,0.304,41,0 706 | 4,110,76,20,100,28.4,0.118,27,0 707 | 6,80,80,36,0,39.8,0.177,28,0 708 | 10,115,0,0,0,0,0.261,30,1 709 | 2,127,46,21,335,34.4,0.176,22,0 710 | 9,164,78,0,0,32.8,0.148,45,1 711 | 2,93,64,32,160,38,0.674,23,1 712 | 3,158,64,13,387,31.2,0.295,24,0 713 | 5,126,78,27,22,29.6,0.439,40,0 714 | 10,129,62,36,0,41.2,0.441,38,1 715 | 0,134,58,20,291,26.4,0.352,21,0 716 | 3,102,74,0,0,29.5,0.121,32,0 717 | 7,187,50,33,392,33.9,0.826,34,1 718 | 3,173,78,39,185,33.8,0.97,31,1 719 | 10,94,72,18,0,23.1,0.595,56,0 720 | 1,108,60,46,178,35.5,0.415,24,0 721 | 5,97,76,27,0,35.6,0.378,52,1 722 | 4,83,86,19,0,29.3,0.317,34,0 723 | 1,114,66,36,200,38.1,0.289,21,0 724 | 1,149,68,29,127,29.3,0.349,42,1 725 | 5,117,86,30,105,39.1,0.251,42,0 726 | 1,111,94,0,0,32.8,0.265,45,0 727 | 4,112,78,40,0,39.4,0.236,38,0 728 | 1,116,78,29,180,36.1,0.496,25,0 729 | 0,141,84,26,0,32.4,0.433,22,0 730 | 2,175,88,0,0,22.9,0.326,22,0 731 | 2,92,52,0,0,30.1,0.141,22,0 732 | 3,130,78,23,79,28.4,0.323,34,1 733 | 8,120,86,0,0,28.4,0.259,22,1 734 | 2,174,88,37,120,44.5,0.646,24,1 735 | 2,106,56,27,165,29,0.426,22,0 736 | 2,105,75,0,0,23.3,0.56,53,0 737 | 4,95,60,32,0,35.4,0.284,28,0 738 | 0,126,86,27,120,27.4,0.515,21,0 739 | 8,65,72,23,0,32,0.6,42,0 740 | 2,99,60,17,160,36.6,0.453,21,0 741 | 1,102,74,0,0,39.5,0.293,42,1 742 | 11,120,80,37,150,42.3,0.785,48,1 743 | 3,102,44,20,94,30.8,0.4,26,0 744 | 1,109,58,18,116,28.5,0.219,22,0 745 | 9,140,94,0,0,32.7,0.734,45,1 746 | 13,153,88,37,140,40.6,1.174,39,0 747 | 12,100,84,33,105,30,0.488,46,0 748 | 1,147,94,41,0,49.3,0.358,27,1 749 | 1,81,74,41,57,46.3,1.096,32,0 750 | 3,187,70,22,200,36.4,0.408,36,1 751 | 6,162,62,0,0,24.3,0.178,50,1 752 | 4,136,70,0,0,31.2,1.182,22,1 753 | 1,121,78,39,74,39,0.261,28,0 754 | 3,108,62,24,0,26,0.223,25,0 755 | 0,181,88,44,510,43.3,0.222,26,1 756 | 8,154,78,32,0,32.4,0.443,45,1 757 | 1,128,88,39,110,36.5,1.057,37,1 758 | 7,137,90,41,0,32,0.391,39,0 759 | 0,123,72,0,0,36.3,0.258,52,1 760 | 1,106,76,0,0,37.5,0.197,26,0 761 | 6,190,92,0,0,35.5,0.278,66,1 762 | 2,88,58,26,16,28.4,0.766,22,0 763 | 9,170,74,31,0,44,0.403,43,1 764 | 9,89,62,0,0,22.5,0.142,33,0 765 | 10,101,76,48,180,32.9,0.171,63,0 766 | 2,122,70,27,0,36.8,0.34,27,0 767 | 5,121,72,23,112,26.2,0.245,30,0 768 | 1,126,60,0,0,30.1,0.349,47,1 769 | 1,93,70,31,0,30.4,0.315,23,0 770 | -------------------------------------------------------------------------------- /Machine Learning Analysis on Thyroidism.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "%matplotlib inline\n", 10 | "import pandas as pd\n", 11 | "import numpy as np\n", 12 | "import matplotlib.pyplot as plt\n", 13 | "import seaborn as sns" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": {}, 20 | "outputs": [ 21 | { 22 | "name": "stdout", 23 | "output_type": "stream", 24 | "text": [ 25 | "Index(['T3_resin', 'Serum_thyroxin', 'Serum_triiodothyronine', 'Basal_TSH',\n", 26 | " 'Abs_diff_TSH', 'Outcome'],\n", 27 | " dtype='object')\n" 28 | ] 29 | } 30 | ], 31 | "source": [ 32 | "thyroid_data = pd.read_csv('datasets/thyroid_data.csv')\n", 33 | "print(thyroid_data.columns)" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 3, 39 | "metadata": {}, 40 | "outputs": [ 41 | { 42 | "data": { 43 | "text/plain": [ 44 | "(215, 6)" 45 | ] 46 | }, 47 | "execution_count": 3, 48 | "metadata": {}, 49 | "output_type": "execute_result" 50 | } 51 | ], 52 | "source": [ 53 | "thyroid_data.shape" 54 | ] 55 | }, 56 | { 57 | "cell_type": "code", 58 | "execution_count": 4, 59 | "metadata": {}, 60 | "outputs": [ 61 | { 62 | "data": { 63 | "text/html": [ 64 | "
\n", 65 | "\n", 78 | "\n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | "
T3_resinSerum_thyroxinSerum_triiodothyronineBasal_TSHAbs_diff_TSHOutcome
010710.12.20.92.71
11139.93.12.05.91
212712.92.41.40.61
31095.31.61.41.51
41057.31.51.5-0.11
\n", 138 | "
" 139 | ], 140 | "text/plain": [ 141 | " T3_resin Serum_thyroxin Serum_triiodothyronine Basal_TSH Abs_diff_TSH \\\n", 142 | "0 107 10.1 2.2 0.9 2.7 \n", 143 | "1 113 9.9 3.1 2.0 5.9 \n", 144 | "2 127 12.9 2.4 1.4 0.6 \n", 145 | "3 109 5.3 1.6 1.4 1.5 \n", 146 | "4 105 7.3 1.5 1.5 -0.1 \n", 147 | "\n", 148 | " Outcome \n", 149 | "0 1 \n", 150 | "1 1 \n", 151 | "2 1 \n", 152 | "3 1 \n", 153 | "4 1 " 154 | ] 155 | }, 156 | "execution_count": 4, 157 | "metadata": {}, 158 | "output_type": "execute_result" 159 | } 160 | ], 161 | "source": [ 162 | "thyroid_data.head()" 163 | ] 164 | }, 165 | { 166 | "cell_type": "code", 167 | "execution_count": 5, 168 | "metadata": {}, 169 | "outputs": [ 170 | { 171 | "data": { 172 | "text/plain": [ 173 | "Outcome\n", 174 | "1 150\n", 175 | "2 35\n", 176 | "3 30\n", 177 | "dtype: int64" 178 | ] 179 | }, 180 | "execution_count": 5, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "thyroid_data.groupby('Outcome').size()" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 6, 192 | "metadata": {}, 193 | "outputs": [ 194 | { 195 | "data": { 196 | "text/plain": [ 197 | "array([[,\n", 198 | " ],\n", 199 | " [,\n", 200 | " ],\n", 201 | " [,\n", 202 | " ]],\n", 203 | " dtype=object)" 204 | ] 205 | }, 206 | "execution_count": 6, 207 | "metadata": {}, 208 | "output_type": "execute_result" 209 | }, 210 | { 211 | "data": { 212 | "image/png": "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\n", 213 | "text/plain": [ 214 | "
" 215 | ] 216 | }, 217 | "metadata": { 218 | "needs_background": "light" 219 | }, 220 | "output_type": "display_data" 221 | } 222 | ], 223 | "source": [ 224 | "thyroid_data.hist(figsize=(9, 9))" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 7, 230 | "metadata": {}, 231 | "outputs": [ 232 | { 233 | "data": { 234 | "text/plain": [ 235 | "T3_resin 0\n", 236 | "Serum_thyroxin 0\n", 237 | "Serum_triiodothyronine 0\n", 238 | "Basal_TSH 0\n", 239 | "Abs_diff_TSH 0\n", 240 | "Outcome 0\n", 241 | "dtype: int64" 242 | ] 243 | }, 244 | "execution_count": 7, 245 | "metadata": {}, 246 | "output_type": "execute_result" 247 | } 248 | ], 249 | "source": [ 250 | "thyroid_data.isnull().sum()" 251 | ] 252 | }, 253 | { 254 | "cell_type": "code", 255 | "execution_count": 10, 256 | "metadata": {}, 257 | "outputs": [ 258 | { 259 | "data": { 260 | "text/plain": [ 261 | "T3_resin 0\n", 262 | "Serum_thyroxin 0\n", 263 | "Serum_triiodothyronine 0\n", 264 | "Basal_TSH 0\n", 265 | "Abs_diff_TSH 0\n", 266 | "Outcome 0\n", 267 | "dtype: int64" 268 | ] 269 | }, 270 | "execution_count": 10, 271 | "metadata": {}, 272 | "output_type": "execute_result" 273 | } 274 | ], 275 | "source": [ 276 | "thyroid_data.isna().sum()" 277 | ] 278 | }, 279 | { 280 | "cell_type": "code", 281 | "execution_count": 8, 282 | "metadata": {}, 283 | "outputs": [], 284 | "source": [ 285 | "# Features/Response\n", 286 | "feature_names = ['T3_resin', 'Serum_thyroxin', 'Serum_triiodothyronine', 'Basal_TSH', 'Abs_diff_TSH']\n", 287 | "X = thyroid_data[feature_names]\n", 288 | "y = thyroid_data.Outcome" 289 | ] 290 | }, 291 | { 292 | "cell_type": "code", 293 | "execution_count": 9, 294 | "metadata": {}, 295 | "outputs": [], 296 | "source": [ 297 | "from sklearn.model_selection import cross_val_score\n", 298 | "from sklearn.model_selection import StratifiedKFold\n", 299 | "\n", 300 | "from sklearn.neighbors import KNeighborsClassifier\n", 301 | "from sklearn.linear_model import LogisticRegression\n", 302 | "from sklearn.svm import SVC\n", 303 | "from sklearn.ensemble import GradientBoostingClassifier\n", 304 | "from sklearn.ensemble import RandomForestClassifier\n", 305 | "from sklearn.tree import DecisionTreeClassifier\n", 306 | "from sklearn.naive_bayes import BernoulliNB\n", 307 | "from sklearn.naive_bayes import GaussianNB\n", 308 | "from sklearn.neural_network import MLPClassifier" 309 | ] 310 | }, 311 | { 312 | "cell_type": "code", 313 | "execution_count": 11, 314 | "metadata": {}, 315 | "outputs": [], 316 | "source": [ 317 | "# Initial model selection process\n", 318 | "models = []\n", 319 | "\n", 320 | "models.append(('KNN', KNeighborsClassifier()))\n", 321 | "models.append(('SVC', SVC(gamma='scale')))\n", 322 | "models.append(('LR', LogisticRegression(solver='lbfgs', max_iter=4000, multi_class='auto')))\n", 323 | "models.append(('DT', DecisionTreeClassifier()))\n", 324 | "models.append(('GNB', GaussianNB()))\n", 325 | "models.append(('RF', RandomForestClassifier(n_estimators=100)))\n", 326 | "models.append(('GB', GradientBoostingClassifier()))" 327 | ] 328 | }, 329 | { 330 | "cell_type": "code", 331 | "execution_count": 12, 332 | "metadata": {}, 333 | "outputs": [ 334 | { 335 | "name": "stdout", 336 | "output_type": "stream", 337 | "text": [ 338 | " Name Score\n", 339 | "0 KNN 0.925758\n", 340 | "1 SVC 0.939394\n", 341 | "2 LR 0.967316\n", 342 | "3 DT 0.939394\n", 343 | "4 GNB 0.967749\n", 344 | "5 RF 0.958009\n", 345 | "6 GB 0.939610\n" 346 | ] 347 | } 348 | ], 349 | "source": [ 350 | "strat_k_fold = StratifiedKFold(n_splits=10, random_state=10)\n", 351 | "\n", 352 | "names = []\n", 353 | "scores = []\n", 354 | "\n", 355 | "for name, model in models:\n", 356 | " \n", 357 | " score = cross_val_score(model, X, y, cv=strat_k_fold, scoring='accuracy').mean()\n", 358 | " names.append(name)\n", 359 | " scores.append(score)\n", 360 | "\n", 361 | "kf_cross_val = pd.DataFrame({'Name': names, 'Score': scores})\n", 362 | "print(kf_cross_val)" 363 | ] 364 | }, 365 | { 366 | "cell_type": "code", 367 | "execution_count": 13, 368 | "metadata": {}, 369 | "outputs": [ 370 | { 371 | "data": { 372 | "image/png": "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P3nr1q29ZcuWfscdd7i7+9ixY/3ll192d/epU6d6q1atvHXr1n7dddeFmt3dZ82a5e3bt/d27dr50KFDffv27WFZjx49/LXXXtvtvu655x7Pzs72k08+2bt27erz58+vUe37+vOfzufe3f2pp57yQYMG1ajmEm+//bafc845Yfquu+7yu+66q9z2W7du9aZNm5a5bOjQoT516lTfuHGjt2zZMsxfu3atn3TSSe7ufs455/jbb7/t7u7ffvutN2rUKJzJVh3pfu+sWLHCc3JyfNOmTe7u/tlnn1VaIymefZTxD/mq/u3PoZDKf4zs7Gxft26du7vv2rXLjzjiiD22U/JmWr9+vS9YsMB79+4dlj3zzDN+0003henhw4f7K6+84j169NgrobAv0/OfOd9++623aNHCV69eHT5UFy9evFubwsJC37lzp7u7/+pXv/KxY8e6u/umTZvCh2phYaG3atXKlyxZEj7sly9f7u7ujz/+uF988cXu7v7QQw/5jTfe6O7ukyZN8ksvvbRG9af7vXPLLbf4Y489VqUaUw2FOK9ozojXX3+d4cOHs3PnTq6//vrQh1hi7dq1XHvttRQWFtKwYUN+//vfk5WVRV5eHjfddBNbtmyhbt26jBkzhkGDBgFw9dVXM2/ePBo0aADAxIkTycnJYfPmzQwePJhPPvmE4uJiRo4cyTXXXFPt2svqV3333Xd3a1PSrzp8+PDd+lUbNWrEunXr6Nu3L/n5+dx///00adKEQw89lI8//pg1a9aQlZXFtGnT2LFjBwAffPAB69at44ILLmD8+PHVrrvbg92qvW6c3vrJW1Vqvy8+/w/9/JVqrRe3Yb++sErt69Wrx0MPPcS5557Lzp07ufbaa2nbti3jxo0jNzeXfv36MXfuXEaPHo2ZccYZZzBhwgQAli1bxo033kidOnXYtWsXo0aNCt1fjz32GJdccgl16tThqKOOCmeoXXfddVx11VW0atWKhg0bMnny5Bo93nS/d1asWAFAt27d2LlzJ7fddhvnnXdejR5Dif0qFEpOa/vzn/9MVlYWnTt3pl+/frv1j5ac1jZ06FDmzJnD6NGjefbZZznssMN45plnaN26NRs2bKBTp06ce+65HHnkkUDiCs6BAwfudn8TJkwgOzubV155hcLCQtq0acOVV15J/fr1q1W/p9ivOmzYMCZOnMgZZ5yxW79qs2bN+Oijj9iwYQP9+/dn4MCB/OAHP+Dhhx9m0KBB1KlTh9NOO43Vq1eza9cuRowYscdZJgcyPf+Z1adPH/r06bPbvNtvvz3cHjhw4B7/BwFOO+00/v73v5e5zQEDBjBgwIA95h9yyCFMnTq1hhV/J53vHYDi4mJWrlzJ3LlzKSgooHv37ixevDh8XtXEfhUKyae1AeG0tuRQWLp0KQ888ACQOK2t5GKcE044IbRp0qQJ3//+9yksLKzwSTYztm7diruzbds2GjZsGF7k6qjKGSQA27Zt48UXXwx7MMlt2rZty/z58xk4cCAXXnghF16Y+Ob26KOPUrduXbZu3crixYvp2bMnAP/85z/p168f06dPJzc3t9qPYV+m5z/97hy854d8bTDm9y9UqX063zsl99e1a1cOOuggWrRoQZs2bVi5ciWdO3eu8mMtbb8aOrump7WVWLBgATt27OD4448P88aMGUOHDh0YMWIE27dvB2DYsGEsW7aMJk2a0L59e37zm99Qp071n9KanEFSUFDA119/DcAXX3zBW2+9RZs2bQDYuHFjmP/b3/6W66+/ngYNGlBUVMSaNWtYs2YNXbt2PeA+kErT8y/Vlc73DkD//v154403wnZXrFgRvgzX1H4VCqnuwpV3WhvAp59+ylVXXcVTTz0VPuDvvvtuPv74YxYuXMimTZu49957AZg5cyY5OTls2LCBvLw8hg0bFi6UqY7kftWTTjqJH/7wh6FfteQqzblz59KmTRtOOOEEPvvsM8aMGQMk+lW7dOnCySefTI8ePRg5ciTt27cHYPjw4WRnZ9OtWzdGjRq1216RfEfPv1RXut875557Lo0aNSI7O5tevXpx//331/h07BJW1gdpbZabm+vlnc/9zjvvcNtttzFz5kwg8WEO7HY5fLJt27Zx4oknhvOFt2zZQs+ePRk9ejSXXnppmevMnTuX8ePH8+qrr9K3b19GjRpF9+7dATjzzDO55557OPXUU2v0GPc1+8uB5n3Rvn6geX/pPtoXmNl77l7pruh+dUwheReuadOmTJ48meeff363NkVFRTRs2JA6derstgu3Y8cOBgwYwJAhQ/YIhE8//ZRjjjkGd2fatGm0a5f4zaBjjz2W2bNn0717dz777DOWL19erV24T25vX81HHK9jx5V98G5/Mu+MHpkuoVw93pyX6RKkEsvu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\n", 373 | "text/plain": [ 374 | "
" 375 | ] 376 | }, 377 | "metadata": { 378 | "needs_background": "light" 379 | }, 380 | "output_type": "display_data" 381 | } 382 | ], 383 | "source": [ 384 | "axis = sns.barplot(x = 'Name', y = 'Score', data = kf_cross_val)\n", 385 | "axis.set(xlabel='Classifier', ylabel='Accuracy')\n", 386 | "\n", 387 | "for p in axis.patches:\n", 388 | " height = p.get_height()\n", 389 | " axis.text(p.get_x() + p.get_width()/2, height + 0.005, '{:1.4f}'.format(height), ha=\"center\") \n", 390 | " \n", 391 | "plt.show()" 392 | ] 393 | } 394 | ], 395 | "metadata": { 396 | "kernelspec": { 397 | "display_name": "Python 3", 398 | "language": "python", 399 | "name": "python3" 400 | }, 401 | "language_info": { 402 | "codemirror_mode": { 403 | "name": "ipython", 404 | "version": 3 405 | }, 406 | "file_extension": ".py", 407 | "mimetype": "text/x-python", 408 | "name": "python", 409 | "nbconvert_exporter": "python", 410 | "pygments_lexer": "ipython3", 411 | "version": "3.6.6" 412 | } 413 | }, 414 | "nbformat": 4, 415 | "nbformat_minor": 2 416 | } 417 | -------------------------------------------------------------------------------- /Classification Model Evaluation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Classification Model Evaluation" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "%matplotlib inline\n", 17 | "import pandas as pd\n", 18 | "import numpy as np\n", 19 | "import matplotlib.pyplot as plt\n", 20 | "import itertools\n", 21 | "from sklearn.linear_model import LogisticRegression\n", 22 | "from sklearn.model_selection import train_test_split, StratifiedKFold, cross_val_score\n", 23 | "from sklearn.metrics import accuracy_score" 24 | ] 25 | }, 26 | { 27 | "cell_type": "markdown", 28 | "metadata": {}, 29 | "source": [ 30 | "## Model Selection Process" 31 | ] 32 | }, 33 | { 34 | "cell_type": "markdown", 35 | "metadata": {}, 36 | "source": [ 37 | "### Data Cleaning and Preparation" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 2, 43 | "metadata": {}, 44 | "outputs": [ 45 | { 46 | "data": { 47 | "text/html": [ 48 | "
\n", 49 | "\n", 62 | "\n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | "
PregnanciesGlucoseBloodPressureSkinThicknessInsulinBMIDiabetesPedigreeFunctionAgeOutcome
061487235033.60.627501
11856629026.60.351310
\n", 104 | "
" 105 | ], 106 | "text/plain": [ 107 | " Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n", 108 | "0 6 148 72 35 0 33.6 \n", 109 | "1 1 85 66 29 0 26.6 \n", 110 | "\n", 111 | " DiabetesPedigreeFunction Age Outcome \n", 112 | "0 0.627 50 1 \n", 113 | "1 0.351 31 0 " 114 | ] 115 | }, 116 | "execution_count": 2, 117 | "metadata": {}, 118 | "output_type": "execute_result" 119 | } 120 | ], 121 | "source": [ 122 | "# Read data\n", 123 | "diabetes = pd.read_csv('datasets/diabetes.csv')\n", 124 | "diabetes.head(2)" 125 | ] 126 | }, 127 | { 128 | "cell_type": "code", 129 | "execution_count": 3, 130 | "metadata": {}, 131 | "outputs": [ 132 | { 133 | "name": "stdout", 134 | "output_type": "stream", 135 | "text": [ 136 | "(768, 9)\n" 137 | ] 138 | } 139 | ], 140 | "source": [ 141 | "# Dimensions of the data set\n", 142 | "print(diabetes.shape)" 143 | ] 144 | }, 145 | { 146 | "cell_type": "code", 147 | "execution_count": 4, 148 | "metadata": {}, 149 | "outputs": [ 150 | { 151 | "name": "stdout", 152 | "output_type": "stream", 153 | "text": [ 154 | "(724, 9)\n" 155 | ] 156 | } 157 | ], 158 | "source": [ 159 | "# Remove unusual rows of data\n", 160 | "diabetes_mod = diabetes[(diabetes.BloodPressure != 0) & (diabetes.BMI != 0) & (diabetes.Glucose != 0)]\n", 161 | "\n", 162 | "# Dimensions of data set after cleansing\n", 163 | "print(diabetes_mod.shape)" 164 | ] 165 | }, 166 | { 167 | "cell_type": "markdown", 168 | "metadata": {}, 169 | "source": [ 170 | "### Feature Selection" 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "execution_count": 5, 176 | "metadata": {}, 177 | "outputs": [], 178 | "source": [ 179 | "# Features/Response\n", 180 | "feature_names = ['Pregnancies', 'Glucose', 'BMI', 'DiabetesPedigreeFunction']\n", 181 | "X = diabetes_mod[feature_names]\n", 182 | "y = diabetes_mod.Outcome" 183 | ] 184 | }, 185 | { 186 | "cell_type": "markdown", 187 | "metadata": {}, 188 | "source": [ 189 | "### Model Selection" 190 | ] 191 | }, 192 | { 193 | "cell_type": "code", 194 | "execution_count": 6, 195 | "metadata": {}, 196 | "outputs": [], 197 | "source": [ 198 | "logreg = LogisticRegression(C=1, multi_class='ovr', penalty='l2', solver='liblinear')" 199 | ] 200 | }, 201 | { 202 | "cell_type": "markdown", 203 | "metadata": {}, 204 | "source": [ 205 | "## Model Evaluation Procedures" 206 | ] 207 | }, 208 | { 209 | "cell_type": "markdown", 210 | "metadata": {}, 211 | "source": [ 212 | "### 01. Train/Test Split" 213 | ] 214 | }, 215 | { 216 | "cell_type": "code", 217 | "execution_count": 7, 218 | "metadata": {}, 219 | "outputs": [ 220 | { 221 | "name": "stdout", 222 | "output_type": "stream", 223 | "text": [ 224 | "Accuracy 0.7955801104972375\n" 225 | ] 226 | } 227 | ], 228 | "source": [ 229 | "# Split the data into train and test sets\n", 230 | "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify = y, random_state = 0)\n", 231 | "\n", 232 | "logreg.fit(X_train, y_train)\n", 233 | "y_pred = logreg.predict(X_test)\n", 234 | "\n", 235 | "accuracy = accuracy_score(y_test, y_pred)\n", 236 | "\n", 237 | "print(\"Accuracy {}\".format(accuracy))" 238 | ] 239 | }, 240 | { 241 | "cell_type": "markdown", 242 | "metadata": {}, 243 | "source": [ 244 | "### 02. K-Fold Cross Validation" 245 | ] 246 | }, 247 | { 248 | "cell_type": "code", 249 | "execution_count": 8, 250 | "metadata": {}, 251 | "outputs": [ 252 | { 253 | "name": "stdout", 254 | "output_type": "stream", 255 | "text": [ 256 | "Accuracy 0.7805877119643279\n" 257 | ] 258 | } 259 | ], 260 | "source": [ 261 | "accuracy = cross_val_score(logreg, X, y, cv = 10, scoring='accuracy').mean()\n", 262 | "\n", 263 | "print(\"Accuracy {}\".format(accuracy))" 264 | ] 265 | }, 266 | { 267 | "cell_type": "markdown", 268 | "metadata": {}, 269 | "source": [ 270 | "## Model Evaluation Metrics" 271 | ] 272 | }, 273 | { 274 | "cell_type": "markdown", 275 | "metadata": {}, 276 | "source": [ 277 | "### 01. Classification Accuracy" 278 | ] 279 | }, 280 | { 281 | "cell_type": "markdown", 282 | "metadata": { 283 | "collapsed": true 284 | }, 285 | "source": [ 286 | "We already discussed how classification accuracy works in the previous section." 287 | ] 288 | }, 289 | { 290 | "cell_type": "markdown", 291 | "metadata": {}, 292 | "source": [ 293 | "### 02. Confusion Matrix" 294 | ] 295 | }, 296 | { 297 | "cell_type": "code", 298 | "execution_count": 9, 299 | "metadata": {}, 300 | "outputs": [], 301 | "source": [ 302 | "from sklearn.metrics import confusion_matrix" 303 | ] 304 | }, 305 | { 306 | "cell_type": "code", 307 | "execution_count": 10, 308 | "metadata": {}, 309 | "outputs": [], 310 | "source": [ 311 | "# Method to plot the confusion matrix\n", 312 | "def plot_confusion_matrix(cm, classes, normalize=False, title='Confusion matrix', cmap=plt.cm.Blues):\n", 313 | "\n", 314 | " if normalize:\n", 315 | " cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", 316 | " print(\"Normalized confusion matrix\")\n", 317 | " else:\n", 318 | " print('Confusion matrix, without normalization')\n", 319 | "\n", 320 | " print(cm)\n", 321 | "\n", 322 | " plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", 323 | " plt.title(title)\n", 324 | " plt.colorbar()\n", 325 | " tick_marks = np.arange(len(classes))\n", 326 | " plt.xticks(tick_marks, classes, rotation=45)\n", 327 | " plt.yticks(tick_marks, classes)\n", 328 | "\n", 329 | " fmt = '.2f' if normalize else 'd'\n", 330 | " thresh = cm.max() / 2.\n", 331 | " for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n", 332 | " plt.text(j, i, format(cm[i, j], fmt),\n", 333 | " horizontalalignment=\"center\",\n", 334 | " color=\"white\" if cm[i, j] > thresh else \"black\")\n", 335 | "\n", 336 | " plt.tight_layout()\n", 337 | " plt.ylabel('True label')\n", 338 | " plt.xlabel('Predicted label')\n", 339 | " plt.show()" 340 | ] 341 | }, 342 | { 343 | "cell_type": "code", 344 | "execution_count": 11, 345 | "metadata": {}, 346 | "outputs": [ 347 | { 348 | "name": "stdout", 349 | "output_type": "stream", 350 | "text": [ 351 | "[[108 11]\n", 352 | " [ 26 36]]\n" 353 | ] 354 | } 355 | ], 356 | "source": [ 357 | "confusion = confusion_matrix(y_test, y_pred)\n", 358 | "print(confusion)" 359 | ] 360 | }, 361 | { 362 | "cell_type": "code", 363 | "execution_count": 12, 364 | "metadata": {}, 365 | "outputs": [ 366 | { 367 | "name": "stdout", 368 | "output_type": "stream", 369 | "text": [ 370 | "Confusion matrix, without normalization\n", 371 | "[[108 11]\n", 372 | " [ 26 36]]\n" 373 | ] 374 | }, 375 | { 376 | "data": { 377 | "image/png": "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\n", 378 | "text/plain": [ 379 | "
" 380 | ] 381 | }, 382 | "metadata": { 383 | "needs_background": "light" 384 | }, 385 | "output_type": "display_data" 386 | } 387 | ], 388 | "source": [ 389 | "plot_confusion_matrix(confusion, classes=['Non Diabetic', 'Diabetic'], title='Confusion matrix')" 390 | ] 391 | }, 392 | { 393 | "cell_type": "code", 394 | "execution_count": 13, 395 | "metadata": {}, 396 | "outputs": [], 397 | "source": [ 398 | "# True Positives\n", 399 | "TP = confusion[1, 1]\n", 400 | "\n", 401 | "# True Negatives\n", 402 | "TN = confusion[0, 0] \n", 403 | "\n", 404 | "# False Positives\n", 405 | "FP = confusion[0, 1] \n", 406 | "\n", 407 | "# False Negatives\n", 408 | "FN = confusion[1, 0] " 409 | ] 410 | }, 411 | { 412 | "cell_type": "markdown", 413 | "metadata": { 414 | "collapsed": true 415 | }, 416 | "source": [ 417 | "### 03. Metrics computed from the Confusion Matrix" 418 | ] 419 | }, 420 | { 421 | "cell_type": "code", 422 | "execution_count": 14, 423 | "metadata": {}, 424 | "outputs": [], 425 | "source": [ 426 | "from sklearn.metrics import recall_score, precision_score" 427 | ] 428 | }, 429 | { 430 | "cell_type": "markdown", 431 | "metadata": {}, 432 | "source": [ 433 | "#### Classification accuracy" 434 | ] 435 | }, 436 | { 437 | "cell_type": "code", 438 | "execution_count": 15, 439 | "metadata": {}, 440 | "outputs": [ 441 | { 442 | "name": "stdout", 443 | "output_type": "stream", 444 | "text": [ 445 | "0.7955801104972375\n", 446 | "0.7955801104972375\n" 447 | ] 448 | } 449 | ], 450 | "source": [ 451 | "print((TP + TN) / float(TP + TN + FP + FN))\n", 452 | "print(accuracy_score(y_test, y_pred))" 453 | ] 454 | }, 455 | { 456 | "cell_type": "markdown", 457 | "metadata": {}, 458 | "source": [ 459 | "#### Sensitivity/Recall" 460 | ] 461 | }, 462 | { 463 | "cell_type": "code", 464 | "execution_count": 16, 465 | "metadata": {}, 466 | "outputs": [ 467 | { 468 | "name": "stdout", 469 | "output_type": "stream", 470 | "text": [ 471 | "0.5806451612903226\n", 472 | "0.5806451612903226\n" 473 | ] 474 | } 475 | ], 476 | "source": [ 477 | "print(TP / float(TP + FN))\n", 478 | "print(recall_score(y_test, y_pred))" 479 | ] 480 | }, 481 | { 482 | "cell_type": "markdown", 483 | "metadata": {}, 484 | "source": [ 485 | "#### Specificity" 486 | ] 487 | }, 488 | { 489 | "cell_type": "code", 490 | "execution_count": 17, 491 | "metadata": {}, 492 | "outputs": [ 493 | { 494 | "name": "stdout", 495 | "output_type": "stream", 496 | "text": [ 497 | "0.907563025210084\n" 498 | ] 499 | } 500 | ], 501 | "source": [ 502 | "print(TN / float(TN + FP))" 503 | ] 504 | }, 505 | { 506 | "cell_type": "markdown", 507 | "metadata": {}, 508 | "source": [ 509 | "#### False Positive Rate" 510 | ] 511 | }, 512 | { 513 | "cell_type": "code", 514 | "execution_count": 18, 515 | "metadata": {}, 516 | "outputs": [ 517 | { 518 | "name": "stdout", 519 | "output_type": "stream", 520 | "text": [ 521 | "0.09243697478991597\n" 522 | ] 523 | } 524 | ], 525 | "source": [ 526 | "print(FP / float(TN + FP))" 527 | ] 528 | }, 529 | { 530 | "cell_type": "markdown", 531 | "metadata": {}, 532 | "source": [ 533 | "#### Precision" 534 | ] 535 | }, 536 | { 537 | "cell_type": "code", 538 | "execution_count": 19, 539 | "metadata": {}, 540 | "outputs": [ 541 | { 542 | "name": "stdout", 543 | "output_type": "stream", 544 | "text": [ 545 | "0.7659574468085106\n", 546 | "0.7659574468085106\n" 547 | ] 548 | } 549 | ], 550 | "source": [ 551 | "print(TP / float(TP + FP))\n", 552 | "print(precision_score(y_test, y_pred))" 553 | ] 554 | }, 555 | { 556 | "cell_type": "markdown", 557 | "metadata": {}, 558 | "source": [ 559 | "### Adjusting Classification Threshold" 560 | ] 561 | }, 562 | { 563 | "cell_type": "code", 564 | "execution_count": 20, 565 | "metadata": {}, 566 | "outputs": [ 567 | { 568 | "data": { 569 | "text/plain": [ 570 | "array([0, 0, 0, 1, 1, 0, 0, 0, 0, 0], dtype=int64)" 571 | ] 572 | }, 573 | "execution_count": 20, 574 | "metadata": {}, 575 | "output_type": "execute_result" 576 | } 577 | ], 578 | "source": [ 579 | "# print the first 10 predicted responses\n", 580 | "logreg.predict(X_test)[0:10]" 581 | ] 582 | }, 583 | { 584 | "cell_type": "code", 585 | "execution_count": 21, 586 | "metadata": {}, 587 | "outputs": [ 588 | { 589 | "data": { 590 | "text/plain": [ 591 | "array([[0.80085377, 0.19914623],\n", 592 | " [0.70450063, 0.29549937],\n", 593 | " [0.81765257, 0.18234743],\n", 594 | " [0.45582948, 0.54417052],\n", 595 | " [0.32622925, 0.67377075],\n", 596 | " [0.79674719, 0.20325281],\n", 597 | " [0.74752722, 0.25247278],\n", 598 | " [0.64438483, 0.35561517],\n", 599 | " [0.62830673, 0.37169327],\n", 600 | " [0.69703945, 0.30296055]])" 601 | ] 602 | }, 603 | "execution_count": 21, 604 | "metadata": {}, 605 | "output_type": "execute_result" 606 | } 607 | ], 608 | "source": [ 609 | "# print the first 10 predicted probabilities of class membership\n", 610 | "logreg.predict_proba(X_test)[0:10, :]" 611 | ] 612 | }, 613 | { 614 | "cell_type": "code", 615 | "execution_count": 22, 616 | "metadata": {}, 617 | "outputs": [], 618 | "source": [ 619 | "# store the predicted probabilities for class 1 (diabetic)\n", 620 | "y_pred_prob = logreg.predict_proba(X_test)[:, 1]" 621 | ] 622 | }, 623 | { 624 | "cell_type": "code", 625 | "execution_count": 23, 626 | "metadata": {}, 627 | "outputs": [ 628 | { 629 | "data": { 630 | "text/plain": [ 631 | "Text(0, 0.5, 'Frequency')" 632 | ] 633 | }, 634 | "execution_count": 23, 635 | "metadata": {}, 636 | "output_type": "execute_result" 637 | }, 638 | { 639 | "data": { 640 | "image/png": "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\n", 641 | "text/plain": [ 642 | "
" 643 | ] 644 | }, 645 | "metadata": { 646 | "needs_background": "light" 647 | }, 648 | "output_type": "display_data" 649 | } 650 | ], 651 | "source": [ 652 | "# histogram of predicted probabilities\n", 653 | "plt.hist(y_pred_prob, bins=8, linewidth=1.2)\n", 654 | "plt.xlim(0, 1)\n", 655 | "plt.title('Histogram of predicted probabilities')\n", 656 | "plt.xlabel('Predicted probability of diabetes')\n", 657 | "plt.ylabel('Frequency')" 658 | ] 659 | }, 660 | { 661 | "cell_type": "markdown", 662 | "metadata": {}, 663 | "source": [ 664 | "Decrease the threshold for predicting diabetes in order to increase the sensitivity of the classifier" 665 | ] 666 | }, 667 | { 668 | "cell_type": "code", 669 | "execution_count": 24, 670 | "metadata": {}, 671 | "outputs": [], 672 | "source": [ 673 | "# predict diabetes if the predicted probability is greater than 0.3\n", 674 | "from sklearn.preprocessing import binarize\n", 675 | "\n", 676 | "y_pred_class = binarize([y_pred_prob], 0.3)[0]" 677 | ] 678 | }, 679 | { 680 | "cell_type": "code", 681 | "execution_count": 25, 682 | "metadata": {}, 683 | "outputs": [ 684 | { 685 | "name": "stdout", 686 | "output_type": "stream", 687 | "text": [ 688 | "[[108 11]\n", 689 | " [ 26 36]]\n" 690 | ] 691 | } 692 | ], 693 | "source": [ 694 | "# previous confusion matrix (default threshold of 0.5)\n", 695 | "print(confusion)" 696 | ] 697 | }, 698 | { 699 | "cell_type": "code", 700 | "execution_count": 26, 701 | "metadata": {}, 702 | "outputs": [ 703 | { 704 | "name": "stdout", 705 | "output_type": "stream", 706 | "text": [ 707 | "[[82 37]\n", 708 | " [ 8 54]]\n" 709 | ] 710 | } 711 | ], 712 | "source": [ 713 | "# new confusion matrix (threshold of 0.3)\n", 714 | "confusion_new = confusion_matrix(y_test, y_pred_class)\n", 715 | "print(confusion_new)" 716 | ] 717 | }, 718 | { 719 | "cell_type": "code", 720 | "execution_count": 27, 721 | "metadata": {}, 722 | "outputs": [], 723 | "source": [ 724 | "# True Positives\n", 725 | "TP = confusion_new[1, 1]\n", 726 | "\n", 727 | "# True Negatives\n", 728 | "TN = confusion_new[0, 0] \n", 729 | "\n", 730 | "# False Positives\n", 731 | "FP = confusion_new[0, 1] \n", 732 | "\n", 733 | "# False Negatives\n", 734 | "FN = confusion_new[1, 0] " 735 | ] 736 | }, 737 | { 738 | "cell_type": "code", 739 | "execution_count": 28, 740 | "metadata": {}, 741 | "outputs": [ 742 | { 743 | "name": "stdout", 744 | "output_type": "stream", 745 | "text": [ 746 | "0.8709677419354839\n", 747 | "0.8709677419354839\n" 748 | ] 749 | } 750 | ], 751 | "source": [ 752 | "# sensitivity has increased\n", 753 | "print(TP / float(TP + FN))\n", 754 | "print(recall_score(y_test, y_pred_class))" 755 | ] 756 | }, 757 | { 758 | "cell_type": "code", 759 | "execution_count": 29, 760 | "metadata": {}, 761 | "outputs": [ 762 | { 763 | "name": "stdout", 764 | "output_type": "stream", 765 | "text": [ 766 | "0.6890756302521008\n" 767 | ] 768 | } 769 | ], 770 | "source": [ 771 | "# specificity has decreased\n", 772 | "print(TN / float(TN + FP))" 773 | ] 774 | }, 775 | { 776 | "cell_type": "markdown", 777 | "metadata": {}, 778 | "source": [ 779 | "### 04. ROC Curves and Area Under the Curve (AUC)" 780 | ] 781 | }, 782 | { 783 | "cell_type": "code", 784 | "execution_count": 30, 785 | "metadata": {}, 786 | "outputs": [], 787 | "source": [ 788 | "from sklearn.metrics import roc_curve, roc_auc_score" 789 | ] 790 | }, 791 | { 792 | "cell_type": "code", 793 | "execution_count": 31, 794 | "metadata": {}, 795 | "outputs": [ 796 | { 797 | "data": { 798 | "image/png": "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\n", 799 | "text/plain": [ 800 | "
" 801 | ] 802 | }, 803 | "metadata": { 804 | "needs_background": "light" 805 | }, 806 | "output_type": "display_data" 807 | } 808 | ], 809 | "source": [ 810 | "fpr, tpr, thresholds = roc_curve(y_test, y_pred_prob)\n", 811 | "plt.plot(fpr, tpr)\n", 812 | "plt.xlim([0.0, 1.0])\n", 813 | "plt.ylim([0.0, 1.0])\n", 814 | "plt.title('ROC curve for diabetes classifier')\n", 815 | "plt.xlabel('False Positive Rate (1 - Specificity)')\n", 816 | "plt.ylabel('True Positive Rate (Sensitivity)')\n", 817 | "plt.grid(True)" 818 | ] 819 | }, 820 | { 821 | "cell_type": "code", 822 | "execution_count": 32, 823 | "metadata": {}, 824 | "outputs": [], 825 | "source": [ 826 | "# define a function that accepts a threshold and prints sensitivity and specificity\n", 827 | "def evaluate_threshold(threshold):\n", 828 | " print('Sensitivity:', tpr[thresholds > threshold][-1])\n", 829 | " print('Specificity:', 1 - fpr[thresholds > threshold][-1])" 830 | ] 831 | }, 832 | { 833 | "cell_type": "code", 834 | "execution_count": 33, 835 | "metadata": {}, 836 | "outputs": [ 837 | { 838 | "name": "stdout", 839 | "output_type": "stream", 840 | "text": [ 841 | "Sensitivity: 0.8709677419354839\n", 842 | "Specificity: 0.7058823529411764\n" 843 | ] 844 | } 845 | ], 846 | "source": [ 847 | "evaluate_threshold(0.3)" 848 | ] 849 | }, 850 | { 851 | "cell_type": "code", 852 | "execution_count": 34, 853 | "metadata": {}, 854 | "outputs": [ 855 | { 856 | "name": "stdout", 857 | "output_type": "stream", 858 | "text": [ 859 | "Sensitivity: 0.5806451612903226\n", 860 | "Specificity: 0.907563025210084\n" 861 | ] 862 | } 863 | ], 864 | "source": [ 865 | "evaluate_threshold(0.5)" 866 | ] 867 | }, 868 | { 869 | "cell_type": "code", 870 | "execution_count": 35, 871 | "metadata": {}, 872 | "outputs": [ 873 | { 874 | "name": "stdout", 875 | "output_type": "stream", 876 | "text": [ 877 | "0.8587693141772839\n" 878 | ] 879 | } 880 | ], 881 | "source": [ 882 | "print(roc_auc_score(y_test, y_pred_prob))" 883 | ] 884 | }, 885 | { 886 | "cell_type": "code", 887 | "execution_count": 36, 888 | "metadata": {}, 889 | "outputs": [ 890 | { 891 | "data": { 892 | "text/plain": [ 893 | "0.8374308510638298" 894 | ] 895 | }, 896 | "execution_count": 36, 897 | "metadata": {}, 898 | "output_type": "execute_result" 899 | } 900 | ], 901 | "source": [ 902 | "# calculate cross-validated AUC\n", 903 | "cross_val_score(logreg, X, y, cv=10, scoring='roc_auc').mean()" 904 | ] 905 | } 906 | ], 907 | "metadata": { 908 | "kernelspec": { 909 | "display_name": "Python 3", 910 | "language": "python", 911 | "name": "python3" 912 | }, 913 | "language_info": { 914 | "codemirror_mode": { 915 | "name": "ipython", 916 | "version": 3 917 | }, 918 | "file_extension": ".py", 919 | "mimetype": "text/x-python", 920 | "name": "python", 921 | "nbconvert_exporter": "python", 922 | "pygments_lexer": "ipython3", 923 | "version": "3.6.6" 924 | } 925 | }, 926 | "nbformat": 4, 927 | "nbformat_minor": 2 928 | } 929 | --------------------------------------------------------------------------------