diff --git a/doc/pub/Introduction/html/Introduction-bs.html b/doc/pub/Introduction/html/Introduction-bs.html index 2be47e2..dac87ad 100644 --- a/doc/pub/Introduction/html/Introduction-bs.html +++ b/doc/pub/Introduction/html/Introduction-bs.html @@ -372,7 +372,7 @@

Nuclear Talent course on Machine Learning in Nuclear Experiment and Theory<
-

Sep 25, 2022

+

Sep 24, 2023


diff --git a/doc/pub/Introduction/html/Introduction-reveal.html b/doc/pub/Introduction/html/Introduction-reveal.html index c3bf6dc..2df9a24 100644 --- a/doc/pub/Introduction/html/Introduction-reveal.html +++ b/doc/pub/Introduction/html/Introduction-reveal.html @@ -184,7 +184,7 @@

Nuclear Talent course on Machine Learning in Nu
-

Sep 25, 2022

+

Sep 24, 2023


diff --git a/doc/pub/Introduction/html/Introduction-solarized.html b/doc/pub/Introduction/html/Introduction-solarized.html index 819010b..1d73bd8 100644 --- a/doc/pub/Introduction/html/Introduction-solarized.html +++ b/doc/pub/Introduction/html/Introduction-solarized.html @@ -307,7 +307,7 @@

Nuclear Talent course on Machine Learning in Nuclear Experiment and Theory<
-

Sep 25, 2022

+

Sep 24, 2023


diff --git a/doc/pub/Introduction/html/Introduction.html b/doc/pub/Introduction/html/Introduction.html index f5a049a..d49fa44 100644 --- a/doc/pub/Introduction/html/Introduction.html +++ b/doc/pub/Introduction/html/Introduction.html @@ -384,7 +384,7 @@

Nuclear Talent course on Machine Learning in Nuclear Experiment and Theory<
-

Sep 25, 2022

+

Sep 24, 2023


