├── .gitignore ├── 01-linear-regression.ipynb ├── 02-logistic-regression.ipynb ├── LICENSE └── README.md /.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 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /01-linear-regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Linear Regression -- Weight Confidence Intervals" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [ 15 | { 16 | "data": { 17 | "image/png": "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\n", 18 | "text/plain": [ 19 | "
" 20 | ] 21 | }, 22 | "metadata": { 23 | "needs_background": "light" 24 | }, 25 | "output_type": "display_data" 26 | } 27 | ], 28 | "source": [ 29 | "import matplotlib.pyplot as plt\n", 30 | "%matplotlib inline\n", 31 | "\n", 32 | "from mlxtend.plotting import scatterplotmatrix\n", 33 | "from sklearn.linear_model import LinearRegression\n", 34 | "from sklearn.preprocessing import StandardScaler\n", 35 | "from scipy import stats\n", 36 | "import numpy as np\n", 37 | "\n", 38 | "\n", 39 | "# https://en.wikipedia.org/wiki/Simple_linear_regression#Confidence_intervals\n", 40 | "# This data set gives average masses for women as a function of their height in a sample of American women of age 30–39. \n", 41 | "\n", 42 | "height_in_m = [1.47, 1.50, 1.52, 1.55, 1.57, 1.60, 1.63, 1.65, 1.68, 1.70, 1.73, 1.75, 1.78, 1.80, 1.83]\n", 43 | "mass_in_kg = [52.21, 53.12, 54.48, 55.84, 57.20, 58.57, 59.93, 61.29, 63.11, 64.47, 66.28, 68.10, 69.92, 72.19, 74.46]\n", 44 | "\n", 45 | "np.random.seed(0)\n", 46 | "rand1 = np.random.normal(size=len(height_in_m), scale=10, loc=5)\n", 47 | "rand2 = np.random.normal(size=len(height_in_m))\n", 48 | "\n", 49 | "X_train = np.array([(i, j, k) for i, j, k in zip(height_in_m, rand1, rand2)])\n", 50 | "y_train = np.array(mass_in_kg)\n", 51 | "\n", 52 | "sc_features = StandardScaler()\n", 53 | "sc_target = StandardScaler()\n", 54 | "\n", 55 | "X_std = sc_features.fit_transform(X_train)\n", 56 | "y_std = sc_target.fit_transform(y_train.reshape(-1, 1)).flatten()\n", 57 | "\n", 58 | "scatterplotmatrix(X_std, names=['Height','Rand 1', 'Rand 2'], \n", 59 | " figsize=(6, 5))\n", 60 | "plt.tight_layout()\n", 61 | "plt.show()" 62 | ] 63 | }, 64 | { 65 | "cell_type": "markdown", 66 | "metadata": {}, 67 | "source": [ 68 | "## Weight coefficients" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 2, 74 | "metadata": {}, 75 | "outputs": [ 76 | { 77 | "data": { 78 | "image/png": "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\n", 79 | "text/plain": [ 80 | "
" 81 | ] 82 | }, 83 | "metadata": { 84 | "needs_background": "light" 85 | }, 86 | "output_type": "display_data" 87 | } 88 | ], 89 | "source": [ 90 | "lr = LinearRegression()\n", 91 | "lr.fit(X_std, y_std)\n", 92 | "\n", 93 | "fig, ax = plt.subplots()\n", 94 | "ax.bar([0, 1, 2], lr.coef_)\n", 95 | "\n", 96 | "ax.set_xticks([0, 1, 2])\n", 97 | "ax.set_xticklabels([f'Height\\n({lr.coef_[0]:.3f})',\n", 98 | " f'Random 1\\n({lr.coef_[1]:.3f})',\n", 99 | " f'Random 2\\n({lr.coef_[2]:.3f})'])\n", 100 | "plt.ylabel('Magnitude')\n", 101 | "plt.show()" 102 | ] 103 | }, 104 | { 105 | "cell_type": "code", 106 | "execution_count": 3, 107 | "metadata": {}, 108 | "outputs": [ 109 | { 110 | "data": { 111 | "text/plain": [ 112 | "-2.1024223302105473e-15" 113 | ] 114 | }, 115 | "execution_count": 3, 116 | "metadata": {}, 117 | "output_type": "execute_result" 118 | } 119 | ], 120 | "source": [ 121 | "lr.intercept_" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": 4, 127 | "metadata": {}, 128 | "outputs": [ 129 | { 130 | "name": "stdout", 131 | "output_type": "stream", 132 | "text": [ 133 | "[65.4774427]\n" 134 | ] 135 | } 136 | ], 137 | "source": [ 138 | "# y = 0.5 in kg\n", 139 | "print(0.5 * np.sqrt(sc_target.var_) + sc_target.mean_)" 140 | ] 141 | }, 142 | { 143 | "cell_type": "code", 144 | "execution_count": 5, 145 | "metadata": {}, 146 | "outputs": [ 147 | { 148 | "name": "stdout", 149 | "output_type": "stream", 150 | "text": [ 151 | "[72.2763281]\n" 152 | ] 153 | } 154 | ], 155 | "source": [ 156 | "# y = 1.5 in kg\n", 157 | "print(1.5 * np.sqrt(sc_target.var_) + sc_target.mean_)" 158 | ] 159 | }, 160 | { 161 | "cell_type": "code", 162 | "execution_count": 6, 163 | "metadata": {}, 164 | "outputs": [ 165 | { 166 | "name": "stdout", 167 | "output_type": "stream", 168 | "text": [ 169 | "[6.7988854]\n" 170 | ] 171 | } 172 | ], 173 | "source": [ 174 | "print(np.sqrt(sc_target.var_))" 175 | ] 176 | }, 177 | { 178 | "cell_type": "code", 179 | "execution_count": 7, 180 | "metadata": {}, 181 | "outputs": [ 182 | { 183 | "data": { 184 | "image/png": "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\n", 185 | "text/plain": [ 186 | "
" 187 | ] 188 | }, 189 | "metadata": { 190 | "needs_background": "light" 191 | }, 192 | "output_type": "display_data" 193 | } 194 | ], 195 | "source": [ 196 | "y_pred = lr.predict(X_std)\n", 197 | "plt.scatter(X_std[:, 0], y_std)\n", 198 | "\n", 199 | "x1, x2 = X_std[:, 0].argmin(), X_std[:, 0].argmax()\n", 200 | "plt.plot([X_std[x1, 0], X_std[x2, 0]], [y_std[x1], y_std[x2]])\n", 201 | "\n", 202 | "plt.show()" 203 | ] 204 | }, 205 | { 206 | "cell_type": "code", 207 | "execution_count": 8, 208 | "metadata": {}, 209 | "outputs": [], 210 | "source": [ 211 | "def std_err_linearregression(y_true, y_pred, x):\n", 212 | " n = len(y_true)\n", 213 | " mse = np.sum((y_true - y_pred)**2) / (n-2)\n", 214 | " std_err = (np.sqrt(mse) / np.sqrt(np.sum((x - np.mean(x, axis=0))**2, axis=0)))\n", 215 | " return std_err\n", 216 | "\n", 217 | "\n", 218 | "def weight_intervals(n, weight, std_err, alpha=0.05):\n", 219 | " t_value = stats.t.ppf(1 - alpha/2, df=n - 2)\n", 220 | " temp = t_value * std_err\n", 221 | " lower = weight - temp\n", 222 | " upper = weight + temp\n", 223 | "\n", 224 | " return lower, upper" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 9, 230 | "metadata": {}, 231 | "outputs": [], 232 | "source": [ 233 | "y_pred = lr.predict(X_std)\n", 234 | "\n", 235 | "std_err = std_err_linearregression(y_std, y_pred, X_std)\n", 236 | "\n", 237 | "lower, upper = weight_intervals(len(y_std), lr.coef_, std_err)" 238 | ] 239 | }, 240 | { 241 | "cell_type": "code", 242 | "execution_count": 25, 243 | "metadata": {}, 244 | "outputs": [ 245 | { 246 | "data": { 247 | "image/png": "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\n", 248 | "text/plain": [ 249 | "
" 250 | ] 251 | }, 252 | "metadata": { 253 | "needs_background": "light" 254 | }, 255 | "output_type": "display_data" 256 | } 257 | ], 258 | "source": [ 259 | "fig, ax = plt.subplots()\n", 260 | "\n", 261 | "ax.hlines(0, xmin=-0.1, xmax=2.2, linestyle='dashed', color='skyblue')\n", 262 | "ax.errorbar([0, 1, 2], lr.coef_, yerr=upper - lr.coef_, fmt='.k')\n", 263 | "\n", 264 | "ax.set_xticks([0, 1, 2])\n", 265 | "ax.set_xticklabels([f'Height\\n({lr.coef_[0]:.3f})',\n", 266 | " f'Random 1\\n({lr.coef_[1]:.3f})',\n", 267 | " f'Random 2\\n({lr.coef_[2]:.3f})'])\n", 268 | "plt.ylabel('Magnitude');" 269 | ] 270 | }, 271 | { 272 | "cell_type": "code", 273 | "execution_count": null, 274 | "metadata": {}, 275 | "outputs": [], 276 | "source": [ 277 | "lower, upper" 278 | ] 279 | }, 280 | { 281 | "cell_type": "markdown", 282 | "metadata": {}, 283 | "source": [ 284 | "---" 285 | ] 286 | }, 287 | { 288 | "cell_type": "code", 289 | "execution_count": 33, 290 | "metadata": {}, 291 | "outputs": [], 292 | "source": [ 293 | "import statsmodels.api as sm\n", 294 | "\n", 295 | "mod = sm.OLS(y_std, X_std)\n", 296 | "res = mod.fit()\n", 297 | "lower, upper = res.conf_int(0.05)[:, 0], res.conf_int(0.05)[:, 1]" 298 | ] 299 | }, 300 | { 301 | "cell_type": "code", 302 | "execution_count": 34, 303 | "metadata": {}, 304 | "outputs": [ 305 | { 306 | "data": { 307 | "text/plain": [ 308 | "(array([ 0.93337272, -0.03899289, -0.03548572]),\n", 309 | " array([1.06536057, 0.09297103, 0.09006354]))" 310 | ] 311 | }, 312 | "execution_count": 34, 313 | "metadata": {}, 314 | "output_type": "execute_result" 315 | } 316 | ], 317 | "source": [ 318 | "lower, upper" 319 | ] 320 | }, 321 | { 322 | "cell_type": "code", 323 | "execution_count": 35, 324 | "metadata": {}, 325 | "outputs": [ 326 | { 327 | "data": { 328 | "image/png": "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\n", 329 | "text/plain": [ 330 | "
" 331 | ] 332 | }, 333 | "metadata": { 334 | "needs_background": "light" 335 | }, 336 | "output_type": "display_data" 337 | } 338 | ], 339 | "source": [ 340 | "fig, ax = plt.subplots()\n", 341 | "\n", 342 | "ax.hlines(0, xmin=-0.1, xmax=2.2, linestyle='dashed', color='skyblue')\n", 343 | "ax.errorbar([0, 1, 2], res.params, yerr=upper - res.params, fmt='.k')\n", 344 | "\n", 345 | "ax.set_xticks([0, 1, 2])\n", 346 | "ax.set_xticklabels([f'Height\\n({lr.coef_[0]:.3f})',\n", 347 | " f'Random 1\\n({lr.coef_[1]:.3f})',\n", 348 | " f'Random 2\\n({lr.coef_[2]:.3f})'])\n", 349 | "plt.ylabel('Magnitude');" 350 | ] 351 | }, 352 | { 353 | "cell_type": "code", 354 | "execution_count": null, 355 | "metadata": {}, 356 | "outputs": [], 357 | "source": [] 358 | } 359 | ], 360 | "metadata": { 361 | "kernelspec": { 362 | "display_name": "Python 3", 363 | "language": "python", 364 | "name": "python3" 365 | }, 366 | "language_info": { 367 | "codemirror_mode": { 368 | "name": "ipython", 369 | "version": 3 370 | }, 371 | "file_extension": ".py", 372 | "mimetype": "text/x-python", 373 | "name": "python", 374 | "nbconvert_exporter": "python", 375 | "pygments_lexer": "ipython3", 376 | "version": "3.7.1" 377 | } 378 | }, 379 | "nbformat": 4, 380 | "nbformat_minor": 4 381 | } 382 | -------------------------------------------------------------------------------- /02-logistic-regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Logistic Regression -- Weight Confidence Intervals" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [ 15 | { 16 | "data": { 17 | "image/png": "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\n", 18 | "text/plain": [ 19 | "
" 20 | ] 21 | }, 22 | "metadata": { 23 | "needs_background": "light" 24 | }, 25 | "output_type": "display_data" 26 | } 27 | ], 28 | "source": [ 29 | "import matplotlib.pyplot as plt\n", 30 | "%matplotlib inline\n", 31 | "\n", 32 | "from mlxtend.plotting import scatterplotmatrix\n", 33 | "from sklearn.linear_model import LogisticRegression\n", 34 | "from sklearn.preprocessing import StandardScaler\n", 35 | "from sklearn.datasets import load_iris\n", 36 | "from scipy import stats\n", 37 | "import numpy as np\n", 38 | "\n", 39 | "\n", 40 | "iris = load_iris()\n", 41 | "\n", 42 | "\n", 43 | "X_train, y_train = iris.data[50:150, :3], iris.target[50:150]\n", 44 | "y_train = np.array(50*[0] + 50*[1])\n", 45 | "\n", 46 | "sc_features = StandardScaler()\n", 47 | "sc_target = StandardScaler()\n", 48 | "\n", 49 | "X_std = sc_features.fit_transform(X_train)\n", 50 | "\n", 51 | "fig, axes = scatterplotmatrix(X_std[y_train==0], figsize=(6, 5), alpha=0.5)\n", 52 | "fig, axes = scatterplotmatrix(X_std[y_train==1], fig_axes=(fig, axes), alpha=0.5,\n", 53 | " names=['Sepal Length (std.)','Sepal Width (std.)', 'Petal Length (std.)'])\n", 54 | "\n", 55 | "plt.tight_layout()\n", 56 | "plt.show()" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 2, 62 | "metadata": {}, 63 | "outputs": [], 64 | "source": [ 65 | "import pandas as pd\n", 66 | "\n", 67 | "df1 = pd.DataFrame(X_std)\n", 68 | "df2 = pd.DataFrame(y_train)\n", 69 | "\n", 70 | "df = pd.concat((df1, df2), axis=1)\n", 71 | "df.columns = ['sepal length', 'sepal width', 'petal length', 'species']\n", 72 | "\n", 73 | "df.to_csv('data.csv', index=None)" 74 | ] 75 | }, 76 | { 77 | "cell_type": "markdown", 78 | "metadata": {}, 79 | "source": [ 80 | "## Weight coefficients" 81 | ] 82 | }, 83 | { 84 | "cell_type": "code", 85 | "execution_count": 3, 86 | "metadata": {}, 87 | "outputs": [ 88 | { 89 | "data": { 90 | "image/png": "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\n", 91 | "text/plain": [ 92 | "
" 93 | ] 94 | }, 95 | "metadata": { 96 | "needs_background": "light" 97 | }, 98 | "output_type": "display_data" 99 | } 100 | ], 101 | "source": [ 102 | "lor = LogisticRegression(random_state=0, solver='newton-cg', C=1e8)\n", 103 | "\n", 104 | "# set C=1e8 to negate regularization to allow comparison with\n", 105 | "# statsmodel coefficients later\n", 106 | "\n", 107 | "lor.fit(X_std, y_train)\n", 108 | "\n", 109 | "fig, ax = plt.subplots()\n", 110 | "ax.bar([0, 1, 2], lor.coef_.flatten())\n", 111 | "\n", 112 | "ax.set_xticks([0, 1, 2])\n", 113 | "ax.set_xticklabels([f'Sepal Length\\n({lor.coef_.flatten()[0]:.3f})',\n", 114 | " f'Sepal Width\\n({lor.coef_.flatten()[1]:.3f})',\n", 115 | " f'Petal Length\\n({lor.coef_.flatten()[2]:.3f})'])\n", 116 | "plt.ylabel('Magnitude')\n", 117 | "plt.show()" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 4, 123 | "metadata": {}, 124 | "outputs": [ 125 | { 126 | "name": "stdout", 127 | "output_type": "stream", 128 | "text": [ 129 | "train accuracy 0.95\n" 130 | ] 131 | } 132 | ], 133 | "source": [ 134 | "print('train accuracy', lor.score(X_std, y_train))" 135 | ] 136 | }, 137 | { 138 | "cell_type": "code", 139 | "execution_count": 5, 140 | "metadata": {}, 141 | "outputs": [], 142 | "source": [ 143 | "def std_err_logisticregression(y_true, y_pred_proba, X):\n", 144 | " # based on code from \n", 145 | " # https://stats.stackexchange.com/questions/89484/how-to-compute-the-standard-errors-of-a-logistic-regressions-coefficients\n", 146 | "\n", 147 | " # Design matrix -- add column of 1's at the beginning of your X_train matrix\n", 148 | " X_design = np.hstack([np.ones((X.shape[0], 1)), X])\n", 149 | " \n", 150 | " # Initiate matrix of 0's, fill diagonal with each predicted observation's variance\n", 151 | " V = np.diagflat(np.product(y_pred_proba, axis=1))\n", 152 | "\n", 153 | " # Covariance matrix\n", 154 | " cov = np.linalg.inv(X_design.T @ V @ X_design)\n", 155 | "\n", 156 | " # Standard errors:\n", 157 | " std_errs = np.sqrt(np.diag(cov))\n", 158 | " \n", 159 | " return std_errs\n", 160 | "\n", 161 | "\n", 162 | "def weight_intervals(n, weight, std_err, alpha=0.05):\n", 163 | " t_value = stats.t.ppf(1 - alpha/2, df=n - 2)\n", 164 | " temp = t_value * std_err\n", 165 | " lower = weight - temp\n", 166 | " upper = weight + temp\n", 167 | "\n", 168 | " return lower, upper" 169 | ] 170 | }, 171 | { 172 | "cell_type": "code", 173 | "execution_count": 6, 174 | "metadata": {}, 175 | "outputs": [], 176 | "source": [ 177 | "y_pred_proba = lor.predict_proba(X_std)\n", 178 | "std_err = std_err_logisticregression(y_train, y_pred_proba, X_std)\n", 179 | "\n", 180 | "lower, upper = weight_intervals(len(y_train), lor.coef_.flatten(), std_err[1:])" 181 | ] 182 | }, 183 | { 184 | "cell_type": "code", 185 | "execution_count": 7, 186 | "metadata": {}, 187 | "outputs": [ 188 | { 189 | "data": { 190 | "image/png": "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\n", 191 | "text/plain": [ 192 | "
" 193 | ] 194 | }, 195 | "metadata": { 196 | "needs_background": "light" 197 | }, 198 | "output_type": "display_data" 199 | } 200 | ], 201 | "source": [ 202 | "fig, ax = plt.subplots()\n", 203 | "\n", 204 | "ax.hlines(0, xmin=-0.1, xmax=2.2, linestyle='dashed', color='skyblue')\n", 205 | "ax.errorbar([0, 1, 2], lor.coef_.flatten(), yerr=upper - lor.coef_.flatten(), fmt='.k')\n", 206 | "\n", 207 | "ax.set_xticks([0, 1, 2])\n", 208 | "ax.set_xticklabels([f'Sepal Length\\n({lor.coef_.flatten()[0]:.3f})',\n", 209 | " f'Sepal Width\\n({lor.coef_.flatten()[1]:.3f})',\n", 210 | " f'Petal Length\\n({lor.coef_.flatten()[2]:.3f})'])\n", 211 | "plt.ylabel('Magnitude');" 212 | ] 213 | }, 214 | { 215 | "cell_type": "code", 216 | "execution_count": 8, 217 | "metadata": {}, 218 | "outputs": [ 219 | { 220 | "data": { 221 | "text/plain": [ 222 | "(array([-4.77771221, -1.71641308, 4.43242151]),\n", 223 | " array([-0.30375066, 1.2935979 , 17.16730293]))" 224 | ] 225 | }, 226 | "execution_count": 8, 227 | "metadata": {}, 228 | "output_type": "execute_result" 229 | } 230 | ], 231 | "source": [ 232 | "lower, upper" 233 | ] 234 | }, 235 | { 236 | "cell_type": "markdown", 237 | "metadata": {}, 238 | "source": [ 239 | "---" 240 | ] 241 | }, 242 | { 243 | "cell_type": "code", 244 | "execution_count": 9, 245 | "metadata": {}, 246 | "outputs": [ 247 | { 248 | "name": "stdout", 249 | "output_type": "stream", 250 | "text": [ 251 | "Optimization terminated successfully.\n", 252 | " Current function value: 0.120691\n", 253 | " Iterations: 10\n", 254 | " Function evaluations: 11\n", 255 | " Gradient evaluations: 20\n", 256 | " Hessian evaluations: 10\n" 257 | ] 258 | } 259 | ], 260 | "source": [ 261 | "import statsmodels.api as sm\n", 262 | "\n", 263 | "\n", 264 | "model = sm.Logit(y_train, X_std)\n", 265 | "res = model.fit(method='ncg')\n", 266 | "lower, upper = res.conf_int(0.05)[:, 0], res.conf_int(0.05)[:, 1]" 267 | ] 268 | }, 269 | { 270 | "cell_type": "code", 271 | "execution_count": 10, 272 | "metadata": {}, 273 | "outputs": [ 274 | { 275 | "data": { 276 | "text/plain": [ 277 | "(array([-4.78965224, -1.62105453, 4.48828742]),\n", 278 | " array([-0.40139451, 1.25645007, 16.7429816 ]))" 279 | ] 280 | }, 281 | "execution_count": 10, 282 | "metadata": {}, 283 | "output_type": "execute_result" 284 | } 285 | ], 286 | "source": [ 287 | "lower, upper" 288 | ] 289 | }, 290 | { 291 | "cell_type": "code", 292 | "execution_count": 11, 293 | "metadata": {}, 294 | "outputs": [ 295 | { 296 | "data": { 297 | "image/png": "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\n", 298 | "text/plain": [ 299 | "
" 300 | ] 301 | }, 302 | "metadata": { 303 | "needs_background": "light" 304 | }, 305 | "output_type": "display_data" 306 | } 307 | ], 308 | "source": [ 309 | "fig, ax = plt.subplots()\n", 310 | "\n", 311 | "ax.hlines(0, xmin=-0.1, xmax=2.2, linestyle='dashed', color='skyblue')\n", 312 | "ax.errorbar([0, 1, 2], res.params, yerr=upper - res.params, fmt='.k')\n", 313 | "\n", 314 | "ax.set_xticks([0, 1, 2])\n", 315 | "ax.set_xticklabels([f'Sepal Length\\n({res.params[0]:.3f})',\n", 316 | " f'Sepal Width\\n({res.params[1]:.3f})',\n", 317 | " f'Petal Length\\n({res.params[2]:.3f})'])\n", 318 | "plt.ylabel('Magnitude');" 319 | ] 320 | } 321 | ], 322 | "metadata": { 323 | "kernelspec": { 324 | "display_name": "Python 3", 325 | "language": "python", 326 | "name": "python3" 327 | }, 328 | "language_info": { 329 | "codemirror_mode": { 330 | "name": "ipython", 331 | "version": 3 332 | }, 333 | "file_extension": ".py", 334 | "mimetype": "text/x-python", 335 | "name": "python", 336 | "nbconvert_exporter": "python", 337 | "pygments_lexer": "ipython3", 338 | "version": "3.7.1" 339 | } 340 | }, 341 | "nbformat": 4, 342 | "nbformat_minor": 4 343 | } 344 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Sebastian Raschka 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Interpretable Machine Learning Blog 2 | 3 | Code examples for my Interpretable Machine Learning Blog Series 4 | 5 | - Part 1: [https://sebastianraschka.com/blog/2020/interpretable-ml-1.html](https://sebastianraschka.com/blog/2020/interpretable-ml-1.html) --------------------------------------------------------------------------------