diff --git a/doc/HandWrittenNotes/NotesSeptember25.pdf b/doc/HandWrittenNotes/NotesSeptember25.pdf new file mode 100644 index 000000000..f9178093c Binary files /dev/null and b/doc/HandWrittenNotes/NotesSeptember25.pdf differ diff --git a/doc/pub/week39/ipynb/week39.ipynb b/doc/pub/week39/ipynb/week39.ipynb index f6d9da20a..bd831c2db 100644 --- a/doc/pub/week39/ipynb/week39.ipynb +++ b/doc/pub/week39/ipynb/week39.ipynb @@ -1418,23 +1418,23 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[0.32017409 4.33901633]\n", - "[[4.35923237]\n", - " [2.73841882]]\n", - "[[4.35923237]\n", - " [2.73841882]]\n" + "[0.3355421 4.40939 ]\n", + "[[3.93523639]\n", + " [3.01808024]]\n", + "[[3.93523639]\n", + " [3.01808024]]\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1457,7 +1457,7 @@ "import sys\n", "\n", "# the number of datapoints\n", - "n = 100\n", + "n = 1000\n", "x = 2*np.random.rand(n,1)\n", "y = 4+3*x+np.random.randn(n,1)\n", "\n", @@ -1470,11 +1470,14 @@ "\n", "beta_linreg = np.linalg.inv(X.T @ X) @ X.T @ y\n", "print(beta_linreg)\n", - "beta = np.random.randn(2,1)\n", "\n", - "eta = 1.0/np.max(EigValues)\n", + "beta = np.random.randn(2,1)\n", + "#learning rate\n", + "eta = 1/np.max(EigValues)\n", "Niterations = 1000\n", "\n", + "\n", + "# missing test when to stop || beta_n - beta_{n-1}||_2 <= epsilon \n", "for iter in range(Niterations):\n", " gradient = (2.0/n)*X.T @ (X @ beta-y)\n", " beta -= eta*gradient\n", @@ -1503,9 +1506,19 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[4.27340867]\n", + " [2.74302777]]\n", + "[4.28318836] [2.7861141]\n" + ] + } + ], "source": [ "# Importing various packages\n", "from random import random, seed\n",