From 401ed98bed087419295beb390d035785dde5cccd Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Mon, 30 Sep 2024 07:23:46 +0200 Subject: [PATCH] Update week40.ipynb --- doc/pub/week40/ipynb/week40.ipynb | 89 +++++++++++++++++++++++-------- 1 file changed, 66 insertions(+), 23 deletions(-) diff --git a/doc/pub/week40/ipynb/week40.ipynb b/doc/pub/week40/ipynb/week40.ipynb index 18cdefb1f..44c0eb703 100644 --- a/doc/pub/week40/ipynb/week40.ipynb +++ b/doc/pub/week40/ipynb/week40.ipynb @@ -115,7 +115,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 42, "id": "2d9d73e5", "metadata": {}, "outputs": [ @@ -124,17 +124,17 @@ "output_type": "stream", "text": [ "Parameters for OLS using gradient descent\n", - "[[4.13005161]\n", - " [2.58980041]\n", - " [5.20771563]]\n", + "[[4.04553909]\n", + " [2.85718534]\n", + " [5.07124072]]\n", "Parameters for Ridge using gradient descent\n", - "[[3.68119435]\n", - " [3.55614454]\n", - " [4.77191518]]\n", + "[[3.8048267 ]\n", + " [3.33344121]\n", + " [4.85905287]]\n", "Parameters for Lasso using gradient descent\n", - "[[4.21810045]\n", - " [2.48233467]\n", - " [5.23258573]]\n" + "[[3.87867385]\n", + " [3.192587 ]\n", + " [4.93045409]]\n" ] } ], @@ -196,7 +196,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 43, "id": "1550b223", "metadata": {}, "outputs": [ @@ -208,11 +208,11 @@ "[[4.]\n", " [3.]\n", " [5.]]\n", - "0 [-28.48220266] [-39.27428006]\n", - "1 [-1.49622537e-13] [-1.79206312e-13]\n", - "2 [-9.9475983e-16] [-1.26086616e-15]\n", - "3 [-1.77635684e-17] [-6.29913873e-18]\n", - "4 [-9.9475983e-16] [-1.26086616e-15]\n", + "0 [-26.91927647] [-35.76071889]\n", + "1 [-6.07158768e-14] [-1.55935271e-13]\n", + "2 [-6.03961325e-16] [-9.79527859e-16]\n", + "3 [-1.54543045e-15] [-2.38042396e-15]\n", + "4 [1.27897692e-15] [1.94409177e-15]\n", "beta from own Newton code\n", "[[4.]\n", " [3.]\n", @@ -270,10 +270,18 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 44, "id": "94a3c22b", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predictions: [1, 1, 1, 1]\n" + ] + } + ], "source": [ "import numpy as np\n", "class LogisticRegression:\n", @@ -510,7 +518,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 45, "id": "e5f4f9a8", "metadata": {}, "outputs": [], @@ -600,10 +608,18 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 46, "id": "f96c423d", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gamma_j after 500 epochs: 9.97108e-05\n" + ] + } + ], "source": [ "import numpy as np \n", "\n", @@ -643,10 +659,37 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 47, "id": "e221b4f3", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Own inversion\n", + "[[3.8913351 ]\n", + " [2.83275949]]\n", + "Eigenvalues of Hessian Matrix:[0.33918672 3.94965845]\n", + "theta from own gd\n", + "[[3.8913351 ]\n", + " [2.83275949]]\n", + "theta from own sdg\n", + "[[3.9644494 ]\n", + " [2.80907715]]\n" + ] + }, + { + "data": { + "image/png": "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7jdkz913342vv/4ar7/+Oq5evYq4uDiMGzcOzz33nEeOi8gfSUII4etCEBEREfkK+wwRERGRqjEYIiIiIlVjMERERESqxmCIiIiIVI3BEBEREakagyEiIiJSNVXkGTIYDDh16hQaNGhgNZ09ERERyY8QApcvX0ZsbCwCAjxXf6OKYOjUqVNISEjwdTGIiIjIBfn5+YiPj/fY/lURDDVo0ACA8WSGhYX5uDRERETkiJKSEiQkJJif456iimDI1DQWFhbGYIiIiEhhPN3FhR2oiYiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNV8Hgxt2LABQ4cORWxsLCRJwsqVK21u++ijj0KSJLzxxhteKx8RERH5N58HQ6WlpWjfvj3mz59f43YrV67E1q1bERsb66WSERERkRoE+boAgwYNwqBBg2rcpqCgAFOmTMGqVaswePBgL5WMiIiI1MDnNUP2GAwGjB07Fk8//TTS0tJ8XRwiIiLyMz6vGbJn3rx5CAoKwhNPPOHwe8rLy1FeXm5+XVJS4omiERERkR+Qdc3Qjh078Oabb2LJkiWQJMnh982dOxfh4eHmn4SEBA+WkoiIiJRM1sHQxo0bUVRUhGbNmiEoKAhBQUE4fvw4nnzySSQmJtp838yZM1FcXGz+yc/P916hiYiISFFk3Uw2duxY9OvXz2LZwIEDMXbsWEycONHm+zQaDTQajaeLR0RERH7A58HQlStXcOTIEfPrvLw87N69GxEREWjWrBkaN25ssX1wcDCio6PRpk0bbxeViIiI/JDPg6Ht27cjIyPD/HratGkAgPHjx2PJkiU+KhURERGphc+DoT59+kAI4fD2x44d81xhiIiISHVk3YGaiIiIyNMYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1nwdDGzZswNChQxEbGwtJkrBy5UrzuoqKCkyfPh2333476tWrh9jYWIwbNw6nTp3yXYGJiIjIr/g8GCotLUX79u0xf/78auuuXr2KnTt34q9//St27tyJ7OxsHDp0CPfee68PSkpERET+SBJCCF8XwkSSJKxYsQLDhw+3uc22bdtw55134vjx42jWrJlD+y0pKUF4eDiKi4sRFhbmptISERGRJ3nr+R3ksT17SHFxMSRJQsOGDW1uU15ejvLycvPrkpISL5SMiIiIlMjnzWTOKCsrw4wZMzBmzJgaI8S5c+ciPDzc/JOQkODFUhIREZGSKCYYqqiowKhRo2AwGPDuu+/WuO3MmTNRXFxs/snPz/dSKYmIiEhpFNFMVlFRgZEjRyIvLw/r1q2z226o0Wig0Wi8VDoiIiJSMtkHQ6ZA6PDhw8jJyUHjxo19XSQiIiLyIz4Phq5cuYIjR46YX+fl5WH37t2IiIhAbGwsRowYgZ07d+Lbb7+FXq9HYWEhACAiIgIhISG+KjYRERH5CZ8Prc/NzUVGRka15ePHj8esWbOQlJRk9X05OTno06ePQ5/BofVERETKo5qh9X369EFN8ZiM0iARERGRH1LMaDIiIiIiT2AwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkakG+LgAREZFX6fXAxo3A6dNATAyQng4EBvq6VORDDIaIiEg9srOBP/8ZOHny5rL4eODNN4HMTN+Vi3yKzWRERKQO2dnAiBGWgRAAFBQYl2dn+6Zc5HMMhoiIyP/p9cYaISGqrzMty8oybkeqw2CI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R9G1a1er+1TC9b58+bLYtWuX2LVrlwAgXnvtNbFr1y5x/PhxIYT/3t/OHre/3N/OHre/3N/OHreJ0u/vxx9/XISHh4vc3FyL7+3Vq1fN2/jqHldcMCSEEO+8845o3ry5CAkJEZ06dbIYljd+/HjRu3dvi+1zc3NFx44dRUhIiEhMTBTvvfdetX1+8cUXok2bNiI4OFgkJydb3Fxy4cxx9+7dWwCo9jN+/HjzNllZWaJZs2YiJCRENG3aVAwYMEBs2rTJi0fkGGeOe968eaJly5YiNDRUNGrUSPTq1Ut899131fbpb9dbCCEuXbok6tSpIxYuXGh1f0q43qah07a+t/56fzt73P5yfzt73P5yf7vyPfeH+9vaMQMQixcvNm/jq3tculFAIiIiIlVSVJ8hIiIiIndjMERERESqxmCIiIiIVI3BEBEREakagyEiIiJSNQZDREREpGoMhoiIiEjVGAwRERGRqjEYIiIiIlVjMERERESqxmCIiBRp2bJlCA0NRUFBgXnZww8/jHbt2qG4uNiHJSMipeHcZESkSEIIdOjQAenp6Zg/fz5mz56N999/H1u2bEFcXJyvi0dEChLk6wIQEblCkiTMmTMHI0aMQGxsLN58801s3LiRgRAROY01Q0SkaJ06dcLevXuxevVq9O7d29fFISIFYp8hIlKsVatW4cCBA9Dr9YiKivJ1cYhIoVgzRESKtHPnTvTp0wfvvPMOPv30U9StWxdffPGFr4tFRArEPkNEpDjHjh3D4MGDMWPGDIwdOxapqam44447sGPHDnTu3NnXxSMihWHNEBEpyoULF9CzZ0/cdddd+Pe//21ePmzYMJSXl0On0/mwdESkRAyGiIiISNXYgZqIiIhUjcEQERERqRqDISIiIlI1BkNERESkagyGiIiISNUYDBEREZGqMRgiIiIiVWMwRERERKrGYIiIiIhUjcEQERERqRqDISIiIlI1BkNERESkav8PtFJUDcDRlWgAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%matplotlib inline\n", "\n",