This commit is contained in:
Morten Hjorth-Jensen
2025-08-18 10:47:43 +02:00
parent d4db3104e6
commit 35c45696d6
37 changed files with 5815 additions and 5344 deletions
+97 -97
View File
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "markdown",
"id": "f63b8c1a",
"id": "225f0ca7",
"metadata": {
"editable": true
},
@@ -13,7 +13,7 @@
},
{
"cell_type": "markdown",
"id": "9a284cf5",
"id": "a48a2920",
"metadata": {
"editable": true
},
@@ -23,7 +23,7 @@
},
{
"cell_type": "markdown",
"id": "d78b73e2",
"id": "90b6e822",
"metadata": {
"editable": true
},
@@ -38,7 +38,7 @@
"analytical expressions for standard ordinary Least Squares or Ridge\n",
"regression (in terms of matrices to invert) for several quantities,\n",
"ranging from the variance and thereby the confidence intervals of the\n",
"optimal parameters $\\hat{\\beta}$ to the mean squared error. If we can invert\n",
"optimal parameters $\\hat{\\theta}$ to the mean squared error. If we can invert\n",
"the product of the design matrices, linear regression gives then a\n",
"simple recipe for fitting our data.\n",
"\n",
@@ -61,7 +61,7 @@
"Logistic regression will also serve as our stepping stone towards\n",
"neural network algorithms and supervised deep learning. For logistic\n",
"learning, the minimization of the cost function leads to a non-linear\n",
"equation in the parameters $\\hat{\\beta}$. The optimization of the\n",
"equation in the parameters $\\hat{\\theta}$. The optimization of the\n",
"problem calls therefore for minimization algorithms. This forms the\n",
"bottle neck of all machine learning algorithms, namely how to find\n",
"reliable minima of a multi-variable function. This leads us to the\n",
@@ -75,7 +75,7 @@
},
{
"cell_type": "markdown",
"id": "d0c829b4",
"id": "08ebdf8e",
"metadata": {
"editable": true
},
@@ -100,7 +100,7 @@
},
{
"cell_type": "markdown",
"id": "f1f4d5f2",
"id": "f08eca95",
"metadata": {
"editable": true
},
@@ -112,7 +112,7 @@
},
{
"cell_type": "markdown",
"id": "8e2f836b",
"id": "d82a2a29",
"metadata": {
"editable": true
},
@@ -128,7 +128,7 @@
},
{
"cell_type": "markdown",
"id": "6b58f1ba",
"id": "467f1d23",
"metadata": {
"editable": true
},
@@ -138,7 +138,7 @@
"\n",
"$$\n",
"\\begin{equation}\n",
"\\boldsymbol{y} = \\boldsymbol{X}^T\\boldsymbol{\\beta} + \\boldsymbol{\\epsilon},\n",
"\\boldsymbol{y} = \\boldsymbol{X}^T\\boldsymbol{\\theta} + \\boldsymbol{\\epsilon},\n",
"\\label{_auto1} \\tag{1}\n",
"\\end{equation}\n",
"$$"
@@ -146,13 +146,13 @@
},
{
"cell_type": "markdown",
"id": "54e3604b",
"id": "0f2560d0",
"metadata": {
"editable": true
},
"source": [
"where $\\boldsymbol{y}$ is a vector representing the possible outcomes, $\\boldsymbol{X}$ is our\n",
"$n\\times p$ design matrix and $\\boldsymbol{\\beta}$ represents our estimators/predictors.\n",
"$n\\times p$ design matrix and $\\boldsymbol{\\theta}$ represents our estimators/predictors.\n",
"\n",
"The main problem with our function is that it takes values on the\n",
"entire real axis. In the case of logistic regression, however, the\n",
@@ -175,7 +175,7 @@
{
"cell_type": "code",
"execution_count": 1,
"id": "cd1dd1c5",
"id": "3916f494",
"metadata": {
"collapsed": false,
"editable": true
@@ -242,7 +242,7 @@
},
{
"cell_type": "markdown",
"id": "2e06ee82",
"id": "df52e736",
"metadata": {
"editable": true
},
@@ -253,7 +253,7 @@
{
"cell_type": "code",
"execution_count": 2,
"id": "a774f001",
"id": "07b5c0a7",
"metadata": {
"collapsed": false,
"editable": true
@@ -272,7 +272,7 @@
},
{
"cell_type": "markdown",
"id": "e102fa56",
"id": "25ce17fc",
"metadata": {
"editable": true
},
@@ -283,19 +283,19 @@
},
{
"cell_type": "markdown",
"id": "75d995ba",
"id": "818e2f55",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"f(y_i\\vert x_i)=\\beta_0+\\beta_1 x_i.\n",
"f(y_i\\vert x_i)=\\theta_0+\\theta_1 x_i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "e2cacca5",
"id": "b2616b20",
"metadata": {
"editable": true
},
@@ -314,7 +314,7 @@
},
{
"cell_type": "markdown",
"id": "af9ac586",
"id": "ab85db3c",
"metadata": {
"editable": true
},
@@ -336,7 +336,7 @@
},
{
"cell_type": "markdown",
"id": "80aa3cbe",
"id": "efbd4772",
"metadata": {
"editable": true
},
@@ -348,7 +348,7 @@
},
{
"cell_type": "markdown",
"id": "28d49915",
"id": "1b9231ea",
"metadata": {
"editable": true
},
@@ -358,7 +358,7 @@
},
{
"cell_type": "markdown",
"id": "eeff6cd9",
"id": "ad6acb90",
"metadata": {
"editable": true
},
@@ -371,7 +371,7 @@
{
"cell_type": "code",
"execution_count": 3,
"id": "5ecec05e",
"id": "bf66d0dd",
"metadata": {
"collapsed": false,
"editable": true
@@ -436,56 +436,56 @@
},
{
"cell_type": "markdown",
"id": "5802efe3",
"id": "363760d3",
"metadata": {
"editable": true
},
"source": [
"We assume now that we have two classes with $y_i$ either $0$ or $1$. Furthermore we assume also that we have only two parameters $\\beta$ in our fitting of the Sigmoid function, that is we define probabilities"
"We assume now that we have two classes with $y_i$ either $0$ or $1$. Furthermore we assume also that we have only two parameters $\\theta$ in our fitting of the Sigmoid function, that is we define probabilities"
]
},
{
"cell_type": "markdown",
"id": "f85d14ea",
"id": "eefe7b8d",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\begin{align*}\n",
"p(y_i=1|x_i,\\boldsymbol{\\beta}) &= \\frac{\\exp{(\\beta_0+\\beta_1x_i)}}{1+\\exp{(\\beta_0+\\beta_1x_i)}},\\nonumber\\\\\n",
"p(y_i=0|x_i,\\boldsymbol{\\beta}) &= 1 - p(y_i=1|x_i,\\boldsymbol{\\beta}),\n",
"p(y_i=1|x_i,\\boldsymbol{\\theta}) &= \\frac{\\exp{(\\theta_0+\\theta_1x_i)}}{1+\\exp{(\\theta_0+\\theta_1x_i)}},\\nonumber\\\\\n",
"p(y_i=0|x_i,\\boldsymbol{\\theta}) &= 1 - p(y_i=1|x_i,\\boldsymbol{\\theta}),\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "6c4e0334",
"id": "102fb347",
"metadata": {
"editable": true
},
"source": [
"where $\\boldsymbol{\\beta}$ are the weights we wish to extract from data, in our case $\\beta_0$ and $\\beta_1$. \n",
"where $\\boldsymbol{\\theta}$ are the weights we wish to extract from data, in our case $\\theta_0$ and $\\theta_1$. \n",
"\n",
"Note that we used"
]
},
{
"cell_type": "markdown",
"id": "df7facc9",
"id": "0b230504",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(y_i=0\\vert x_i, \\boldsymbol{\\beta}) = 1-p(y_i=1\\vert x_i, \\boldsymbol{\\beta}).\n",
"p(y_i=0\\vert x_i, \\boldsymbol{\\theta}) = 1-p(y_i=1\\vert x_i, \\boldsymbol{\\theta}).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "a920e6d8",
"id": "669b4c9f",
"metadata": {
"editable": true
},
@@ -500,21 +500,21 @@
},
{
"cell_type": "markdown",
"id": "a780bfe1",
"id": "5dc36460",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\begin{align*}\n",
"P(\\mathcal{D}|\\boldsymbol{\\beta})& = \\prod_{i=1}^n \\left[p(y_i=1|x_i,\\boldsymbol{\\beta})\\right]^{y_i}\\left[1-p(y_i=1|x_i,\\boldsymbol{\\beta}))\\right]^{1-y_i}\\nonumber \\\\\n",
"P(\\mathcal{D}|\\boldsymbol{\\theta})& = \\prod_{i=1}^n \\left[p(y_i=1|x_i,\\boldsymbol{\\theta})\\right]^{y_i}\\left[1-p(y_i=1|x_i,\\boldsymbol{\\theta}))\\right]^{1-y_i}\\nonumber \\\\\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "9f810a44",
"id": "0874a9c6",
"metadata": {
"editable": true
},
@@ -524,19 +524,19 @@
},
{
"cell_type": "markdown",
"id": "3fac4ef4",
"id": "212397d3",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathcal{C}(\\boldsymbol{\\beta}) = \\sum_{i=1}^n \\left( y_i\\log{p(y_i=1|x_i,\\boldsymbol{\\beta})} + (1-y_i)\\log\\left[1-p(y_i=1|x_i,\\boldsymbol{\\beta}))\\right]\\right).\n",
"\\mathcal{C}(\\boldsymbol{\\theta}) = \\sum_{i=1}^n \\left( y_i\\log{p(y_i=1|x_i,\\boldsymbol{\\theta})} + (1-y_i)\\log\\left[1-p(y_i=1|x_i,\\boldsymbol{\\theta}))\\right]\\right).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "75aa2c14",
"id": "f99396bf",
"metadata": {
"editable": true
},
@@ -546,42 +546,42 @@
},
{
"cell_type": "markdown",
"id": "780f2038",
"id": "fd5e7b5f",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathcal{C}(\\boldsymbol{\\beta}) = \\sum_{i=1}^n \\left(y_i(\\beta_0+\\beta_1x_i) -\\log{(1+\\exp{(\\beta_0+\\beta_1x_i)})}\\right).\n",
"\\mathcal{C}(\\boldsymbol{\\theta}) = \\sum_{i=1}^n \\left(y_i(\\theta_0+\\theta_1x_i) -\\log{(1+\\exp{(\\theta_0+\\theta_1x_i)})}\\right).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "c8c940aa",
"id": "80dbca63",
"metadata": {
"editable": true
},
"source": [
"The maximum likelihood estimator is defined as the set of parameters that maximize the log-likelihood where we maximize with respect to $\\beta$.\n",
"The maximum likelihood estimator is defined as the set of parameters that maximize the log-likelihood where we maximize with respect to $\\theta$.\n",
"Since the cost (error) function is just the negative log-likelihood, for logistic regression we have that"
]
},
{
"cell_type": "markdown",
"id": "9d4a527b",
"id": "f5d6c58f",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathcal{C}(\\boldsymbol{\\beta})=-\\sum_{i=1}^n \\left(y_i(\\beta_0+\\beta_1x_i) -\\log{(1+\\exp{(\\beta_0+\\beta_1x_i)})}\\right).\n",
"\\mathcal{C}(\\boldsymbol{\\theta})=-\\sum_{i=1}^n \\left(y_i(\\theta_0+\\theta_1x_i) -\\log{(1+\\exp{(\\theta_0+\\theta_1x_i)})}\\right).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "c1706606",
"id": "57e33c81",
"metadata": {
"editable": true
},
@@ -589,28 +589,28 @@
"This equation is known in statistics as the **cross entropy**. Finally, we note that just as in linear regression, \n",
"in practice we often supplement the cross-entropy with additional regularization terms, usually $L_1$ and $L_2$ regularization as we did for Ridge and Lasso regression.\n",
"\n",
"The cross entropy is a convex function of the weights $\\boldsymbol{\\beta}$ and,\n",
"The cross entropy is a convex function of the weights $\\boldsymbol{\\theta}$ and,\n",
"therefore, any local minimizer is a global minimizer. \n",
"\n",
"Minimizing this\n",
"cost function with respect to the two parameters $\\beta_0$ and $\\beta_1$ we obtain"
"cost function with respect to the two parameters $\\theta_0$ and $\\theta_1$ we obtain"
]
},
{
"cell_type": "markdown",
"id": "fe8fb387",
"id": "1833cc5d",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\frac{\\partial \\mathcal{C}(\\boldsymbol{\\beta})}{\\partial \\beta_0} = -\\sum_{i=1}^n \\left(y_i -\\frac{\\exp{(\\beta_0+\\beta_1x_i)}}{1+\\exp{(\\beta_0+\\beta_1x_i)}}\\right),\n",
"\\frac{\\partial \\mathcal{C}(\\boldsymbol{\\theta})}{\\partial \\theta_0} = -\\sum_{i=1}^n \\left(y_i -\\frac{\\exp{(\\theta_0+\\theta_1x_i)}}{1+\\exp{(\\theta_0+\\theta_1x_i)}}\\right),\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "bb564e81",
"id": "ea34e8e6",
"metadata": {
"editable": true
},
@@ -620,67 +620,67 @@
},
{
"cell_type": "markdown",
"id": "700c5443",
"id": "f1bc373e",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\frac{\\partial \\mathcal{C}(\\boldsymbol{\\beta})}{\\partial \\beta_1} = -\\sum_{i=1}^n \\left(y_ix_i -x_i\\frac{\\exp{(\\beta_0+\\beta_1x_i)}}{1+\\exp{(\\beta_0+\\beta_1x_i)}}\\right).\n",
"\\frac{\\partial \\mathcal{C}(\\boldsymbol{\\theta})}{\\partial \\theta_1} = -\\sum_{i=1}^n \\left(y_ix_i -x_i\\frac{\\exp{(\\theta_0+\\theta_1x_i)}}{1+\\exp{(\\theta_0+\\theta_1x_i)}}\\right).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "f442c956",
"id": "617c6d86",
"metadata": {
"editable": true
},
"source": [
"Let us now define a vector $\\boldsymbol{y}$ with $n$ elements $y_i$, an\n",
"$n\\times p$ matrix $\\boldsymbol{X}$ which contains the $x_i$ values and a\n",
"vector $\\boldsymbol{p}$ of fitted probabilities $p(y_i\\vert x_i,\\boldsymbol{\\beta})$. We can rewrite in a more compact form the first\n",
"vector $\\boldsymbol{p}$ of fitted probabilities $p(y_i\\vert x_i,\\boldsymbol{\\theta})$. We can rewrite in a more compact form the first\n",
"derivative of cost function as"
]
},
{
"cell_type": "markdown",
"id": "83937f6f",
"id": "e79426c6",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\frac{\\partial \\mathcal{C}(\\boldsymbol{\\beta})}{\\partial \\boldsymbol{\\beta}} = -\\boldsymbol{X}^T\\left(\\boldsymbol{y}-\\boldsymbol{p}\\right).\n",
"\\frac{\\partial \\mathcal{C}(\\boldsymbol{\\theta})}{\\partial \\boldsymbol{\\theta}} = -\\boldsymbol{X}^T\\left(\\boldsymbol{y}-\\boldsymbol{p}\\right).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "71819c1d",
"id": "b1dd9451",
"metadata": {
"editable": true
},
"source": [
"If we in addition define a diagonal matrix $\\boldsymbol{W}$ with elements \n",
"$p(y_i\\vert x_i,\\boldsymbol{\\beta})(1-p(y_i\\vert x_i,\\boldsymbol{\\beta})$, we can obtain a compact expression of the second derivative as"
"$p(y_i\\vert x_i,\\boldsymbol{\\theta})(1-p(y_i\\vert x_i,\\boldsymbol{\\theta})$, we can obtain a compact expression of the second derivative as"
]
},
{
"cell_type": "markdown",
"id": "23dfd975",
"id": "ac6500cc",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\frac{\\partial^2 \\mathcal{C}(\\boldsymbol{\\beta})}{\\partial \\boldsymbol{\\beta}\\partial \\boldsymbol{\\beta}^T} = \\boldsymbol{X}^T\\boldsymbol{W}\\boldsymbol{X}.\n",
"\\frac{\\partial^2 \\mathcal{C}(\\boldsymbol{\\theta})}{\\partial \\boldsymbol{\\theta}\\partial \\boldsymbol{\\theta}^T} = \\boldsymbol{X}^T\\boldsymbol{W}\\boldsymbol{X}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "6ca9f74b",
"id": "12f4d5d0",
"metadata": {
"editable": true
},
@@ -690,41 +690,41 @@
},
{
"cell_type": "markdown",
"id": "ddb3d93a",
"id": "b4733616",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\log{ \\frac{p(\\boldsymbol{\\beta}\\boldsymbol{x})}{1-p(\\boldsymbol{\\beta}\\boldsymbol{x})}} = \\beta_0+\\beta_1x_1+\\beta_2x_2+\\dots+\\beta_px_p.\n",
"\\log{ \\frac{p(\\boldsymbol{\\theta}\\boldsymbol{x})}{1-p(\\boldsymbol{\\theta}\\boldsymbol{x})}} = \\theta_0+\\theta_1x_1+\\theta_2x_2+\\dots+\\theta_px_p.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "0cfae560",
"id": "eec7d85e",
"metadata": {
"editable": true
},
"source": [
"Here we defined $\\boldsymbol{x}=[1,x_1,x_2,\\dots,x_p]$ and $\\boldsymbol{\\beta}=[\\beta_0, \\beta_1, \\dots, \\beta_p]$ leading to"
"Here we defined $\\boldsymbol{x}=[1,x_1,x_2,\\dots,x_p]$ and $\\boldsymbol{\\theta}=[\\theta_0, \\theta_1, \\dots, \\theta_p]$ leading to"
]
},
{
"cell_type": "markdown",
"id": "7c427fc3",
"id": "152e6fa3",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{\\beta}\\boldsymbol{x})=\\frac{ \\exp{(\\beta_0+\\beta_1x_1+\\beta_2x_2+\\dots+\\beta_px_p)}}{1+\\exp{(\\beta_0+\\beta_1x_1+\\beta_2x_2+\\dots+\\beta_px_p)}}.\n",
"p(\\boldsymbol{\\theta}\\boldsymbol{x})=\\frac{ \\exp{(\\theta_0+\\theta_1x_1+\\theta_2x_2+\\dots+\\theta_px_p)}}{1+\\exp{(\\theta_0+\\theta_1x_1+\\theta_2x_2+\\dots+\\theta_px_p)}}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "6a6814bf",
"id": "b8168ae0",
"metadata": {
"editable": true
},
@@ -736,19 +736,19 @@
},
{
"cell_type": "markdown",
"id": "85282137",
"id": "3af519ee",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\log{\\frac{p(C=1\\vert x)}{p(K\\vert x)}} = \\beta_{10}+\\beta_{11}x_1,\n",
"\\log{\\frac{p(C=1\\vert x)}{p(K\\vert x)}} = \\theta_{10}+\\theta_{11}x_1,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "4864f76d",
"id": "fa02c958",
"metadata": {
"editable": true
},
@@ -758,19 +758,19 @@
},
{
"cell_type": "markdown",
"id": "390e9a55",
"id": "c550e015",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\log{\\frac{p(C=2\\vert x)}{p(K\\vert x)}} = \\beta_{20}+\\beta_{21}x_1,\n",
"\\log{\\frac{p(C=2\\vert x)}{p(K\\vert x)}} = \\theta_{20}+\\theta_{21}x_1,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "c3f39c44",
"id": "8398ec7a",
"metadata": {
"editable": true
},
@@ -780,19 +780,19 @@
},
{
"cell_type": "markdown",
"id": "92f32a03",
"id": "6be24150",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\log{\\frac{p(C=K-1\\vert x)}{p(K\\vert x)}} = \\beta_{(K-1)0}+\\beta_{(K-1)1}x_1,\n",
"\\log{\\frac{p(C=K-1\\vert x)}{p(K\\vert x)}} = \\theta_{(K-1)0}+\\theta_{(K-1)1}x_1,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "677a5c4d",
"id": "2153c8e3",
"metadata": {
"editable": true
},
@@ -810,25 +810,25 @@
"multinomial logistic regression and linear discriminant analysis, the\n",
"input to the function is the result of $K$ distinct linear functions,\n",
"and the predicted probability for the $k$-th class given a sample\n",
"vector $\\boldsymbol{x}$ and a weighting vector $\\boldsymbol{\\beta}$ is (with two\n",
"vector $\\boldsymbol{x}$ and a weighting vector $\\boldsymbol{\\theta}$ is (with two\n",
"predictors):"
]
},
{
"cell_type": "markdown",
"id": "fa70e3bf",
"id": "ab540777",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(C=k\\vert \\mathbf {x} )=\\frac{\\exp{(\\beta_{k0}+\\beta_{k1}x_1)}}{1+\\sum_{l=1}^{K-1}\\exp{(\\beta_{l0}+\\beta_{l1}x_1)}}.\n",
"p(C=k\\vert \\mathbf {x} )=\\frac{\\exp{(\\theta_{k0}+\\theta_{k1}x_1)}}{1+\\sum_{l=1}^{K-1}\\exp{(\\theta_{l0}+\\theta_{l1}x_1)}}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "4c59400c",
"id": "b7bcd7e8",
"metadata": {
"editable": true
},
@@ -838,19 +838,19 @@
},
{
"cell_type": "markdown",
"id": "f4073652",
"id": "c9605782",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(C=K\\vert \\mathbf {x} )=\\frac{1}{1+\\sum_{l=1}^{K-1}\\exp{(\\beta_{l0}+\\beta_{l1}x_1)}},\n",
"p(C=K\\vert \\mathbf {x} )=\\frac{1}{1+\\sum_{l=1}^{K-1}\\exp{(\\theta_{l0}+\\theta_{l1}x_1)}},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "810e872a",
"id": "856dd896",
"metadata": {
"editable": true
},
@@ -867,7 +867,7 @@
},
{
"cell_type": "markdown",
"id": "f4ebc1da",
"id": "73029fad",
"metadata": {
"editable": true
},
@@ -882,7 +882,7 @@
{
"cell_type": "code",
"execution_count": 4,
"id": "b7a8cbac",
"id": "d81a44e3",
"metadata": {
"collapsed": false,
"editable": true
@@ -918,7 +918,7 @@
},
{
"cell_type": "markdown",
"id": "10f74b93",
"id": "83a2e903",
"metadata": {
"editable": true
},
@@ -930,7 +930,7 @@
{
"cell_type": "code",
"execution_count": 5,
"id": "d0b8025d",
"id": "976fc321",
"metadata": {
"collapsed": false,
"editable": true
@@ -975,7 +975,7 @@
},
{
"cell_type": "markdown",
"id": "9d84a2aa",
"id": "ea10d953",
"metadata": {
"editable": true
},
@@ -998,7 +998,7 @@
{
"cell_type": "code",
"execution_count": 6,
"id": "6144ea0a",
"id": "42204f9c",
"metadata": {
"collapsed": false,
"editable": true
@@ -1010,7 +1010,7 @@
},
{
"cell_type": "markdown",
"id": "5627f5ae",
"id": "a56de206",
"metadata": {
"editable": true
},
@@ -1021,7 +1021,7 @@
{
"cell_type": "code",
"execution_count": 7,
"id": "a7c8662a",
"id": "0f2ff030",
"metadata": {
"collapsed": false,
"editable": true
@@ -1033,7 +1033,7 @@
},
{
"cell_type": "markdown",
"id": "d03ee2a7",
"id": "68abe92d",
"metadata": {
"editable": true
},
@@ -1059,7 +1059,7 @@
},
{
"cell_type": "markdown",
"id": "44ce5095",
"id": "3cea1c5a",
"metadata": {
"editable": true
},
@@ -1072,7 +1072,7 @@
{
"cell_type": "code",
"execution_count": 8,
"id": "24ff3dd3",
"id": "f42e1d87",
"metadata": {
"collapsed": false,
"editable": true