diff --git a/doc/pub/Introduction/ipynb/Introduction.ipynb b/doc/pub/Introduction/ipynb/Introduction.ipynb index 6c9031e..37045bd 100644 --- a/doc/pub/Introduction/ipynb/Introduction.ipynb +++ b/doc/pub/Introduction/ipynb/Introduction.ipynb @@ -2,8 +2,10 @@ "cells": [ { "cell_type": "markdown", - "id": "c7ef21df", - "metadata": {}, + "id": "2274e914", + "metadata": { + "editable": true + }, "source": [ "\n", @@ -12,19 +14,23 @@ }, { "cell_type": "markdown", - "id": "97f45f07", - "metadata": {}, + "id": "b82d8ae5", + "metadata": { + "editable": true + }, "source": [ "# Nuclear Talent course on Machine Learning in Nuclear Experiment and Theory\n", "**[Morten Hjorth-Jensen](http://mhjgit.github.io/info/doc/web/)**, Department of Physics and Astronomy and Facility for Rare Isotope Beams, Michigan State University, East Lansing, Michigan, USA and Department of Physics and Center for Computing in Science Education, University of Oslo, Oslo, Norway\n", "\n", - "Date: **Sep 25, 2022**" + "Date: **Sep 24, 2023**" ] }, { "cell_type": "markdown", - "id": "8a9bffe0", - "metadata": {}, + "id": "f44d0bba", + "metadata": { + "editable": true + }, "source": [ "## Introduction\n", "\n", @@ -50,8 +56,10 @@ }, { "cell_type": "markdown", - "id": "30c5ba3f", - "metadata": {}, + "id": "cce75d86", + "metadata": { + "editable": true + }, "source": [ "## Overview of these introductory notes\n", "\n", @@ -79,16 +87,20 @@ }, { "cell_type": "markdown", - "id": "6df0c291", - "metadata": {}, + "id": "55fda48b", + "metadata": { + "editable": true + }, "source": [ "## Machine Learning, short overview" ] }, { "cell_type": "markdown", - "id": "ba4a69e2", - "metadata": {}, + "id": "5910126a", + "metadata": { + "editable": true + }, "source": [ "## Machine Learning, a small (and probably biased) introduction\n", "\n", @@ -105,8 +117,10 @@ }, { "cell_type": "markdown", - "id": "a3fb13f7", - "metadata": {}, + "id": "249492da", + "metadata": { + "editable": true + }, "source": [ "## Machine Learning, an extremely rich field\n", "\n", @@ -127,8 +141,10 @@ }, { "cell_type": "markdown", - "id": "1cf698ec", - "metadata": {}, + "id": "db10ddbd", + "metadata": { + "editable": true + }, "source": [ "## A multidisciplinary approach\n", "\n", @@ -144,8 +160,10 @@ }, { "cell_type": "markdown", - "id": "c2c4c286", - "metadata": {}, + "id": "671a6b16", + "metadata": { + "editable": true + }, "source": [ "## Learning outcomes\n", "\n", @@ -175,8 +193,10 @@ }, { "cell_type": "markdown", - "id": "b3426c55", - "metadata": {}, + "id": "ec15b54c", + "metadata": { + "editable": true + }, "source": [ "## Types of Machine Learning\n", "\n", @@ -202,8 +222,10 @@ }, { "cell_type": "markdown", - "id": "d9ec7493", - "metadata": {}, + "id": "c35188ba", + "metadata": { + "editable": true + }, "source": [ "## Essential elements of ML\n", "\n", @@ -218,8 +240,10 @@ }, { "cell_type": "markdown", - "id": "8eef38f1", - "metadata": {}, + "id": "cb25a580", + "metadata": { + "editable": true + }, "source": [ "## An optimization/minimization problem\n", "\n", @@ -228,8 +252,10 @@ }, { "cell_type": "markdown", - "id": "e6673eed", - "metadata": {}, + "id": "541b3d5f", + "metadata": { + "editable": true + }, "source": [ "## A Frequentist approach to data analysis\n", "\n", @@ -261,8 +287,10 @@ }, { "cell_type": "markdown", - "id": "9500c61e", - "metadata": {}, + "id": "a1c241e4", + "metadata": { + "editable": true + }, "source": [ "## What is a good model?\n", "\n", @@ -289,8 +317,10 @@ }, { "cell_type": "markdown", - "id": "93cb1262", - "metadata": {}, + "id": "4c4f8a91", + "metadata": { + "editable": true + }, "source": [ "## What is a good model? Can we define it?\n", "\n", @@ -318,16 +348,20 @@ }, { "cell_type": "markdown", - "id": "5311869b", - "metadata": {}, + "id": "d1c2ef4f", + "metadata": { + "editable": true + }, "source": [ "## Practicalities, choice of programming language and other computational issues" ] }, { "cell_type": "markdown", - "id": "f7dd05f6", - "metadata": {}, + "id": "cbbb5b96", + "metadata": { + "editable": true + }, "source": [ "## Choice of Programming Language\n", "\n", @@ -347,8 +381,10 @@ }, { "cell_type": "markdown", - "id": "ac6d9ab8", - "metadata": {}, + "id": "d2d07f41", + "metadata": { + "editable": true + }, "source": [ "## Software and needed installations\n", "\n", @@ -382,8 +418,10 @@ }, { "cell_type": "markdown", - "id": "de9b90af", - "metadata": {}, + "id": "f8d13461", + "metadata": { + "editable": true + }, "source": [ "## Python installers\n", "\n", @@ -413,8 +451,10 @@ }, { "cell_type": "markdown", - "id": "b9de94c5", - "metadata": {}, + "id": "72365393", + "metadata": { + "editable": true + }, "source": [ "## Useful Python libraries\n", "Here we list several useful Python libraries we strongly recommend (if you use anaconda many of these are already there)\n", @@ -444,16 +484,20 @@ }, { "cell_type": "markdown", - "id": "21296417", - "metadata": {}, + "id": "fd8e32a2", + "metadata": { + "editable": true + }, "source": [ "## More Practicalities, handling arrays" ] }, { "cell_type": "markdown", - "id": "8181ac33", - "metadata": {}, + "id": "60a853ce", + "metadata": { + "editable": true + }, "source": [ "## Basic Matrix Features, Numpy examples and Important Matrix and vector handling packages\n", "\n", @@ -462,8 +506,10 @@ }, { "cell_type": "markdown", - "id": "88a7cbf8", - "metadata": {}, + "id": "bfc788ca", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathbf{A} =\n", @@ -483,16 +529,20 @@ }, { "cell_type": "markdown", - "id": "a370cf16", - "metadata": {}, + "id": "cd78df52", + "metadata": { + "editable": true + }, "source": [ "The inverse of a matrix is defined by" ] }, { "cell_type": "markdown", - "id": "c64d3ba1", - "metadata": {}, + "id": "8ef8314d", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathbf{A}^{-1} \\cdot \\mathbf{A} = I\n", @@ -501,8 +551,10 @@ }, { "cell_type": "markdown", - "id": "ea332ac4", - "metadata": {}, + "id": "750461b6", + "metadata": { + "editable": true + }, "source": [ "\n", "\n", @@ -520,8 +572,10 @@ }, { "cell_type": "markdown", - "id": "d831a9cf", - "metadata": {}, + "id": "9d9ea5ef", + "metadata": { + "editable": true + }, "source": [ "## Some famous Matrices\n", "\n", @@ -546,8 +600,10 @@ }, { "cell_type": "markdown", - "id": "a0ef408a", - "metadata": {}, + "id": "d1643c35", + "metadata": { + "editable": true + }, "source": [ "## More Basic Matrix Features\n", "\n", @@ -570,8 +626,10 @@ }, { "cell_type": "markdown", - "id": "c784a027", - "metadata": {}, + "id": "5c736fdb", + "metadata": { + "editable": true + }, "source": [ "## Numpy and arrays\n", "[Numpy](http://www.numpy.org/) provides an easy way to handle arrays in Python. The standard way to import this library is as" @@ -580,8 +638,11 @@ { "cell_type": "code", "execution_count": 1, - "id": "02cd7073", - "metadata": {}, + "id": "8eab8905", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import numpy as np" @@ -589,8 +650,10 @@ }, { "cell_type": "markdown", - "id": "1b389c59", - "metadata": {}, + "id": "67e213f3", + "metadata": { + "editable": true + }, "source": [ "Here follows a simple example where we set up an array of ten elements, all determined by random numbers drawn according to the normal distribution," ] @@ -598,18 +661,12 @@ { "cell_type": "code", "execution_count": 2, - "id": "f277fec9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 1.24826685 1.20222048 0.17700469 0.12954931 -1.15497332 -0.43018674\n", - " -0.00894835 -1.37166367 -1.10791697 0.16654221]\n" - ] - } - ], + "id": "8a619af1", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "n = 10\n", "x = np.random.normal(size=n)\n", @@ -618,8 +675,10 @@ }, { "cell_type": "markdown", - "id": "dbd22f9d", - "metadata": {}, + "id": "f5e4b34c", + "metadata": { + "editable": true + }, "source": [ "We defined a vector $x$ with $n=10$ elements with its values given by the Normal distribution $N(0,1)$.\n", "Another alternative is to declare a vector as follows" @@ -628,17 +687,12 @@ { "cell_type": "code", "execution_count": 3, - "id": "27332d9c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1 2 3]\n" - ] - } - ], + "id": "96338fb0", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "x = np.array([1, 2, 3])\n", @@ -647,8 +701,10 @@ }, { "cell_type": "markdown", - "id": "ca6a0178", - "metadata": {}, + "id": "0ae5f183", + "metadata": { + "editable": true + }, "source": [ "Here we have defined a vector with three elements, with $x_0=1$, $x_1=2$ and $x_2=3$. Note that both Python and C++\n", "start numbering array elements from $0$ and on. This means that a vector with $n$ elements has a sequence of entities $x_0, x_1, x_2, \\dots, x_{n-1}$. We could also let (recommended) Numpy to compute the logarithms of a specific array as" @@ -657,17 +713,12 @@ { "cell_type": "code", "execution_count": 4, - "id": "d47de077", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.38629436 1.94591015 2.07944154]\n" - ] - } - ], + "id": "4c57fd82", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "x = np.log(np.array([4, 7, 8]))\n", @@ -676,8 +727,10 @@ }, { "cell_type": "markdown", - "id": "5f379483", - "metadata": {}, + "id": "8194fadb", + "metadata": { + "editable": true + }, "source": [ "## More Examples\n", "\n", @@ -693,17 +746,12 @@ { "cell_type": "code", "execution_count": 5, - "id": "d7b14782", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1 1 2]\n" - ] - } - ], + "id": "f13cf964", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "from math import log\n", @@ -715,8 +763,10 @@ }, { "cell_type": "markdown", - "id": "1f1e87e1", - "metadata": {}, + "id": "605144ec", + "metadata": { + "editable": true + }, "source": [ "We note that our code is much longer already and we need to import the **log** function from the **math** module. \n", "The attentive reader will also notice that the output is $[1, 1, 2]$. Python interprets automagically our numbers as integers (like the **automatic** keyword in C++). To change this we could define our array elements to be double precision numbers as" @@ -725,17 +775,12 @@ { "cell_type": "code", "execution_count": 6, - "id": "5f0a358a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.38629436 1.94591015 2.07944154]\n" - ] - } - ], + "id": "b694f766", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "x = np.log(np.array([4, 7, 8], dtype = np.float64))\n", @@ -744,8 +789,10 @@ }, { "cell_type": "markdown", - "id": "d0e99292", - "metadata": {}, + "id": "6457ab02", + "metadata": { + "editable": true + }, "source": [ "or simply write them as double precision numbers (Python uses 64 bits as default for floating point type variables), that is" ] @@ -753,17 +800,12 @@ { "cell_type": "code", "execution_count": 7, - "id": "8b836c8d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.38629436 1.94591015 2.07944154]\n" - ] - } - ], + "id": "35a567ef", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "x = np.log(np.array([4.0, 7.0, 8.0]))\n", @@ -772,8 +814,10 @@ }, { "cell_type": "markdown", - "id": "37e1c191", - "metadata": {}, + "id": "2c24fe55", + "metadata": { + "editable": true + }, "source": [ "To check the number of bytes (remember that one byte contains eight bits for double precision variables), you can use simple use the **itemsize** functionality (the array $x$ is actually an object which inherits the functionalities defined in Numpy) as" ] @@ -781,17 +825,12 @@ { "cell_type": "code", "execution_count": 8, - "id": "b8c854b1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.38629436 1.94591015 2.07944154]\n" - ] - } - ], + "id": "2837c505", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "x = np.log(np.array([4.0, 7.0, 8.0]))\n", @@ -800,8 +839,10 @@ }, { "cell_type": "markdown", - "id": "2bdfaf0c", - "metadata": {}, + "id": "c3328494", + "metadata": { + "editable": true + }, "source": [ "## Matrices in Python\n", "\n", @@ -813,19 +854,12 @@ { "cell_type": "code", "execution_count": 9, - "id": "a83f8003", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1.38629436 1.94591015 2.07944154]\n", - " [1.09861229 2.30258509 2.39789527]\n", - " [1.38629436 1.60943791 1.94591015]]\n" - ] - } - ], + "id": "f13acaa9", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))\n", @@ -834,8 +868,10 @@ }, { "cell_type": "markdown", - "id": "54e22f3d", - "metadata": {}, + "id": "199a7303", + "metadata": { + "editable": true + }, "source": [ "If we use the **shape** function we would get $(3, 3)$ as output, that is verifying that our matrix is a $3\\times 3$ matrix. We can slice the matrix and print for example the first column (Python organized matrix elements in a row-major order, see below) as" ] @@ -843,17 +879,12 @@ { "cell_type": "code", "execution_count": 10, - "id": "1efa1ca9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.38629436 1.09861229 1.38629436]\n" - ] - } - ], + "id": "d9123012", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))\n", @@ -863,8 +894,10 @@ }, { "cell_type": "markdown", - "id": "dccf8fb1", - "metadata": {}, + "id": "5575f5f5", + "metadata": { + "editable": true + }, "source": [ "We can continue this was by printing out other columns or rows. The example here prints out the second column" ] @@ -872,17 +905,12 @@ { "cell_type": "code", "execution_count": 11, - "id": "45b96449", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.09861229 2.30258509 2.39789527]\n" - ] - } - ], + "id": "a5bd9cff", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))\n", @@ -892,8 +920,10 @@ }, { "cell_type": "markdown", - "id": "c42595ae", - "metadata": {}, + "id": "5c669557", + "metadata": { + "editable": true + }, "source": [ "Numpy contains many other functionalities that allow us to slice, subdivide etc etc arrays. We strongly recommend that you look up the [Numpy website for more details](http://www.numpy.org/). Useful functions when defining a matrix are the **np.zeros** function which declares a matrix of a given dimension and sets all elements to zero" ] @@ -901,8 +931,11 @@ { "cell_type": "code", "execution_count": 12, - "id": "fed5b056", - "metadata": {}, + "id": "c2085403", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -914,8 +947,10 @@ }, { "cell_type": "markdown", - "id": "e76b4c7e", - "metadata": {}, + "id": "0c6009e7", + "metadata": { + "editable": true + }, "source": [ "or initializing all elements to" ] @@ -923,8 +958,11 @@ { "cell_type": "code", "execution_count": 13, - "id": "2bb38dfb", - "metadata": {}, + "id": "184f59b0", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -936,8 +974,10 @@ }, { "cell_type": "markdown", - "id": "a2c3ecb9", - "metadata": {}, + "id": "8db84aa6", + "metadata": { + "editable": true + }, "source": [ "or as unitarily distributed random numbers (see the material on random number generators in the statistics part)" ] @@ -945,8 +985,11 @@ { "cell_type": "code", "execution_count": 14, - "id": "8b30d53c", - "metadata": {}, + "id": "4bab2072", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -958,8 +1001,10 @@ }, { "cell_type": "markdown", - "id": "c789e06d", - "metadata": {}, + "id": "8b426031", + "metadata": { + "editable": true + }, "source": [ "## More Examples, Covariance matrix\n", "\n", @@ -970,8 +1015,10 @@ }, { "cell_type": "markdown", - "id": "70d079bf", - "metadata": {}, + "id": "2e80be67", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{\\Sigma} = \\begin{bmatrix} \\sigma_{xx} & \\sigma_{xy} & \\sigma_{xz} \\\\\n", @@ -983,16 +1030,20 @@ }, { "cell_type": "markdown", - "id": "bbedf417", - "metadata": {}, + "id": "8c8eba8d", + "metadata": { + "editable": true + }, "source": [ "where for example" ] }, { "cell_type": "markdown", - "id": "3bab3dc6", - "metadata": {}, + "id": "b13f4900", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\sigma_{xy} =\\frac{1}{n} \\sum_{i=0}^{n-1}(x_i- \\overline{x})(y_i- \\overline{y}).\n", @@ -1001,8 +1052,10 @@ }, { "cell_type": "markdown", - "id": "7c13419d", - "metadata": {}, + "id": "aa9ece7a", + "metadata": { + "editable": true + }, "source": [ "The Numpy function **np.cov** calculates the covariance elements using the factor $1/(n-1)$ instead of $1/n$ since it assumes we do not have the exact mean values. \n", "The following simple function uses the **np.vstack** function which takes each vector of dimension $1\\times n$ and produces a $3\\times n$ matrix $\\boldsymbol{W}$" @@ -1010,8 +1063,10 @@ }, { "cell_type": "markdown", - "id": "0b2767e2", - "metadata": {}, + "id": "d3a197a0", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{W} = \\begin{bmatrix} x_0 & y_0 & z_0 \\\\\n", @@ -1026,8 +1081,10 @@ }, { "cell_type": "markdown", - "id": "6ab47f8e", - "metadata": {}, + "id": "d6c0d341", + "metadata": { + "editable": true + }, "source": [ "## More on the Covariance Matrix\n", "\n", @@ -1041,8 +1098,11 @@ { "cell_type": "code", "execution_count": 15, - "id": "b18f6bb7", - "metadata": {}, + "id": "64babda3", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "# Importing various packages\n", @@ -1064,16 +1124,20 @@ }, { "cell_type": "markdown", - "id": "29817f31", - "metadata": {}, + "id": "dcd59049", + "metadata": { + "editable": true + }, "source": [ "## Practicalities, Reminder on Statistics" ] }, { "cell_type": "markdown", - "id": "08994c2b", - "metadata": {}, + "id": "024cb789", + "metadata": { + "editable": true + }, "source": [ "## Brief Reminder on Statistical Analysis\n", "The *probability distribution function (PDF)* is a function\n", @@ -1083,8 +1147,10 @@ }, { "cell_type": "markdown", - "id": "3faa4374", - "metadata": {}, + "id": "6d77c41f", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(x) = \\mathrm{prob}(X=x)\n", @@ -1093,8 +1159,10 @@ }, { "cell_type": "markdown", - "id": "3b474f5e", - "metadata": {}, + "id": "9370c4e0", + "metadata": { + "editable": true + }, "source": [ "In the continuous case, the PDF does not directly depict the\n", "actual probability. Instead we define the probability for the\n", @@ -1107,8 +1175,10 @@ }, { "cell_type": "markdown", - "id": "f355e7de", - "metadata": {}, + "id": "5ca77a5e", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathrm{prob}(a\\leq X\\leq b) = \\int_a^b p(x)dx\n", @@ -1117,8 +1187,10 @@ }, { "cell_type": "markdown", - "id": "e4c05358", - "metadata": {}, + "id": "115f2dc7", + "metadata": { + "editable": true + }, "source": [ "Qualitatively speaking, a stochastic variable represents the values of\n", "numbers chosen as if by chance from some specified PDF so that the\n", @@ -1127,8 +1199,10 @@ }, { "cell_type": "markdown", - "id": "2950a8b9", - "metadata": {}, + "id": "932260d0", + "metadata": { + "editable": true + }, "source": [ "## Statistics, moments\n", "A particularly useful class of special expectation values are the\n", @@ -1138,8 +1212,10 @@ }, { "cell_type": "markdown", - "id": "dd3b4aa6", - "metadata": {}, + "id": "4a082486", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\langle x^n\\rangle \\equiv \\int\\! x^n p(x)\\,dx\n", @@ -1148,8 +1224,10 @@ }, { "cell_type": "markdown", - "id": "82a0124d", - "metadata": {}, + "id": "e36ffa9b", + "metadata": { + "editable": true + }, "source": [ "The zero-th moment $\\langle 1\\rangle$ is just the normalization condition of\n", "$p$. The first moment, $\\langle x\\rangle$, is called the *mean* of $p$\n", @@ -1158,8 +1236,10 @@ }, { "cell_type": "markdown", - "id": "e9037771", - "metadata": {}, + "id": "a47cf536", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\langle x\\rangle = \\mu \\equiv \\int\\! x p(x)\\,dx\n", @@ -1168,8 +1248,10 @@ }, { "cell_type": "markdown", - "id": "83b3d249", - "metadata": {}, + "id": "d601e5ce", + "metadata": { + "editable": true + }, "source": [ "## Statistics, central moments\n", "A special version of the moments is the set of *central moments*,\n", @@ -1178,8 +1260,10 @@ }, { "cell_type": "markdown", - "id": "e058bada", - "metadata": {}, + "id": "82b67f16", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\langle (x-\\langle x \\rangle )^n\\rangle \\equiv \\int\\! (x-\\langle x\\rangle)^n p(x)\\,dx\n", @@ -1188,8 +1272,10 @@ }, { "cell_type": "markdown", - "id": "ea24bda3", - "metadata": {}, + "id": "31dfa639", + "metadata": { + "editable": true + }, "source": [ "The zero-th and first central moments are both trivial, equal $1$ and\n", "$0$, respectively. But the second central moment, known as the\n", @@ -1199,8 +1285,10 @@ }, { "cell_type": "markdown", - "id": "bd72bdca", - "metadata": {}, + "id": "e25c8e30", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1216,8 +1304,10 @@ }, { "cell_type": "markdown", - "id": "23f4ded6", - "metadata": {}, + "id": "726b6af6", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1233,8 +1323,10 @@ }, { "cell_type": "markdown", - "id": "fb6a8d9e", - "metadata": {}, + "id": "314cb1a2", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1249,8 +1341,10 @@ }, { "cell_type": "markdown", - "id": "978d68ec", - "metadata": {}, + "id": "dfbfce81", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1265,8 +1359,10 @@ }, { "cell_type": "markdown", - "id": "c8a80bcd", - "metadata": {}, + "id": "4717ef67", + "metadata": { + "editable": true + }, "source": [ "The square root of the variance, $\\sigma =\\sqrt{\\langle (x-\\langle x\\rangle)^2\\rangle}$ is called the *standard deviation* of $p$. It is clearly just the RMS (root-mean-square)\n", "value of the deviation of the PDF from its mean value, interpreted\n", @@ -1275,8 +1371,10 @@ }, { "cell_type": "markdown", - "id": "2378f1c8", - "metadata": {}, + "id": "983ba9ba", + "metadata": { + "editable": true + }, "source": [ "## Statistics, covariance\n", "Another important quantity is the so called covariance, a variant of\n", @@ -1288,8 +1386,10 @@ }, { "cell_type": "markdown", - "id": "fd3a99c1", - "metadata": {}, + "id": "1b095a8f", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathrm{cov}(X_i,\\,X_j) \\equiv \\langle (x_i-\\langle x_i\\rangle)(x_j-\\langle x_j\\rangle)\\rangle\n", @@ -1299,8 +1399,10 @@ }, { "cell_type": "markdown", - "id": "d281b532", - "metadata": {}, + "id": "603d72cc", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1317,16 +1419,20 @@ }, { "cell_type": "markdown", - "id": "2c05a33a", - "metadata": {}, + "id": "4a4becd9", + "metadata": { + "editable": true + }, "source": [ "with" ] }, { "cell_type": "markdown", - "id": "e1554578", - "metadata": {}, + "id": "eb342bf7", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\langle x_i\\rangle =\n", @@ -1336,8 +1442,10 @@ }, { "cell_type": "markdown", - "id": "314edffc", - "metadata": {}, + "id": "4023d375", + "metadata": { + "editable": true + }, "source": [ "## Statistics, more covariance\n", "If we consider the above covariance as a matrix $C_{ij}=\\mathrm{cov}(X_i,\\,X_j)$, then the diagonal elements are just the familiar\n", @@ -1350,8 +1458,10 @@ }, { "cell_type": "markdown", - "id": "a8440bcb", - "metadata": {}, + "id": "5f793dd3", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1366,8 +1476,10 @@ }, { "cell_type": "markdown", - "id": "bd93e9ad", - "metadata": {}, + "id": "152feb6c", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1382,8 +1494,10 @@ }, { "cell_type": "markdown", - "id": "5da7529c", - "metadata": {}, + "id": "f29e7119", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1399,8 +1513,10 @@ }, { "cell_type": "markdown", - "id": "bb3ead26", - "metadata": {}, + "id": "25f62c6c", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1416,8 +1532,10 @@ }, { "cell_type": "markdown", - "id": "e273da78", - "metadata": {}, + "id": "16bf231d", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1432,8 +1550,10 @@ }, { "cell_type": "markdown", - "id": "a8072593", - "metadata": {}, + "id": "187dfb80", + "metadata": { + "editable": true + }, "source": [ "## Statistics, independent variables\n", "If $X_i$ and $X_j$ are independent, we get \n", @@ -1444,8 +1564,10 @@ }, { "cell_type": "markdown", - "id": "5a7e9409", - "metadata": {}, + "id": "e03a7a5f", + "metadata": { + "editable": true + }, "source": [ "## Statistics, more variance\n", "Since the variance is just $\\mathrm{var}(X_i) = \\mathrm{cov}(X_i, X_i)$, we get\n", @@ -1454,8 +1576,10 @@ }, { "cell_type": "markdown", - "id": "b0827cfa", - "metadata": {}, + "id": "d29e9ca5", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1470,8 +1594,10 @@ }, { "cell_type": "markdown", - "id": "0b3bdfc5", - "metadata": {}, + "id": "b4baf0f6", + "metadata": { + "editable": true + }, "source": [ "And in the special case when the stochastic variables are\n", "uncorrelated, the off-diagonal elements of the covariance are as we\n", @@ -1480,8 +1606,10 @@ }, { "cell_type": "markdown", - "id": "52383e37", - "metadata": {}, + "id": "96ee711d", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathrm{var}(U)=\\sum_i a_i^2\\mathrm{cov}(X_i, X_i) = \\sum_i a_i^2 \\mathrm{var}(X_i),\n", @@ -1490,16 +1618,20 @@ }, { "cell_type": "markdown", - "id": "ef4cd7b0", - "metadata": {}, + "id": "476e7381", + "metadata": { + "editable": true + }, "source": [ "and" ] }, { "cell_type": "markdown", - "id": "81b21052", - "metadata": {}, + "id": "3f7ca529", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathrm{var}(\\sum_i a_i X_i) = \\sum_i a_i^2 \\mathrm{var}(X_i)\n", @@ -1508,8 +1640,10 @@ }, { "cell_type": "markdown", - "id": "6b176024", - "metadata": {}, + "id": "1f4379b7", + "metadata": { + "editable": true + }, "source": [ "which will become very useful in our study of the error in the mean\n", "value of a set of measurements." @@ -1517,8 +1651,10 @@ }, { "cell_type": "markdown", - "id": "984bc899", - "metadata": {}, + "id": "4abdd76e", + "metadata": { + "editable": true + }, "source": [ "## Statistics and stochastic processes\n", "A *stochastic process* is a process that produces sequentially a\n", @@ -1527,8 +1663,10 @@ }, { "cell_type": "markdown", - "id": "2102af12", - "metadata": {}, + "id": "0545b421", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\{x_1, x_2,\\dots\\,x_k,\\dots\\}.\n", @@ -1537,8 +1675,10 @@ }, { "cell_type": "markdown", - "id": "0d14864b", - "metadata": {}, + "id": "9d2d86b8", + "metadata": { + "editable": true + }, "source": [ "We will call these\n", "values our *measurements* and the entire set as our measured\n", @@ -1556,8 +1696,10 @@ }, { "cell_type": "markdown", - "id": "eb7e7146", - "metadata": {}, + "id": "c806ed42", + "metadata": { + "editable": true + }, "source": [ "## Statistics and sample variables\n", "In practical situations a sample is always of finite size. Let that\n", @@ -1566,8 +1708,10 @@ }, { "cell_type": "markdown", - "id": "d3376649", - "metadata": {}, + "id": "f567485a", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\bar{x}_n \\equiv \\frac{1}{n}\\sum_{k=1}^n x_k\n", @@ -1576,16 +1720,20 @@ }, { "cell_type": "markdown", - "id": "0efde8df", - "metadata": {}, + "id": "ed2efdcf", + "metadata": { + "editable": true + }, "source": [ "The *sample variance* is:" ] }, { "cell_type": "markdown", - "id": "9911c9bb", - "metadata": {}, + "id": "687a3113", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathrm{var}(x) \\equiv \\frac{1}{n}\\sum_{k=1}^n (x_k - \\bar{x}_n)^2\n", @@ -1594,8 +1742,10 @@ }, { "cell_type": "markdown", - "id": "550ca901", - "metadata": {}, + "id": "6b2b529b", + "metadata": { + "editable": true + }, "source": [ "its square root being the *standard deviation of the sample*. The\n", "*sample covariance* is:" @@ -1603,8 +1753,10 @@ }, { "cell_type": "markdown", - "id": "51ed53a4", - "metadata": {}, + "id": "334af3f9", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathrm{cov}(x)\\equiv\\frac{1}{n}\\sum_{kl}(x_k - \\bar{x}_n)(x_l - \\bar{x}_n)\n", @@ -1613,8 +1765,10 @@ }, { "cell_type": "markdown", - "id": "fb01f2f3", - "metadata": {}, + "id": "bf1509e8", + "metadata": { + "editable": true + }, "source": [ "## Statistics, sample variance and covariance\n", "Note that the sample variance is the sample covariance without the\n", @@ -1631,8 +1785,10 @@ }, { "cell_type": "markdown", - "id": "d88f8573", - "metadata": {}, + "id": "e3997fdf", + "metadata": { + "editable": true + }, "source": [ "## Statistics, law of large numbers\n", "The law of large numbers\n", @@ -1642,8 +1798,10 @@ }, { "cell_type": "markdown", - "id": "6144afbf", - "metadata": {}, + "id": "c8232d08", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\lim_{n\\to\\infty}\\bar{x}_n = \\mu_X^{\\phantom X}\n", @@ -1652,8 +1810,10 @@ }, { "cell_type": "markdown", - "id": "9ab77fa8", - "metadata": {}, + "id": "f28dbe3a", + "metadata": { + "editable": true + }, "source": [ "The sample mean $\\bar{x}_n$ works therefore as an estimate of the true\n", "mean $\\mu_X^{\\phantom X}$.\n", @@ -1673,8 +1833,10 @@ }, { "cell_type": "markdown", - "id": "7dfc17ac", - "metadata": {}, + "id": "52685df5", + "metadata": { + "editable": true + }, "source": [ "## Statistics, more on sample error\n", "Let us first take a look at what happens to the sample error as the\n", @@ -1686,8 +1848,10 @@ }, { "cell_type": "markdown", - "id": "f1fe449a", - "metadata": {}, + "id": "17b667c8", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\overline X_n = \\frac{1}{n}\\sum_{i=1}^n X_i\n", @@ -1696,8 +1860,10 @@ }, { "cell_type": "markdown", - "id": "ccb63cef", - "metadata": {}, + "id": "c597107c", + "metadata": { + "editable": true + }, "source": [ "All the coefficients are just equal $1/n$. The PDF of $\\overline X_n$,\n", "denoted by $p_{\\overline X_n}(x)$ is the desired PDF of the sample\n", @@ -1706,8 +1872,10 @@ }, { "cell_type": "markdown", - "id": "43d6b34b", - "metadata": {}, + "id": "3d2d0c07", + "metadata": { + "editable": true + }, "source": [ "## Statistics\n", "The probability density of obtaining a sample mean $\\bar x_n$\n", @@ -1718,8 +1886,10 @@ }, { "cell_type": "markdown", - "id": "26cdc0fa", - "metadata": {}, + "id": "34766f17", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p_{\\overline X_n}(x) = \\int p_X^{\\phantom X}(x_1)\\cdots\n", @@ -1730,16 +1900,20 @@ }, { "cell_type": "markdown", - "id": "180b736d", - "metadata": {}, + "id": "53342f5a", + "metadata": { + "editable": true + }, "source": [ "And in particular we are interested in its variance $\\mathrm{var}(\\overline X_n)$." ] }, { "cell_type": "markdown", - "id": "bc497962", - "metadata": {}, + "id": "9b5e9c80", + "metadata": { + "editable": true + }, "source": [ "## Statistics, central limit theorem\n", "It is generally not possible to express $p_{\\overline X_n}(x)$ in a\n", @@ -1753,8 +1927,10 @@ }, { "cell_type": "markdown", - "id": "94f0e9ad", - "metadata": {}, + "id": "8e5251c1", + "metadata": { + "editable": true + }, "source": [ "\n", "
\n", @@ -1771,8 +1947,10 @@ }, { "cell_type": "markdown", - "id": "177a4e65", - "metadata": {}, + "id": "0fc50642", + "metadata": { + "editable": true + }, "source": [ "## Covariance example\n", "\n", @@ -1782,8 +1960,10 @@ }, { "cell_type": "markdown", - "id": "b8647838", - "metadata": {}, + "id": "d2f9a0c8", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{\\Sigma} = \\begin{bmatrix} \\sigma_{xx} & \\sigma_{xy} & \\sigma_{xz} \\\\\n", @@ -1795,16 +1975,20 @@ }, { "cell_type": "markdown", - "id": "1fb8ee64", - "metadata": {}, + "id": "8faf4662", + "metadata": { + "editable": true + }, "source": [ "where for example" ] }, { "cell_type": "markdown", - "id": "459b5931", - "metadata": {}, + "id": "af30715f", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\sigma_{xy} =\\frac{1}{n} \\sum_{i=0}^{n-1}(x_i- \\overline{x})(y_i- \\overline{y}).\n", @@ -1813,8 +1997,10 @@ }, { "cell_type": "markdown", - "id": "996f5655", - "metadata": {}, + "id": "0a37e1be", + "metadata": { + "editable": true + }, "source": [ "The Numpy function **np.cov** calculates the covariance elements using\n", "the factor $1/(n-1)$ instead of $1/n$ since it assumes we do not have\n", @@ -1827,8 +2013,10 @@ }, { "cell_type": "markdown", - "id": "950e7dbc", - "metadata": {}, + "id": "54464f41", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{W} = \\begin{bmatrix} x_0 & y_0 & z_0 \\\\\n", @@ -1843,8 +2031,10 @@ }, { "cell_type": "markdown", - "id": "2946ac65", - "metadata": {}, + "id": "52e31f84", + "metadata": { + "editable": true + }, "source": [ "which in turn is converted into into the $3\\times 3$ covariance matrix\n", "$\\boldsymbol{\\Sigma}$ via the Numpy function **np.cov()**. We note that we can\n", @@ -1856,31 +2046,23 @@ }, { "cell_type": "markdown", - "id": "3b643958", - "metadata": {}, + "id": "fa89bf2a", + "metadata": { + "editable": true + }, "source": [ "## Covariance in numpy" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "858e99b8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.09163914747417538\n", - "4.375115764185571\n", - "0.6892618254093753\n", - "[[ 1.3495844 4.03015049 4.44924571]\n", - " [ 4.03015049 13.06494732 13.31433367]\n", - " [ 4.44924571 13.31433367 22.33736214]]\n" - ] - } - ], + "execution_count": 16, + "id": "9d21a1c1", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "# Importing various packages\n", "import numpy as np\n", @@ -1899,16 +2081,20 @@ }, { "cell_type": "markdown", - "id": "71d921e7", - "metadata": {}, + "id": "737f1bd2", + "metadata": { + "editable": true + }, "source": [ "## Practicalities, Useful Python Packages" ] }, { "cell_type": "markdown", - "id": "5e4ede91", - "metadata": {}, + "id": "df198d83", + "metadata": { + "editable": true + }, "source": [ "## Meet the Pandas\n", "\n", @@ -1930,82 +2116,13 @@ }, { "cell_type": "code", - "execution_count": 13, - "id": "4ec4aa9e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
First NameLast NamePlace of birthDate of Birth T.A.
0FrodoBagginsShire2968
1BilboBagginsShire2890
2Aragorn IIElessarEriador2931
3SamwiseGamgeeShire2980
\n", - "" - ], - "text/plain": [ - " First Name Last Name Place of birth Date of Birth T.A.\n", - "0 Frodo Baggins Shire 2968\n", - "1 Bilbo Baggins Shire 2890\n", - "2 Aragorn II Elessar Eriador 2931\n", - "3 Samwise Gamgee Shire 2980" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 17, + "id": "600ab712", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import pandas as pd\n", "from IPython.display import display\n", @@ -2020,8 +2137,10 @@ }, { "cell_type": "markdown", - "id": "e2a3cdc5", - "metadata": {}, + "id": "ad6a38f9", + "metadata": { + "editable": true + }, "source": [ "## Data Frames in Pandas\n", "\n", @@ -2033,82 +2152,13 @@ }, { "cell_type": "code", - "execution_count": 14, - "id": "1cec5f2d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
First NameLast NamePlace of birthDate of Birth T.A.
FrodoFrodoBagginsShire2968
BilboBilboBagginsShire2890
AragornAragorn IIElessarEriador2931
SamSamwiseGamgeeShire2980
\n", - "
" - ], - "text/plain": [ - " First Name Last Name Place of birth Date of Birth T.A.\n", - "Frodo Frodo Baggins Shire 2968\n", - "Bilbo Bilbo Baggins Shire 2890\n", - "Aragorn Aragorn II Elessar Eriador 2931\n", - "Sam Samwise Gamgee Shire 2980" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 18, + "id": "2befa1e2", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "data_pandas = pd.DataFrame(data,index=['Frodo','Bilbo','Aragorn','Sam'])\n", "display(data_pandas)" @@ -2116,130 +2166,46 @@ }, { "cell_type": "markdown", - "id": "79adee29", - "metadata": {}, + "id": "ca5f1c39", + "metadata": { + "editable": true + }, "source": [ "Thereafter we display the content of the row which begins with the index **Aragorn**" ] }, { "cell_type": "code", - "execution_count": 15, - "id": "526647ff", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "First Name Aragorn II\n", - "Last Name Elessar\n", - "Place of birth Eriador\n", - "Date of Birth T.A. 2931\n", - "Name: Aragorn, dtype: object" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 19, + "id": "c4105f00", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "display(data_pandas.loc['Aragorn'])" ] }, { "cell_type": "markdown", - "id": "2ddd01cc", - "metadata": {}, + "id": "9690a7aa", + "metadata": { + "editable": true + }, "source": [ "We can easily append data to this, for example" ] }, { "cell_type": "code", - "execution_count": 16, - "id": "8299fdd9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
First NameLast NamePlace of birthDate of Birth T.A.
FrodoFrodoBagginsShire2968
BilboBilboBagginsShire2890
AragornAragorn IIElessarEriador2931
SamSamwiseGamgeeShire2980
PippinPeregrinTookShire2990
\n", - "
" - ], - "text/plain": [ - " First Name Last Name Place of birth Date of Birth T.A.\n", - "Frodo Frodo Baggins Shire 2968\n", - "Bilbo Bilbo Baggins Shire 2890\n", - "Aragorn Aragorn II Elessar Eriador 2931\n", - "Sam Samwise Gamgee Shire 2980\n", - "Pippin Peregrin Took Shire 2990" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 20, + "id": "51c3f637", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "new_hobbit = {'First Name': [\"Peregrin\"],\n", " 'Last Name': [\"Took\"],\n", @@ -2252,8 +2218,10 @@ }, { "cell_type": "markdown", - "id": "b400f59e", - "metadata": {}, + "id": "de931d19", + "metadata": { + "editable": true + }, "source": [ "## More Pandas\n", "\n", @@ -2263,289 +2231,13 @@ }, { "cell_type": "code", - "execution_count": 17, - "id": "6ad49953", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
01234
0-1.7497650.3426801.153036-0.2524360.981321
10.5142190.221180-1.070043-0.1894960.255001
2-0.4580270.435163-0.5835950.8168470.672721
3-0.104411-0.5312801.029733-0.438136-1.118318
41.6189821.541605-0.251879-0.8424360.184519
50.9370820.7310001.361556-0.3262380.055676
60.222400-1.443217-0.7563520.8164540.750445
7-0.4559471.189622-1.690617-1.356399-1.232435
8-0.544439-0.6681720.007315-0.6129391.299748
9-1.733096-0.9833100.357508-1.6135791.470714
\n", - "
" - ], - "text/plain": [ - " 0 1 2 3 4\n", - "0 -1.749765 0.342680 1.153036 -0.252436 0.981321\n", - "1 0.514219 0.221180 -1.070043 -0.189496 0.255001\n", - "2 -0.458027 0.435163 -0.583595 0.816847 0.672721\n", - "3 -0.104411 -0.531280 1.029733 -0.438136 -1.118318\n", - "4 1.618982 1.541605 -0.251879 -0.842436 0.184519\n", - "5 0.937082 0.731000 1.361556 -0.326238 0.055676\n", - "6 0.222400 -1.443217 -0.756352 0.816454 0.750445\n", - "7 -0.455947 1.189622 -1.690617 -1.356399 -1.232435\n", - "8 -0.544439 -0.668172 0.007315 -0.612939 1.299748\n", - "9 -1.733096 -0.983310 0.357508 -1.613579 1.470714" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 -0.175300\n", - "1 0.083527\n", - "2 -0.044334\n", - "3 -0.399836\n", - "4 0.331939\n", - "dtype: float64\n", - "0 1.069584\n", - "1 0.965548\n", - "2 1.018232\n", - "3 0.793167\n", - "4 0.918992\n", - "dtype: float64\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
01234
03.0616790.1174301.3294920.0637240.962990
10.2644210.0489201.1449930.0359090.065026
20.2097890.1893670.3405830.6672390.452553
30.0109020.2822591.0603490.1919631.250636
42.6211022.3765470.0634430.7096980.034047
50.8781230.5343621.8538350.1064310.003100
60.0494622.0828750.5720690.6665970.563167
70.2078881.4152012.8581851.8398181.518895
80.2964140.4464530.0000540.3756941.689345
93.0036200.9668990.1278122.6036362.162999
\n", - "
" - ], - "text/plain": [ - " 0 1 2 3 4\n", - "0 3.061679 0.117430 1.329492 0.063724 0.962990\n", - "1 0.264421 0.048920 1.144993 0.035909 0.065026\n", - "2 0.209789 0.189367 0.340583 0.667239 0.452553\n", - "3 0.010902 0.282259 1.060349 0.191963 1.250636\n", - "4 2.621102 2.376547 0.063443 0.709698 0.034047\n", - "5 0.878123 0.534362 1.853835 0.106431 0.003100\n", - "6 0.049462 2.082875 0.572069 0.666597 0.563167\n", - "7 0.207888 1.415201 2.858185 1.839818 1.518895\n", - "8 0.296414 0.446453 0.000054 0.375694 1.689345\n", - "9 3.003620 0.966899 0.127812 2.603636 2.162999" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 21, + "id": "a5e79c53", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", @@ -2564,198 +2256,23 @@ }, { "cell_type": "markdown", - "id": "c1243846", - "metadata": {}, + "id": "cc8a1c21", + "metadata": { + "editable": true + }, "source": [ "Thereafter we can select specific columns only and plot final results" ] }, { "cell_type": "code", - "execution_count": 18, - "id": "b8544a35", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
FirstSecondThirdFourthFifth
0-1.7497650.3426801.153036-0.2524360.981321
10.5142190.221180-1.070043-0.1894960.255001
2-0.4580270.435163-0.5835950.8168470.672721
3-0.104411-0.5312801.029733-0.438136-1.118318
41.6189821.541605-0.251879-0.8424360.184519
50.9370820.7310001.361556-0.3262380.055676
60.222400-1.443217-0.7563520.8164540.750445
7-0.4559471.189622-1.690617-1.356399-1.232435
8-0.544439-0.6681720.007315-0.6129391.299748
9-1.733096-0.9833100.357508-1.6135791.470714
\n", - "
" - ], - "text/plain": [ - " First Second Third Fourth Fifth\n", - "0 -1.749765 0.342680 1.153036 -0.252436 0.981321\n", - "1 0.514219 0.221180 -1.070043 -0.189496 0.255001\n", - "2 -0.458027 0.435163 -0.583595 0.816847 0.672721\n", - "3 -0.104411 -0.531280 1.029733 -0.438136 -1.118318\n", - "4 1.618982 1.541605 -0.251879 -0.842436 0.184519\n", - "5 0.937082 0.731000 1.361556 -0.326238 0.055676\n", - "6 0.222400 -1.443217 -0.756352 0.816454 0.750445\n", - "7 -0.455947 1.189622 -1.690617 -1.356399 -1.232435\n", - "8 -0.544439 -0.668172 0.007315 -0.612939 1.299748\n", - "9 -1.733096 -0.983310 0.357508 -1.613579 1.470714" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.08352721390288316\n", - "\n", - "Int64Index: 10 entries, 0 to 9\n", - "Data columns (total 5 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 First 10 non-null float64\n", - " 1 Second 10 non-null float64\n", - " 2 Third 10 non-null float64\n", - " 3 Fourth 10 non-null float64\n", - " 4 Fifth 10 non-null float64\n", - "dtypes: float64(5)\n", - "memory usage: 480.0 bytes\n", - "None\n", - " First Second Third Fourth Fifth\n", - "count 10.000000 10.000000 10.000000 10.000000 10.000000\n", - "mean -0.175300 0.083527 -0.044334 -0.399836 0.331939\n", - "std 1.069584 0.965548 1.018232 0.793167 0.918992\n", - "min -1.749765 -1.443217 -1.690617 -1.613579 -1.232435\n", - "25% -0.522836 -0.633949 -0.713163 -0.785061 0.087887\n", - "50% -0.280179 0.281930 -0.122282 -0.382187 0.463861\n", - "75% 0.441264 0.657041 0.861676 -0.205231 0.923602\n", - "max 1.618982 1.541605 1.361556 0.816847 1.470714\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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uTfJev2d64wGVuvzNH/t63zrrmu9huq93rC1evVqjwfp3bu3JKlFixbq3r27MjIy6g1bJSUnPR73TPVtD2J6mxFfoz//Rn/+y8q9Sdbv70xW7NOfX7/zqbu+/rzZe13BzcjeiDU1NSosLJQk7dixQx9++KHrtvz8fMXExJgYFgAAoNHxKGydOHFCy5YtU1lZmTZs2KA9e/ZIkg4cOKCJEydKktq0aaM33nhDy5cv19NPP61hw4apb9++HhcOAADgDzzaQD4sLEyTJ0/W5MmTz1revXt3bd7848ldExMT9fzzz3syDAALeXHuVq8+3qQZqV59PADwNo4gD8DS9u37QsuWLVFVVZX69btKkuRwOORwODRt2kMeP/6GDet12213SJK2bPkfLVw4X++++y+PHxeAdRC2AFhajx69lJzcRxUVFRo//sfNG06dOqXduz/xyuNv2PCaK2xdf/0NWrlymVceF4B1ELYANClVVVVavnypRo/+uebO/YNiYmKVn5+nO+64W61atdKzzz6jrl0TNH78RK1Y8YI+/3yvli5dqbff/odWrHhBY8bcrKKib5STk62bbhoju71Mq1evUM+el+vqqwdKkjZufFP79n2hkpLvtHr1Sz7uGICvcW5EAE1CRsZuLV68QEuXLpIkPfPM0xoz5mbdeec9Gj36Zs2d+wdFRrbVNdekuu4zatRY1+URI0YpNjZO3bv30COPPKGHHpqh0aN/rtDQVho/fqIraElSnz799NhjM2Wz2bR///6GahFAI8XMFoAmISWlr6ZMeUBOp1MFBYe1efPf1anTj+dsjY6OVk7OuQ5leba4uC6SpKSkc59BIzr6x8PbhIWFq7y83MPKAfg7whaAJsVmsyk2Nk5duybo6NEjat06TAUFBerWLUGS1LJlS508+WNAOn78mNv7n339xx8IsrOzlJCQ5HYdAL7l672WCVsAGpS7Lz2TR7HOytqnvXszVVlZqfT0fyot7TpJ0owZT2r9+j9r166Pdfhwvh555ElJUt++V2nz5k165ZW1CgoK0vHjx7Rjx/9TYGCAjh8/pjff3KA777xHERERkqTExCQtX75UwcHBOnLkiOx2u956a5O6dUvUwYNfadOmTZo6NUGBgXzdAk2Vzel0On1dhDsX+8V779x0t8vXzEir837+fMqC80F//o3+/JeVe5Os2V/2fePcLk9Y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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 22, + "id": "fe3cef63", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "df.columns = ['First', 'Second', 'Third', 'Fourth', 'Fifth']\n", "df.index = np.arange(10)\n", @@ -2779,34 +2296,23 @@ }, { "cell_type": "markdown", - "id": "c5f06a97", - "metadata": {}, + "id": "2998d4b8", + "metadata": { + "editable": true + }, "source": [ "We can produce a $4\\times 4$ matrix" ] }, { "cell_type": "code", - "execution_count": 19, - "id": "81a33cae", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[ 0 1 2 3]\n", - " [ 4 5 6 7]\n", - " [ 8 9 10 11]\n", - " [12 13 14 15]]\n", - " 0 1 2 3\n", - "0 0 1 2 3\n", - "1 4 5 6 7\n", - "2 8 9 10 11\n", - "3 12 13 14 15\n" - ] - } - ], + "execution_count": 23, + "id": "3061981d", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "b = np.arange(16).reshape((4,4))\n", "print(b)\n", @@ -2816,16 +2322,20 @@ }, { "cell_type": "markdown", - "id": "0f5cb8bd", - "metadata": {}, + "id": "fc167a21", + "metadata": { + "editable": true + }, "source": [ "and many other operations." ] }, { "cell_type": "markdown", - "id": "f267302a", - "metadata": {}, + "id": "68929a28", + "metadata": { + "editable": true + }, "source": [ "## Pandas Series\n", "\n", @@ -2839,16 +2349,20 @@ }, { "cell_type": "markdown", - "id": "e6b82e75", - "metadata": {}, + "id": "b85330d6", + "metadata": { + "editable": true + }, "source": [ "## Our first Machine Learning Encounter" ] }, { "cell_type": "markdown", - "id": "db90961e", - "metadata": {}, + "id": "6f03ed3e", + "metadata": { + "editable": true + }, "source": [ "## Reading Data and Fitting\n", "\n", @@ -2884,8 +2398,10 @@ }, { "cell_type": "markdown", - "id": "9443ff02", - "metadata": {}, + "id": "e5712561", + "metadata": { + "editable": true + }, "source": [ "## Simple linear regression model using **scikit-learn**\n", "\n", @@ -2903,8 +2419,10 @@ }, { "cell_type": "markdown", - "id": "83ef22c1", - "metadata": {}, + "id": "4563534c", + "metadata": { + "editable": true + }, "source": [ "## Simple linear regression model using **scikit-learn**, Numpy functions\n", "\n", @@ -2921,8 +2439,10 @@ }, { "cell_type": "markdown", - "id": "f8f8a91f", - "metadata": {}, + "id": "52940676", + "metadata": { + "editable": true + }, "source": [ "$$\n", "y = 2x+N(0,1),\n", @@ -2931,8 +2451,10 @@ }, { "cell_type": "markdown", - "id": "b295f44e", - "metadata": {}, + "id": "ea45c4f7", + "metadata": { + "editable": true + }, "source": [ "where $N(0,1)$ represents random numbers generated by the normal\n", "distribution. From **Scikit-Learn** we import then the\n", @@ -2946,8 +2468,10 @@ }, { "cell_type": "markdown", - "id": "0ff9982d", - "metadata": {}, + "id": "7060de6c", + "metadata": { + "editable": true + }, "source": [ "## Simple linear regression model using **scikit-learn**, Matplotlib\n", "\n", @@ -2964,23 +2488,13 @@ }, { "cell_type": "code", - "execution_count": 27, - "id": "4be45e3e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": 24, + "id": "3254448a", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "%matplotlib inline\n", "\n", @@ -2990,7 +2504,7 @@ "from sklearn.linear_model import LinearRegression\n", "\n", "x = np.random.rand(100,1)\n", - "y = 2*x#+np.random.randn(100,1)\n", + "y = 2*x+np.random.randn(100,1)\n", "linreg = LinearRegression()\n", "linreg.fit(x,y)\n", "xnew = np.array([[0],[1]])\n", @@ -3007,8 +2521,10 @@ }, { "cell_type": "markdown", - "id": "b071af91", - "metadata": {}, + "id": "cded2181", + "metadata": { + "editable": true + }, "source": [ "## Simple linear regression model, what to expect\n", "\n", @@ -3024,8 +2540,10 @@ }, { "cell_type": "markdown", - "id": "1914717a", - "metadata": {}, + "id": "494f97a9", + "metadata": { + "editable": true + }, "source": [ "$$\n", "y = 10x+0.01 \\times N(0,1),\n", @@ -3034,8 +2552,10 @@ }, { "cell_type": "markdown", - "id": "158f2f33", - "metadata": {}, + "id": "2c9cbe4d", + "metadata": { + "editable": true + }, "source": [ "where $x$ is defined as before. Does the fit look better? Indeed, by\n", "reducing the role of the noise given by the normal distribution we see immediately that\n", @@ -3047,8 +2567,10 @@ }, { "cell_type": "markdown", - "id": "c254e73e", - "metadata": {}, + "id": "10f72371", + "metadata": { + "editable": true + }, "source": [ "## Simple linear regression model, how to evaluate the model\n", "\n", @@ -3061,8 +2583,10 @@ }, { "cell_type": "markdown", - "id": "2c394a93", - "metadata": {}, + "id": "d9052528", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\chi^2 = \\frac{1}{n}\n", @@ -3072,8 +2596,10 @@ }, { "cell_type": "markdown", - "id": "e8e39daa", - "metadata": {}, + "id": "d3b77993", + "metadata": { + "editable": true + }, "source": [ "where $\\sigma_i^2$ is the variance (to be defined later) of the entry\n", "$y_i$. We may not know the explicit value of $\\sigma_i^2$, it serves\n", @@ -3083,8 +2609,10 @@ }, { "cell_type": "markdown", - "id": "b220e062", - "metadata": {}, + "id": "85ca76ad", + "metadata": { + "editable": true + }, "source": [ "## Our first Cost/Loss function encounter\n", "\n", @@ -3106,8 +2634,10 @@ }, { "cell_type": "markdown", - "id": "d25f2d7c", - "metadata": {}, + "id": "a2ebddb2", + "metadata": { + "editable": true + }, "source": [ "## Our first Cost/Loss function encounter\n", "\n", @@ -3118,8 +2648,10 @@ }, { "cell_type": "markdown", - "id": "0d8835dd", - "metadata": {}, + "id": "96053613", + "metadata": { + "editable": true + }, "source": [ "## Our first Cost/Loss function encounter, how do we define them?\n", "\n", @@ -3129,8 +2661,10 @@ }, { "cell_type": "markdown", - "id": "20ede088", - "metadata": {}, + "id": "5390a5d6", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\epsilon_{\\mathrm{relative}}= \\frac{\\vert \\boldsymbol{y} -\\boldsymbol{\\tilde{y}}\\vert}{\\vert \\boldsymbol{y}\\vert}.\n", @@ -3139,8 +2673,10 @@ }, { "cell_type": "markdown", - "id": "064dcf9e", - "metadata": {}, + "id": "b4019da3", + "metadata": { + "editable": true + }, "source": [ "The squared cost function results in an arithmetic mean-unbiased\n", "estimator, and the absolute-value cost function results in a\n", @@ -3155,8 +2691,11 @@ { "cell_type": "code", "execution_count": 25, - "id": "231b74dc", - "metadata": {}, + "id": "1155577f", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -3179,8 +2718,10 @@ }, { "cell_type": "markdown", - "id": "c1e3e710", - "metadata": {}, + "id": "28f2502f", + "metadata": { + "editable": true + }, "source": [ "Depending on the parameter in front of the normal distribution, we may\n", "have a small or larger relative error. Try to play around with\n", @@ -3190,8 +2731,10 @@ }, { "cell_type": "markdown", - "id": "d2d59eac", - "metadata": {}, + "id": "5b8dd083", + "metadata": { + "editable": true + }, "source": [ "## **Scikit-Learn** functionality\n", "\n", @@ -3207,8 +2750,11 @@ { "cell_type": "code", "execution_count": 26, - "id": "a7b90e93", - "metadata": {}, + "id": "9afe6858", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import numpy as np \n", @@ -3242,8 +2788,10 @@ }, { "cell_type": "markdown", - "id": "28c0df5c", - "metadata": {}, + "id": "61bdf4c7", + "metadata": { + "editable": true + }, "source": [ "The function **coef** gives us the parameter $\\beta$ of our fit while **intercept** yields \n", "$\\alpha$. Depending on the constant in front of the normal distribution, we get values near or far from $alpha =2$ and $\\beta =5$. Try to play around with different parameters in front of the normal distribution. The function **meansquarederror** gives us the mean square error, a risk metric corresponding to the expected value of the squared (quadratic) error or loss defined as" @@ -3251,8 +2799,10 @@ }, { "cell_type": "markdown", - "id": "1cb1be77", - "metadata": {}, + "id": "8b98ecf6", + "metadata": { + "editable": true + }, "source": [ "$$\n", "MSE(\\boldsymbol{y},\\boldsymbol{\\tilde{y}}) = \\frac{1}{n}\n", @@ -3262,8 +2812,10 @@ }, { "cell_type": "markdown", - "id": "ec73fdee", - "metadata": {}, + "id": "c75d9ab5", + "metadata": { + "editable": true + }, "source": [ "The smaller the value, the better the fit. Ideally we would like to\n", "have an MSE equal zero. The attentive reader has probably recognized\n", @@ -3281,8 +2833,10 @@ }, { "cell_type": "markdown", - "id": "55843ed1", - "metadata": {}, + "id": "1c665fe9", + "metadata": { + "editable": true + }, "source": [ "$$\n", "R^2(\\boldsymbol{y}, \\tilde{\\boldsymbol{y}}) = 1 - \\frac{\\sum_{i=0}^{n - 1} (y_i - \\tilde{y}_i)^2}{\\sum_{i=0}^{n - 1} (y_i - \\bar{y})^2},\n", @@ -3291,16 +2845,20 @@ }, { "cell_type": "markdown", - "id": "30fb7388", - "metadata": {}, + "id": "f936b8a4", + "metadata": { + "editable": true + }, "source": [ "where we have defined the mean value of $\\boldsymbol{y}$ as" ] }, { "cell_type": "markdown", - "id": "398871e6", - "metadata": {}, + "id": "dc96de93", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\bar{y} = \\frac{1}{n} \\sum_{i=0}^{n - 1} y_i.\n", @@ -3309,8 +2867,10 @@ }, { "cell_type": "markdown", - "id": "d76a910a", - "metadata": {}, + "id": "e66edbc0", + "metadata": { + "editable": true + }, "source": [ "Another quantity taht we will meet again in our discussions of regression analysis is \n", " the mean absolute error (MAE), a risk metric corresponding to the expected value of the absolute error loss or what we call the $l1$-norm loss. In our discussion above we presented the relative error.\n", @@ -3319,8 +2879,10 @@ }, { "cell_type": "markdown", - "id": "ed15980e", - "metadata": {}, + "id": "0b60ef7e", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\text{MAE}(\\boldsymbol{y}, \\boldsymbol{\\tilde{y}}) = \\frac{1}{n} \\sum_{i=0}^{n-1} \\left| y_i - \\tilde{y}_i \\right|.\n", @@ -3329,8 +2891,10 @@ }, { "cell_type": "markdown", - "id": "c8a7fd62", - "metadata": {}, + "id": "d4379f53", + "metadata": { + "editable": true + }, "source": [ "We present the \n", "squared logarithmic (quadratic) error" @@ -3338,8 +2902,10 @@ }, { "cell_type": "markdown", - "id": "afd10727", - "metadata": {}, + "id": "50759845", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\text{MSLE}(\\boldsymbol{y}, \\boldsymbol{\\tilde{y}}) = \\frac{1}{n} \\sum_{i=0}^{n - 1} (\\log_e (1 + y_i) - \\log_e (1 + \\tilde{y}_i) )^2,\n", @@ -3348,8 +2914,10 @@ }, { "cell_type": "markdown", - "id": "a7d9b2c9", - "metadata": {}, + "id": "632fbab1", + "metadata": { + "editable": true + }, "source": [ "where $\\log_e (x)$ stands for the natural logarithm of $x$. This error\n", "estimate is best to use when targets having exponential growth, such\n", @@ -3368,8 +2936,10 @@ }, { "cell_type": "markdown", - "id": "98da4d2e", - "metadata": {}, + "id": "bb88fd57", + "metadata": { + "editable": true + }, "source": [ "$$\n", "H_{\\delta}(a)=\\begin{bmatrix}\\frac{1}{2}a^{2}& \\text{for }|a|\\leq \\delta ,\\\\ \\delta (|a|-{\\frac {1}{2}}\\delta ),&\\text{otherwise.}\\end{bmatrix}.\n", @@ -3378,8 +2948,10 @@ }, { "cell_type": "markdown", - "id": "79c42e27", - "metadata": {}, + "id": "f125d3ce", + "metadata": { + "editable": true + }, "source": [ "Here $a=\\boldsymbol{y} - \\boldsymbol{\\tilde{y}}$.\n", "We will discuss in more\n", @@ -3388,8 +2960,10 @@ }, { "cell_type": "markdown", - "id": "a6e2938c", - "metadata": {}, + "id": "fbccc0c2", + "metadata": { + "editable": true + }, "source": [ "## Cubic Polynomial\n", "We conclude this part with another example. Instead of \n", @@ -3399,8 +2973,11 @@ { "cell_type": "code", "execution_count": 27, - "id": "0aa84a55", - "metadata": {}, + "id": "11d185ac", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", @@ -3437,16 +3014,20 @@ }, { "cell_type": "markdown", - "id": "915753da", - "metadata": {}, + "id": "fce4a77a", + "metadata": { + "editable": true + }, "source": [ "## Getting more serious, fitting Nuclear Binding Energies" ] }, { "cell_type": "markdown", - "id": "a6a252e2", - "metadata": {}, + "id": "ca8a6441", + "metadata": { + "editable": true + }, "source": [ "## To our real data: nuclear binding energies. Brief reminder on masses and binding energies\n", "\n", @@ -3460,8 +3041,10 @@ }, { "cell_type": "markdown", - "id": "d104c546", - "metadata": {}, + "id": "0ea623d0", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\Delta M(N, Z) = M(N, Z) - uA,\n", @@ -3470,16 +3053,20 @@ }, { "cell_type": "markdown", - "id": "77864782", - "metadata": {}, + "id": "96c0c8c4", + "metadata": { + "editable": true + }, "source": [ "where $u$ is the Atomic Mass Unit" ] }, { "cell_type": "markdown", - "id": "d88ade50", - "metadata": {}, + "id": "37725ad8", + "metadata": { + "editable": true + }, "source": [ "$$\n", "u = M(^{12}\\mathrm{C})/12 = 931.4940954(57) \\hspace{0.1cm} \\mathrm{MeV}/c^2.\n", @@ -3488,16 +3075,20 @@ }, { "cell_type": "markdown", - "id": "5839e02d", - "metadata": {}, + "id": "555b1b78", + "metadata": { + "editable": true + }, "source": [ "The nucleon masses are" ] }, { "cell_type": "markdown", - "id": "87fc70e7", - "metadata": {}, + "id": "9bb2a2c5", + "metadata": { + "editable": true + }, "source": [ "$$\n", "m_p = 1.00727646693(9)u,\n", @@ -3506,16 +3097,20 @@ }, { "cell_type": "markdown", - "id": "bfcb8f86", - "metadata": {}, + "id": "fcfb2f3e", + "metadata": { + "editable": true + }, "source": [ "and" ] }, { "cell_type": "markdown", - "id": "f915062b", - "metadata": {}, + "id": "68ec28cd", + "metadata": { + "editable": true + }, "source": [ "$$\n", "m_n = 939.56536(8)\\hspace{0.1cm} \\mathrm{MeV}/c^2 = 1.0086649156(6)u.\n", @@ -3524,8 +3119,10 @@ }, { "cell_type": "markdown", - "id": "2596a881", - "metadata": {}, + "id": "af8102af", + "metadata": { + "editable": true + }, "source": [ "In the [2016 mass evaluation of by W.J.Huang, G.Audi, M.Wang, F.G.Kondev, S.Naimi and X.Xu](http://nuclearmasses.org/resources_folder/Wang_2017_Chinese_Phys_C_41_030003.pdf)\n", "there are data on masses and decays of 3437 nuclei.\n", @@ -3538,8 +3135,10 @@ }, { "cell_type": "markdown", - "id": "0e7c6e9f", - "metadata": {}, + "id": "d9eda3ca", + "metadata": { + "editable": true + }, "source": [ "$$\n", "BE(N, Z) = ZM_H c^2 + Nm_n c^2 - M(N, Z)c^2 ,\n", @@ -3548,8 +3147,10 @@ }, { "cell_type": "markdown", - "id": "a54348ec", - "metadata": {}, + "id": "6210ec3a", + "metadata": { + "editable": true + }, "source": [ "where $M_H$ is the mass of the hydrogen atom and $m_n$ is the mass of the neutron.\n", "In terms of the mass excess the binding energy is given by" @@ -3557,8 +3158,10 @@ }, { "cell_type": "markdown", - "id": "e39381b4", - "metadata": {}, + "id": "0c68f3a2", + "metadata": { + "editable": true + }, "source": [ "$$\n", "BE(N, Z) = Z\\Delta_H c^2 + N\\Delta_n c^2 -\\Delta(N, Z)c^2 ,\n", @@ -3567,8 +3170,10 @@ }, { "cell_type": "markdown", - "id": "cb112a3d", - "metadata": {}, + "id": "dae31ab9", + "metadata": { + "editable": true + }, "source": [ "where $\\Delta_H c^2 = 7.2890$ MeV and $\\Delta_n c^2 = 8.0713$ MeV.\n", "\n", @@ -3579,8 +3184,10 @@ }, { "cell_type": "markdown", - "id": "4b9db2ac", - "metadata": {}, + "id": "a2d87b72", + "metadata": { + "editable": true + }, "source": [ "$$\n", "BE(N,Z) = a_1A-a_2A^{2/3}-a_3\\frac{Z^2}{A^{1/3}}-a_4\\frac{(N-Z)^2}{A},\n", @@ -3589,8 +3196,10 @@ }, { "cell_type": "markdown", - "id": "075fe037", - "metadata": {}, + "id": "1133dd8f", + "metadata": { + "editable": true + }, "source": [ "where $A$ stands for the number of nucleons and the $a_i$s are parameters which are determined by a fit \n", "to the experimental data. \n", @@ -3612,8 +3221,10 @@ }, { "cell_type": "markdown", - "id": "5e533cdd", - "metadata": {}, + "id": "18791e39", + "metadata": { + "editable": true + }, "source": [ "### Organizing our data\n", "\n", @@ -3626,9 +3237,12 @@ }, { "cell_type": "code", - "execution_count": 2, - "id": "28095960", - "metadata": {}, + "execution_count": 28, + "id": "3f96fe0b", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "# Common imports\n", @@ -3668,8 +3282,10 @@ }, { "cell_type": "markdown", - "id": "619bb5a2", - "metadata": {}, + "id": "b4a506c5", + "metadata": { + "editable": true + }, "source": [ "Our next step is to read the data on experimental binding energies and\n", "reorganize them as functions of the mass number $A$, the number of\n", @@ -3682,21 +3298,13 @@ }, { "cell_type": "code", - "execution_count": 3, - "id": "fa6660fd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "' \\nThis is taken from the data file of the mass 2016 evaluation. \\nAll files are 3436 lines long with 124 character per line. \\n Headers are 39 lines long. \\n col 1 : Fortran character control: 1 = page feed 0 = line feed \\n format : a1,i3,i5,i5,i5,1x,a3,a4,1x,f13.5,f11.5,f11.3,f9.3,1x,a2,f11.3,f9.3,1x,i3,1x,f12.5,f11.5 \\n These formats are reflected in the pandas widths variable below, see the statement \\n widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1), \\n Pandas has also a variable header, with length 39 in this case. \\n'" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 29, + "id": "1ccfa08c", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "\"\"\" \n", "This is taken from the data file of the mass 2016 evaluation. \n", @@ -3712,8 +3320,10 @@ }, { "cell_type": "markdown", - "id": "7e17fe27", - "metadata": {}, + "id": "0f40022c", + "metadata": { + "editable": true + }, "source": [ "The data we are interested in are in columns 2, 3, 4 and 11, giving us\n", "the number of neutrons, protons, mass numbers and binding energies,\n", @@ -3723,37 +3333,13 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "b3384c3b", - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Passed header=39 but only 1 lines in file", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mStopIteration\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/python_parser.py\u001b[0m in \u001b[0;36m_infer_columns\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffered_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/python_parser.py\u001b[0m in \u001b[0;36m_buffered_line\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 583\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 584\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_next_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 585\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/python_parser.py\u001b[0m in \u001b[0;36m_next_line\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 680\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 681\u001b[0;31m \u001b[0morig_line\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_next_iter_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrow_num\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpos\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 682\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpos\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/python_parser.py\u001b[0m in \u001b[0;36m_next_iter_line\u001b[0;34m(self, row_num)\u001b[0m\n\u001b[1;32m 741\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 742\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 743\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mcsv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/python_parser.py\u001b[0m in \u001b[0;36m__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1187\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1188\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1189\u001b[0m \u001b[0;31m# Note: 'colspecs' is a sequence of half-open intervals.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mStopIteration\u001b[0m: ", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/var/folders/jy/g42mrgv128v34gnnhxwk9nrc0000gp/T/ipykernel_67768/430818913.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Read the experimental data with Pandas\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m Masses = pd.read_fwf(infile, usecols=(2,3,4,6,11),\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mnames\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'N'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Z'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'A'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Element'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Ebinding'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mwidths\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m13\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m11\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m11\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m9\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m11\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m9\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m12\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m11\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mheader\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m39\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36mread_fwf\u001b[0;34m(filepath_or_buffer, colspecs, widths, infer_nrows, **kwds)\u001b[0m\n\u001b[1;32m 760\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"infer_nrows\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minfer_nrows\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 761\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"engine\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"python-fwf\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 762\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 763\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 480\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 481\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 482\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 483\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 484\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 809\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 810\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 811\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 812\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 813\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, engine)\u001b[0m\n\u001b[1;32m 1038\u001b[0m )\n\u001b[1;32m 1039\u001b[0m \u001b[0;31m# error: Too many arguments for \"ParserBase\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1040\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mmapping\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[call-arg]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1041\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1042\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_failover_to_python\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/python_parser.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, **kwds)\u001b[0m\n\u001b[1;32m 1201\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolspecs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"colspecs\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1202\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfer_nrows\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"infer_nrows\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1203\u001b[0;31m \u001b[0mPythonParser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1204\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1205\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_make_reader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/python_parser.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, **kwds)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum_original_columns\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m ) = self._infer_columns()\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/lib/python3.8/site-packages/pandas/io/parsers/python_parser.py\u001b[0m in \u001b[0;36m_infer_columns\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 381\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 382\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mline_pos\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mhr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 383\u001b[0;31m raise ValueError(\n\u001b[0m\u001b[1;32m 384\u001b[0m \u001b[0;34mf\"Passed header={hr} but only {self.line_pos + 1} lines in \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 385\u001b[0m \u001b[0;34m\"file\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: Passed header=39 but only 1 lines in file" - ] - } - ], + "execution_count": 30, + "id": "7c6c5305", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "# Read the experimental data with Pandas\n", "Masses = pd.read_fwf(infile, usecols=(2,3,4,6,11),\n", @@ -3777,8 +3363,10 @@ }, { "cell_type": "markdown", - "id": "ffc2b7da", - "metadata": {}, + "id": "3dc3d148", + "metadata": { + "editable": true + }, "source": [ "We have now read in the data, grouped them according to the variables we are interested in. \n", "We see how easy it is to reorganize the data using **pandas**. If we\n", @@ -3794,32 +3382,13 @@ }, { "cell_type": "code", - "execution_count": 7, - "id": "b31fc42d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " N Z A Element Ebinding\n", - "A \n", - "4 0 1 3 4 Li 1.153760\n", - "5 2 3 2 5 He 5.512132\n", - "6 7 3 3 6 Li 5.332331\n", - "7 12 4 3 7 Li 5.606439\n", - "8 17 4 4 8 Be 7.062435\n", - "... ... ... ... ... ...\n", - "264 3297 156 108 264 Hs 7.298375\n", - "265 3303 157 108 265 Hs 7.296247\n", - "266 3310 158 108 266 Hs 7.298273\n", - "269 3331 159 110 269 Ds 7.250154\n", - "270 3337 160 110 270 Ds 7.253775\n", - "\n", - "[264 rows x 5 columns]\n" - ] - } - ], + "execution_count": 31, + "id": "3bbd0fb4", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "A = Masses['A']\n", "Z = Masses['Z']\n", @@ -3831,8 +3400,10 @@ }, { "cell_type": "markdown", - "id": "7c8cd97d", - "metadata": {}, + "id": "03e0eeae", + "metadata": { + "editable": true + }, "source": [ "The next step, and we will define this mathematically later, is to set up the so-called **design/feature matrix**. We will throughout label this matrix as $\\boldsymbol{X}$.\n", "It has dimensionality $n\\times p$, where $n$ is the number of data points and $p$ are the so-called features/predictors. In our case here they are given by the number of polynomials in $A$ we wish to include in the fit." @@ -3840,9 +3411,12 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "af6e957f", - "metadata": {}, + "execution_count": 32, + "id": "4500d846", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "# Now we set up the design matrix X\n", @@ -3856,17 +3430,22 @@ }, { "cell_type": "markdown", - "id": "11e43dd4", - "metadata": {}, + "id": "3f77d5cd", + "metadata": { + "editable": true + }, "source": [ "With **scikitlearn** we are now ready to use linear regression and fit our data." ] }, { "cell_type": "code", - "execution_count": 9, - "id": "0cdec754", - "metadata": {}, + "execution_count": 33, + "id": "e3082c9b", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "clf = skl.LinearRegression().fit(X, Energies)\n", @@ -3875,8 +3454,10 @@ }, { "cell_type": "markdown", - "id": "baecf2ff", - "metadata": {}, + "id": "3fd81874", + "metadata": { + "editable": true + }, "source": [ "Pretty simple! \n", "\n", @@ -3885,34 +3466,13 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "71b563f0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mean squared error: 0.02\n", - "Variance score: 0.95\n", - "Mean absolute error: 0.05\n", - "[ 0.00000000e+00 -2.96611194e-02 2.01719003e-01 1.08078025e+01\n", - " -4.03097597e+01] 5.294399745619671\n" - ] - }, - { - "data": { - "image/png": "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y/AvaP7yGc8/ICJbRGRLT0/PlJatdhy+MeYCNm/ezE033cRjjz02Lctbvnw5zz//PDt27ODzn/88DzzwAACFQoFPfvKTPPnkk+zevZvNmzeze7df1Ljyyit5/PHHufnmm09bVj6f56Mf/SgPP/wwu3bt4rnnnpvUkTjnU/KjdESkBvgB8ClVHT71NVV9BHgEYOPGjXqWX7+ggh2Wacyc8LvfenVGlvvox6897+uJRIIXX3yRZ599lrvvvpsvfvGLPPfcc3zhC19g/vz5bN++nXvuuYe1a9fy0EMPkUql+OEPf8jKlSvp6enh937v9zh06BAAX//617nxxhu54YYbxpf/7ne/m66uLgBeeeUVLrnkElasWAHAvffey9///d+zevVqrrjiirO27+mnn2bdunVcddVVADQ3N1/0v8mYko7wRSSIH/bfUdXHZ2IdVsM3xpzPD3/4Q26//XYuvfRSmpqa2LZtGwCvv/46Dz30EG+88Qbf/va32bdvH6+88gr3338/f/mXfwnAgw8+yKc//WleffVVfvCDH3D//fe/Y/mPPvood9xxBwBHjhxh8eLF46+1t7dz5MiR87Zv3759iAibNm1iw4YN/Pmf//l0db10I3zxayyPAntU9S9maj1WwzdmbrjQSHymbN68mU996lOAP+LevHkzd911F9deey1tbW0ArFy5kttuuw2AtWvX8uyzzwLw05/+dLwkAzA8PMzIyAi1tbUAPPvsszz66KO88MILgH+8/JkuVG7O5/O88MILvPrqq8RiMW699VauueYabr311ovrOKUt6dwI/DbwhohsLz73x6r6k+lcidoI3xhzDn19ffz85z9n586diAiFQgER4c477yQcDo+/z3Gc8Z8dxyGfzwPgeR4vvfQS0Wj0HcvesWMH999/P08++eR4Gaa9vZ3Dhw+Pv6erq4uFCxeet43t7e3ccssttLS0AHDnnXeybdu2aQn8Uh6l84KqiqquU9X1xdu0hj3Y5GnGmHP7/ve/z+/8zu/Q2dlJR0cHhw8fZvny5eMj8gu57bbb+OY3vzn+8/bt2wE4dOgQ99xzD9/+9re59NJLx1+/9tpreeuttzh48CDZbJbHHnuMu++++7zr2LRpEzt27CCZTJLP53n++edZvXr15Dt7FhV4pq3ttDXGnN3mzZv54Ac/eNpzH/rQh/jud787od//xje+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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": 34, + "id": "bfed04ab", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "# The mean squared error \n", "print(\"Mean squared error: %.2f\" % mean_squared_error(Energies, fity))\n", @@ -3938,8 +3498,10 @@ }, { "cell_type": "markdown", - "id": "aeb88b7d", - "metadata": {}, + "id": "90ec8487", + "metadata": { + "editable": true + }, "source": [ "### Seeing the wood for the trees\n", "\n", @@ -3949,8 +3511,11 @@ { "cell_type": "code", "execution_count": 35, - "id": "59fab59f", - "metadata": {}, + "id": "8c1235b1", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "\n", @@ -3987,8 +3552,10 @@ }, { "cell_type": "markdown", - "id": "835f638a", - "metadata": {}, + "id": "5b5c603c", + "metadata": { + "editable": true + }, "source": [ "### And what about using neural networks?\n", "\n", @@ -3999,8 +3566,11 @@ { "cell_type": "code", "execution_count": 36, - "id": "782e85c1", - "metadata": {}, + "id": "3c726509", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "from sklearn.neural_network import MLPRegressor\n", @@ -4036,8 +3606,10 @@ }, { "cell_type": "markdown", - "id": "0af4ffdc", - "metadata": {}, + "id": "b6a9dc14", + "metadata": { + "editable": true + }, "source": [ "## More on flexibility with pandas and xarray\n", "\n", @@ -4049,8 +3621,10 @@ }, { "cell_type": "markdown", - "id": "4b6bf76c", - "metadata": {}, + "id": "73e2f917", + "metadata": { + "editable": true + }, "source": [ "$$\n", "S_n= -Q_n= BE(N,Z)-BE(N-1,Z),\n", @@ -4059,16 +3633,20 @@ }, { "cell_type": "markdown", - "id": "fd168a44", - "metadata": {}, + "id": "bb966d95", + "metadata": { + "editable": true + }, "source": [ "and the proton separation energy reads" ] }, { "cell_type": "markdown", - "id": "8ab925dd", - "metadata": {}, + "id": "5210a3fc", + "metadata": { + "editable": true + }, "source": [ "$$\n", "S_p= -Q_p= BE(N,Z)-BE(N,Z-1).\n", @@ -4077,16 +3655,20 @@ }, { "cell_type": "markdown", - "id": "89b2c103", - "metadata": {}, + "id": "4676c278", + "metadata": { + "editable": true + }, "source": [ "The two-neutron separation energy is defined as" ] }, { "cell_type": "markdown", - "id": "8a5e23f2", - "metadata": {}, + "id": "e9833d20", + "metadata": { + "editable": true + }, "source": [ "$$\n", "S_{2n}= -Q_{2n}= BE(N,Z)-BE(N-2,Z),\n", @@ -4095,16 +3677,20 @@ }, { "cell_type": "markdown", - "id": "6d9cd1b8", - "metadata": {}, + "id": "f54e1898", + "metadata": { + "editable": true + }, "source": [ "and the two-proton separation energy is given by" ] }, { "cell_type": "markdown", - "id": "d4ec68b3", - "metadata": {}, + "id": "64eaa764", + "metadata": { + "editable": true + }, "source": [ "$$\n", "S_{2p}= -Q_{2p}= BE(N,Z)-BE(N,Z-2).\n", @@ -4113,16 +3699,20 @@ }, { "cell_type": "markdown", - "id": "d84bae91", - "metadata": {}, + "id": "fa91f532", + "metadata": { + "editable": true + }, "source": [ "Using say the neutron separation energies (alternatively the proton separation energies)" ] }, { "cell_type": "markdown", - "id": "33a048bd", - "metadata": {}, + "id": "00308a30", + "metadata": { + "editable": true + }, "source": [ "$$\n", "S_n= -Q_n= BE(N,Z)-BE(N-1,Z),\n", @@ -4131,16 +3721,20 @@ }, { "cell_type": "markdown", - "id": "72b066fd", - "metadata": {}, + "id": "5bcb4a1c", + "metadata": { + "editable": true + }, "source": [ "we can define the so-called energy gap for neutrons (or protons) as" ] }, { "cell_type": "markdown", - "id": "ecddae20", - "metadata": {}, + "id": "1e811a18", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\Delta S_n= BE(N,Z)-BE(N-1,Z)-\\left(BE(N+1,Z)-BE(N,Z)\\right),\n", @@ -4149,16 +3743,20 @@ }, { "cell_type": "markdown", - "id": "8a29f875", - "metadata": {}, + "id": "774495b9", + "metadata": { + "editable": true + }, "source": [ "or" ] }, { "cell_type": "markdown", - "id": "9dd75592", - "metadata": {}, + "id": "621cd3fe", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\Delta S_n= 2BE(N,Z)-BE(N-1,Z)-BE(N+1,Z).\n", @@ -4167,8 +3765,10 @@ }, { "cell_type": "markdown", - "id": "6258435d", - "metadata": {}, + "id": "dcd2dcbb", + "metadata": { + "editable": true + }, "source": [ "This quantity can in turn be used to determine which nuclei could be interpreted as magic or not. \n", "For protons we would have" @@ -4176,8 +3776,10 @@ }, { "cell_type": "markdown", - "id": "9157fbdd", - "metadata": {}, + "id": "bcb20a82", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\Delta S_p= 2BE(N,Z)-BE(N,Z-1)-BE(N,Z+1).\n", @@ -4186,8 +3788,10 @@ }, { "cell_type": "markdown", - "id": "4f76dc35", - "metadata": {}, + "id": "955529dc", + "metadata": { + "editable": true + }, "source": [ "To calculate say the neutron separation we need to multiply our masses with the nucleon number $A$ (why?).\n", "Thereafter we pick the oxygen isotopes and simply compute the separation energies with two lines of code (note that most of the code here is a repeat of what you have seen before)." @@ -4195,43 +3799,13 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "d0e82695", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " A Z N Element Energies NeutronSeparationEnergies\n", - "41 12 8 4 O 58.682424 NaN\n", - "47 13 8 5 O 75.552919 16.870495\n", - "52 14 8 6 O 98.731892 23.178973\n", - "58 15 8 7 O 111.955380 13.223488\n", - "65 16 8 8 O 127.619296 15.663916\n", - "71 17 8 9 O 131.762376 4.143080\n", - "78 18 8 10 O 139.807746 8.045370\n", - "85 19 8 11 O 143.763405 3.955659\n", - "93 20 8 12 O 151.371400 7.607995\n", - "101 21 8 13 O 155.176854 3.805454\n", - "109 22 8 14 O 162.027162 6.850308\n", - "118 23 8 15 O 164.760155 2.732993\n", - "126 24 8 16 O 168.952440 4.192285\n", - "135 25 8 17 O 168.195125 -0.757315\n", - "143 26 8 18 O 168.934428 0.739303\n" - ] - }, - { - "data": { - "image/png": "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0V2SIiIikU0hLEz+vhcs9CepNmvmIS7OUAgTERGJUAphYXLyLNgll4R+o1ZiIqSkeNm0ycavv1pC/noiIiJybhTCwiDcs2B50tJyAS1JioiIRKKwXZ137drFyJEjqVmzJr///jvFixenR48eHD16lJdffply5crx22+/0bt3b0qVKhWussIibxbsrrtywzILluf6671YrQZz5sTw8MO5YXtdERERObOwhbCjR4+SlpZGixYtAEhLSyM1NZUPP/yQRo0akZaWxqJFixg+fDgvvfRSuMoKOZ/PnFkwgFKlDK6+2svKlTYOHLBw4YU6r0JERCRShG058vLLLz8RwAB8Ph9Op5MlS5ZQt25dAOrVq8eSJUvCVVJY5M2C3XFHePaC/VNamgfDsDBvnpYkRUREIonFMMJ/nOeCBQtYvXo1Tz31FLVr1+abb76haNGieDweatWqxcaNG7HbTx0aPB4vdnvkt+Tx+eCyy2DLFti8GapUCX8NO3dCxYpwww0wb174X19ERETyF/bpkVWrVrF69WoGDBgAQFJSEpmZmRQtWpSMjAyKFSt22gAGcORIVjhKPW8zZ9r5+Wcnd96ZS7Fi2aSnB+d5k5OLkJ5+/Kw+Nj4eLr88nkWLrGzfnkHRosGpIRqdy7jJXzRugdG4BUbjFhiNW2DCNW7JyUXyfTysd0cuXryY5cuXM3DgQNLT01m/fj0pKSmsX78egHXr1pGSkhLOkkLG54MRI8zZC/ZPaWkecnMtLFigJUkREZFIEbYQtmHDBh577DF++OEH7r33Xv773//y66+/0rt3b7755hvGjRvHggUL6NevX7hKCqmT94JVqmTuhnidni8iIhJ5wnZVrl279okZr396/vnnw1VGWJh5R2R+qlf3UamSj4UL7bhc4HSaXZGIiIjosNYQ+OILO5s327j9dvNnwQAsFv/BrVlZFpYujfwbGkRERAoDhbAgO3kv2GOPmT8LluevJckYkysRERERUAgLukibBctTr56PCy/08eWXNjwes6sRERERhbAgitRZMACrFVq39vDHH1ZWr9aSpIiIiNkUwoIoUmfB8uguSRERkcihEBYkJ98RGWmzYHkaN/ZSrJjB3Ll2wt8nQURERE6mEBYks2fb2bTJxm23ReYsGEBMDLRs6WHPHis//qhvvYiIiJl0JQ6CvL1gVqtB796ROQuWR0uSIiIi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/Wvm0KFDzJ49m27dujFjxgyTKots+Y3bF198QZkyZdi4cSNHjx6lY8eOJlUXufIbt1KlSvHHH38A8Mcff1CrVi0zSotol19++d/+7PP5cDqdLFmyhO7duwNQr149+vfvb0Z5EetU43byLIRhGMTHx4e7tIh2qnHTteH0TjVuZl4btCcsyvh8Pl555RX69OljdilRZ+/evVgsFjp37kzDhg3p1auX2SVFhV69evHZZ58xfPhwZsyYQatWrcwuKaItWLCAJk2aULlyZQ4fPkxCQgIAiYmJ/Pnnn3g8HpMrjEwnj1ueY8eOsXz5crp06WJiZZEtb9wuueQSXRvOwcnvNzOvDZoJizIbN27EbrfzwQcf8Oeff5KTk8PEiRO5/vrrqVixotnlRbTExMQT/xKqX78+a9euxev1YrPZTK4ssnXv3p2nn36aunXrsmXLFu677z5WrFiBxWIxu7SIs2rVKlavXs2AAQMASEpKIjMzk6JFi5KRkUGxYsWw2/Vr95/+OW4Ax48f55lnnmHo0KEUL17cvOIi2MnjpmvD2fvn+83Ma4N+G0SZyy67jMsuuwyAPXv28PHHH9OtWzeTq4oOjRo1Yvfu3VSqVIm9e/dSvnx5BbCzsH///hObopOTk3G73SZXFJkWL17M2rVrGThwIAcPHmTfvn2kpKSwfv16Spcuzbp160hJSTG7zIiT37hVqFCBoUOH8sQTT3DhhRfy5ZdfcsMNN5hdakT557h5PB6effZZQNeG08nv/WbmtUENvCPcmjVr+Oyzz1i2bBl33XUX999/Pw6Hg507d/L+++/z3nvv0a1bNzp37qx9EyfJb9z+/PNPRo8eTfny5dm+fTv/+c9//rVHoLDLb9yWLVvG3LlzqV69Otu2beP666+nZcuWZpcaUTZs2EDHjh2pXbs2AFlZWdxzzz00a9aMESNGUKZMGXbv3k2fPn10d+RJTjVu06dPx+PxnJgBS0hI4PXXXzex0shyqnFr166drg2ncapxa9y4sWnXBoUwERERERNoY76IiIiICRTCREREREygECYiIiJiAoUwERERERMohImIiIiYQCFMRERExAQKYSIiIiImUAgTEQG+/fZbqlevrsbHIhI2CmEiUuj5fD5eeOEFrr76ajZv3mx2OSJSSCiEiUih98EHH1C+fHnuvvtuNm3aZHY5IlJIqIG3iBRqx44dY8KECbz99tt4PB62bNlidkkiUkgohIlIoTZ69GjatGlD2bJlMQwDt9vN/v37KV26tNmliUgBpxAmIoXW9u3b+eijjyhevDiff/45ALm5uWzevFkhTERCzmIYhmF2ESIiZujSpQtpaWncdtttJx4bOHAgF198Mf/9739NrExECgNtzBeRQmnhwoUcPHiQtm3b/u3xqlWr6g5JEQkLzYSJiIiImEAzYSIiIiImUAgTERERMYFCmIiIiIgJFMJERERETKAQJiIiImIChTAREREREyiEiYiIiJhAIUxERETEBP8H1oOyEKu9J5UAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 37, + "id": "4526e136", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "# Common imports\n", "import numpy as np\n", @@ -4309,35 +3883,9 @@ "save_fig('Nucleus')\n", "plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "89179598", - "metadata": {}, - "outputs": [], - "source": [] } ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.12" - } - }, + "metadata": {}, "nbformat": 4, "nbformat_minor": 5 } diff --git a/doc/pub/Introduction/ipynb/ipynb-Introduction-src.tar.gz b/doc/pub/Introduction/ipynb/ipynb-Introduction-src.tar.gz index 0d95fe7..fe3a3d8 100644 Binary files a/doc/pub/Introduction/ipynb/ipynb-Introduction-src.tar.gz and b/doc/pub/Introduction/ipynb/ipynb-Introduction-src.tar.gz differ diff --git a/doc/pub/Introduction/pdf/introduction.pdf b/doc/pub/Introduction/pdf/introduction.pdf index 3c88916..9a6654e 100644 Binary files a/doc/pub/Introduction/pdf/introduction.pdf and b/doc/pub/Introduction/pdf/introduction.pdf differ