From c4af94b5abc0af4d332181bf13b3843f159472c6 Mon Sep 17 00:00:00 2001 From: Aishik13012002 <51096112+Aishik13012002@users.noreply.github.com> Date: Thu, 2 Apr 2020 19:05:52 +0530 Subject: [PATCH 01/10] Update README.md --- Phase 3 - 2020 (Summer)/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Phase 3 - 2020 (Summer)/README.md b/Phase 3 - 2020 (Summer)/README.md index 0036ceda5..6888542fc 100644 --- a/Phase 3 - 2020 (Summer)/README.md +++ b/Phase 3 - 2020 (Summer)/README.md @@ -1,3 +1,9 @@ +Aishik Rakshit +190122002 +CST +https://github.com/Aishik13012002 + + # IITG.ai - Resources include course/blog/tutorial/research paper links as well as details regarding graded assignments as well as prospective project ideas. From dc718d131154950cc17fa246f88a05d282864cfa Mon Sep 17 00:00:00 2001 From: Aishik13012002 <51096112+Aishik13012002@users.noreply.github.com> Date: Fri, 3 Apr 2020 23:09:35 +0530 Subject: [PATCH 02/10] Add files via upload --- .../AISHIK RAKSHIT_190122002/Graphs_w01.png | Bin 0 -> 350507 bytes .../AISHIK RAKSHIT_190122002/Result_w01.txt | 5 + .../AISHIK RAKSHIT_190122002/data.csv | 1000 +++++++++++++++++ .../iitg_ml....w01.py | 50 + 4 files changed, 1055 insertions(+) create mode 100644 Phase 3 - 2020 (Summer)/Week 1 (Mar 28 - Apr 4)/assignment/AISHIK RAKSHIT_190122002/Graphs_w01.png create mode 100644 Phase 3 - 2020 (Summer)/Week 1 (Mar 28 - Apr 4)/assignment/AISHIK RAKSHIT_190122002/Result_w01.txt create mode 100644 Phase 3 - 2020 (Summer)/Week 1 (Mar 28 - Apr 4)/assignment/AISHIK RAKSHIT_190122002/data.csv create mode 100644 Phase 3 - 2020 (Summer)/Week 1 (Mar 28 - Apr 4)/assignment/AISHIK RAKSHIT_190122002/iitg_ml....w01.py diff --git a/Phase 3 - 2020 (Summer)/Week 1 (Mar 28 - Apr 4)/assignment/AISHIK RAKSHIT_190122002/Graphs_w01.png b/Phase 3 - 2020 (Summer)/Week 1 (Mar 28 - Apr 4)/assignment/AISHIK RAKSHIT_190122002/Graphs_w01.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc56e0785f7002abf20a5e23968f3f63fe1829b GIT binary patch literal 350507 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 z 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 2\u001b[1;33m \u001b[0mall_theta\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0moneVsAll\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnum_labels\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlambda_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m\u001b[0m in \u001b[0;36moneVsAll\u001b[1;34m(X, y, num_labels, lambda_)\u001b[0m\n\u001b[0;32m 88\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'TNC'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 89\u001b[0m options=options)\n\u001b[1;32m---> 90\u001b[1;33m \u001b[0mall_theta\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mres\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtranspose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 91\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 92\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mIndexError\u001b[0m: index 10 is out of bounds for axis 0 with size 10" + ] + } + ], + "source": [ + "lambda_ = 0.1\n", + "all_theta = oneVsAll(X, y, num_labels, lambda_)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "def predictOneVsAll(all_theta, X):\n", + " \"\"\"\n", + " Return a vector of predictions for each example in the matrix X. \n", + " Note that X contains the examples in rows. all_theta is a matrix where\n", + " the i-th row is a trained logistic regression theta vector for the \n", + " i-th class. You should set p to a vector of values from 0..K-1 \n", + " (e.g., p = [0, 2, 0, 1] predicts classes 0, 2, 0, 1 for 4 examples) .\n", + " \n", + " Parameters\n", + " ----------\n", + " all_theta : array_like\n", + " The trained parameters for logistic regression for each class.\n", + " This is a matrix of shape (K x n+1) where K is number of classes\n", + " and n is number of features without the bias.\n", + " \n", + " X : array_like\n", + " Data points to predict their labels. This is a matrix of shape \n", + " (m x n) where m is number of data points to predict, and n is number \n", + " of features without the bias term. Note we add the bias term for X in \n", + " this function. \n", + " \n", + " Returns\n", + " -------\n", + " p : array_like\n", + " The predictions for each data point in X. This is a vector of shape (m, ).\n", + " \n", + " Instructions\n", + " ------------\n", + " Complete the following code to make predictions using your learned logistic\n", + " regression parameters (one-vs-all). You should set p to a vector of predictions\n", + " (from 0 to num_labels-1).\n", + " \n", + " Hint\n", + " ----\n", + " This code can be done all vectorized using the numpy argmax function.\n", + " In particular, the argmax function returns the index of the max element,\n", + " for more information see '?np.argmax' or search online. If your examples\n", + " are in rows, then, you can use np.argmax(A, axis=1) to obtain the index \n", + " of the max for each row.\n", + " \"\"\"\n", + " m = X.shape[0];\n", + " num_labels = all_theta.shape[0]\n", + "\n", + " # You need to return the following variables correctly \n", + " p = np.zeros(m)\n", + "\n", + " # Add ones to the X data matrix\n", + " X = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " h=sigmoid(X@all_theta.transpose())\n", + " for i in range(0,m):\n", + " k=np.max(h[i])\n", + " for j in range(1,num_labels):\n", + " if(h[i][j]==k):\n", + " p[i]=j\n", + " \n", + " # ============================================================\n", + " return p\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training Set Accuracy: 83.42%\n" + ] + } + ], + "source": [ + "pred = predictOneVsAll(all_theta, X)\n", + "print('Training Set Accuracy: {:.2f}%'.format(np.mean(pred == y) * 100))" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAItCAYAAAAwm9DjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydZbwVZdv2D5/nJuxuxQbsRMUWu7s7QLEDu7swwFawu1AULGxsxUYUsQsVW2/ifp73/fC+x7mOYc+wa82atcfj/2Wfv3OvmGuua641c+ZU/+f//B8YY4wxxpSR/yr6AIwxxhhj8sI3OsYYY4wpLb7RMcYYY0xp8Y2OMcYYY0qLb3SMMcYYU1r+NaV/Tpw4sZQpWe3bt58KACZMmFDK8XXo0OEfMb5JkyaVcnzt2rX7R4yv7Ouz7Pvn+PHjCxnfVFNNBQD4178qP1+TJk2q2ud37NjxH3H9lX19KrboGGOMMaa0TNGiY1oHnzwml8n//u//1vJwWkXa8WeNj7WZtEZTW6/X9F//1fCZoC3NX2OkzZ+pb7KuvzKtS/Lf//3fIY8bNw4A8PDDD4dul112CVktPdWmsT0969rxNTVl8v6ttEXHGGOMMaXFFp0c4B3phAkTQvfHH3+EzKeTGWaYIXRpFoMi0LtpfTLSO+qJEycCAP7zn/+E7s8//wy5Y8eOAJLj0yeatvjE+dtvvzXQTT/99CHrEyfHWu/j/J//+Z+Qda1OO+20AJLHn/aUVe80ZqXKeorUuSS61uvl6fzSSy8NWfePgw46CADQrl270NXLMTcHnYeffvop5DPPPBNAcs3uscceuR4L14eex7///rvB/7n3Acnj1/lJs3jrtdYW56ol6DWnc8m9tn379qHT35KW7EX18etqjDHGGJMDvtExxhhjTGkpxHVF05Oa9tKC6Zpj+q8ncx9dAjSxAkDfvn1DnnPOOQEkTc/bb799yEW4PGha1TTNN998M+SRI0c20H/55Zehe+aZZ0Lu0qULAGDAgAENdEDFJFmvrh2uxfvvvz90RxxxRIPX9erVK+S555475NVXXx0A0LVr17wOsVVwrj/88MPQnXPOOSHfcsstANLdcW0JXV/qxqFe1zoDXAHg448/BgD89ddfoVt77bVDnnrqqUMu4rzwO9dZZ53QHXjggSHTzXP66aeHrl5c41mkuRnfeeed0B188MEhr7vuugCAY445ZorvzwNdU5dccknIw4YNAwCst956oevcuXPICyywQMizzDILgKTre6655go5LZg6zbXVFq9JoDJXev0dddRRIfN3Y7755gvdPffcE/JKK60UclN/Q+p79RtjjDHGtALf6BhjjDGmtEw1JfNXNSsnqmmRGQz33ntv6F588cWQt9pqKwAVFwCQNBfTDJtlrmzMnJVHZWQ9FkaNqzlZzZhDhgwBkDSNDx48uMFrW+raaWpl5LSo95NPPjl0N998c8h6LHRpZJnD6bqbddZZQ7fRRhuFfMoppwAAZpttttTPb4w8KiOrm+bll18GAOy0006h69atW8gLLrgggOSao7sHqGS9nHHGGaFrzvjyrozMeXvjjTdCt/HGG4d88cUXA8gvkyWPysg6f3Sp6vlfZJFFQv7ll18AAO+++27oPvvss5A///xzAEnX0B133BGyruu0ea1VZWTNSqHrBKi4VHV+1U3SWpdHtSojZ+0fjzzyCADgsMMOC90WW2wR8nnnnQegkh0IJDMIW0taZeS0TJ9vvvkm5JtuugkA8MQTT4ROz/mvv/4aMn8f9Ph32GGHkJdcckkAybVFHQB06tSpwTE1Z05rVRlZ5zft/P38888hr7rqqiHz+tRMrB133DHkK664ImReAzp+V0Y2xhhjzD+Kmll09O6ONVd233330A0fPjxk3slpAGuPHj1CXnbZZQEkA7xWXHHFkLWWQdr48rbo8Oniu+++C938888fMgOr1OJz5ZVXhrzbbrsBSNbuaA4tseiMHz8eAHDiiSeG7t///nfIWnmUwdR6bjVYmTUPHn300dDp+O677z4AwJZbbhm65tSRqJZFJ238QMWSsdlmm4Vur732avB+nZ8+ffqEzCd+XZNLLLFEyGpdSHsSzduiw3H/8MMPodPAaY71oosuCl1abZmWkodFR+eS1rWePXuGbqaZZgqZ+4oGO+r7aUned999Q9ehQ4cmH0utLDq6p+rTMYN1tXIwrQBA65MAWmPR0WPWa27gwIEhX3DBBQCAI488MnSHHHJIyAzWzSsYd0q9rhqrBp9lWdJzPmrUKADAjTfeGDq1GPK1atHQYGUmSSyzzDKpn9/YecnbosPzogH+Wkdu3nnnBQC89NJLoXv++edDpkVZvTi61/L8ARWvgI7fFh1jjDHG/KPw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xhhjTGmpmesqzfT/448/hu7rr78OefrppwcADBs2LHTPPfdcyOuttx6AcpVF1/Pz/fffAwD+/PPP0C2yyCIh5+EaoDvqiy++CN1aa60V8jHHHBPyHnvsASBp4uecAcC0007b4Dh1rop0bWW5m9Jeo+PTVOqffvoJAPD777+HbvTo0SHPNttsAIDFF188dDPOOGPI9e7a41ydddZZoevcuXPIV1xxBQCgY8eOoct7TJwTvSZefvnlkP/444+Q6YZSd3gaOqddunQJeckll0x8Z1G09PvrfX2ZfwYa4pAWhlHLdWqLjjHGGGNKi290jDHGGFNacnVdqblK3QDMprrjjjtC98knn4S86aabAgBmnXXW0D3yyCMhr7vuug0+v57MtTyuLNdaWlaVnp8zzjgDANCjR4/QLbbYYiHn4bLj+ZtmmmlCN99884V8/PHHh8x50+NQ11qnTp0AAHPOOWfoevfuHbK6PGoFz++3334bOmYPAcCvv/4aMl1Tb731Vui+++67kOne++2330JHdyMATD311ACAXXbZJXR9+/YNuZYun6aibryHH34YQNI1NGTIkJB5XdYyO4nuqNNOOy10V199dci6VrfaaisAlXo/ADB+/PiQOdYJEyaEbs011wz5lltuAQDMPPPMDb6/mqS5pnQ9tLTyNF0G6jqo96zItNCGtExGJWsc9Z7hmLb/t4Ss3z8df63mOu1YdP/gngIARx11FIDk73vec2aLjjHGGGNKS80sOoMGDQr5uuuuAwD0798/dO3btw+ZloJPP/00dPp0xsDDGWaYIXRFP6XoWP/66y8AwJFHHhm6zTffPOStt966wfs/+uijkJ955hkAwNlnnx26vO94+fkMpAWABx54IOS77rorZJ7/Dz/8MHRffvllyJ9//nmD/7M2EgD069cPQLI2T95PzLTSbLvttqFTiw4DqIHKE5c+cej/l1pqqQY6BsgDwA033AAAGDFiROi4JoCKxQcodt3qE79aTLlu9fqcZZZZQq6VJUef6N955x0AwK233hq67t27h6w1txZccEEAwLnnntvk79J54HnJe02OGjUqZD7xarD14MGDQ9ZkjTSLgFpiN9xwQwDAbrvtFrqVV145ZFaxLnrP1DpIal1j/SZes5PDfV/fr9ZlWvfqKVlF1zLnWPdHTVbg/KgVWa17/Cz9zB9++KHB+wFgo402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hdq3bw+gdoN1+XStYx41alTI1113HQBg2LBhodO3F76JbrTRRqFjAC9Q2Te2rNojaW8htEwBwBdffBEyg+jVCqLfReudrt9aeQsFSsGq999/f+j0+mTNHA2mrsVg+ay5/PPPPwEkA0NpcQaAwYMHAwC6du0aOl1/L7zwAgDgwQcfDN3rr78esloqGcRcTYvOW2+9BaBkOQSAfffdN+QzzjgDQHptp0qj61yt3LQOagC8vqVrnZ8tt9wSANCnT5/QdenSJWQGU+v48g7MpUVw//33D50e0zrrrBMy900NUP70009D/t///gcAGDJkSOjee++9kHfaaScAwOWXXx66tDo91UR/X63fRC2mXMtq5dJzwWcJXsdA0iLZlPHZomOMMcaYwuIHHWOMMcYUlmb5htRMSdOvBmhmBTCmBfDRnQOUTFsajJU3HCsDjYFSUBgALLbYYiGzJoCaK7WE/qBBgwAAb7/9dugeeuihkFkzKO8AVjWX61yzzsrdd98duuHDh4fco0cPAMBdd90VumWWWSbko48+GgDw/PPPh27FFVdM/a1yQdO91nnS2inTp08PmUHEGiCvroEXX3wRQLJOhgauMti6loIF1fX0zjvvAEiamzUxgK7lWnRXNYR7770XQPKaU3hdqetO549uhN133z10v/32W8jVuhZ1ftTMv/322wNIunNOOeWUkDm+arq+eazqIjziiCNC5l6prXx0fGk1VdQNpHVmGGytgb/t2rULmftHpedJv59j6dmzZ+rf6p7G62uppZYK3RZbbBHyDz/8AAA466yzQkd3MwAsueSSid/MC3UdaugFwzv0/n/ppZeGzLnUvVjheSln6IotOsYYY4wpLH7QMcYYY0xhKXtak0ZXZ7kgaKbUrIjzzz8/5NVXXx0A0Lt379DlHVXPY77kkktCp+4ONZ2+//77AJK1VdSMTtcI6yUApUh6/a28x6yuiwsuuCDkyy67DACw0korhe7JJ58MedVVVwWQPCeaNfDNN98ASGavaIn6StT8oJlX12dW1lX37t0BAB06dAjdFVdcETLXqroG0rIK88600jGp64Uuw5VXXjl0WlMm73XXULJKyF999dUAkiX22dYBAL7++msASXezQtePrl+tA1at+l46vpdffjlkZrZqVo5myLFmTR7o2tH1TzegZppmrTPuO7///nvoHnjggZCvvPJK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qS06xhhjjCksftAxxhhjTGGpmutKzahff/01AOCNN94IXa9evUJu165dnc9MmjQp5HfeeQcAsMkmm6R+fyVMszSzZZnjmvJd6npjJgWQfvw6vvpM8pVAf5PHrebG+s6Fjiktq6la5nTtzv7222+HfP7554c8btw4AMD48eNTP7f00ksDALp06RK6o446qs7/16oLi2PRc67rj8fdunXr0NWKuyNrzej+8OSTTwIAXn755dS/nW222QAAm2++eeg23XTTkNu0aVPnM3mzzz77hEzX1cCBA0N36623hsx1ueuuu4ZutdVWC3mOOeYAUF13XVq4QlboQdr+UIuuxXLS3P09yw2bB2nz991334V8xRVXAAA+//zz0Om9fK+99gIAzDJL6fGkuXNui44xxhhjCstMm3o2txeGPtH99NNPIe+www4Akm8Zl1xySZ3P6dP/pZdeGvIKK6wAAOjZs2foGvMU29BeV/r7L7zwAgDg999/D92iiy46099ZbLHFQp4xY0bIfPv86KOPQnfNNdeETEvCrLPOGrr9998/ZH2T41OvzmO5el3p/P36668hH3vssXV0DIAESnPRtm3b0Ol5o6XghBNOCN2yyy5b5/NZNKXXFedy+PDhoTvrrLNCnjBhQsi77747gKSV8eeffw75zDPPBJB8I9HjP/zwwwEA++23X0MPL0G5el2pFUrP6Y8//ggAePrpp0M3bNiwkD/++GMAyTW5xRZbpH5XU2hKryuORS031157bch33HFHyLx+1GKQZhGYa665QnfKKaeEfNBBBwFoerB9JXpd6bGMHTsWAHDeeeeF7sEHHwz5t99+AwDMPvvsodM3Zl6/q6++euhoxQLqH2tDe13pMfP64doCkhZ9/dv55psPALD22muHTq8v7h+VsuxUohdUWjCuout64sSJAJL3DB0r17J+jyZGaH2ltHNU6fHx+N56663Q7bLLLiFzXer1N3r06JDvvPNOAMA222wTusYE07vXlTHGGGP+VfhBxxhjjDGFpWrByGeffXbINM2deOKJpQOZpe6hPP/88yHff//9Id93330Amh4M3BRoThsxYkTq/6vpkS6f5ZdfPnRap4XBrksttVTo5p133pB33nlnAMCzzz4bOpqrgeoFm2mA6jnnnBPyjTfeCADo1KlT6NZZZ506n3vuuedC9/3339f5fw3mPfLII0Mu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Y/7pp59C3mabbQAAxx13XOiOPvrokPPMUNJj1v313XffDfmkk04CAHz//feh07lq06YNAOD1118P3Zprrhly//79AQDLL7986GpxLx07dmzIV155Zcg8F1qni2MGSudCx8QxA8mQgXKv4bQQlH/+Dl3aX331VegmT54c8jPPPAMA+PPPP0N3+umnh1yJ+4MtOsYYY4wpLGWz6PDp67LLLgvdLbfcEvL06dND1sAysuuuu4bMYFUNcK00fFLVp9Atttgi5JVXXhkAsMgii4ROn6jT+h7p/z///PMh//bbbwCSVo7VV1895IMOOggAsOiii6Z+f62gT/ccEwC88847AIAlllgidBtuuGHIfBPI4y1L19Rnn30WsgbeTpw4EQDw4IMPhm7TTTcNOS2Yvhbnpz6yggF53U6ZMiV0tbgW9S1fr1seP+cRKAXoAsCss84KAFhmmWVC169fv5BZE0kty7VoEdD5GzVqVMgc9x577BG6vOeMe8XUqVNDp2/xeq/gutNzrmNdbrnlAAAffvhh6F544YWQaTHQ61fXbx5zqWuVwdZqhZl33nlDXmWVVep8RmsGzTHHHACAm2++OXRq/dloo41CLrd1RPd5Wn6BZOD48OHDAST3V7XecH6XXXbZ0J166qllOb4sbNExxhhjTGHxg44xxhhjCkvZXVc0KwLAxRdfHLK6Mb777jsAwAknnBC6jz/+OGQGK6s5r9KmV37/3HPPHTot+8/ANzW9KnqsXbp0AZA0t2rNFTX/kbvuuivkO++8E0AygLCWSKvZ8Oabb4b80ksvAQB22GGH0Gngbh6mY5rOubYA4Nhjjw3566+/Dvm0004DAGyyySah0zHXohujKajrcdKkSSG/8sorAICFFloodOpmzXP8We7SE088MWSa/DWAfN99963zHerOGjhwYMh0Y+p3ajBo3m4gosfx5Zdfhsz9Z6655kr922qRds2wfQoA3HDDDSGra4bXX6dOnVK/l3WseB8BgJdffjnkSy+9FABw0003hU7vNXm0ntEAcCbeMOgaSF5fdJ2qm13lMWPGAADuueee0GWFUZQbdTGqu0ld3wzsV9dbWjC51gmqNLboGGOMMaaw+EHHGGOMMYWlbK4rmoO333770GV1XGUGE10cQNLNRdPcuuuuG7q0OjTlhMeqLih1vdCcnWW2V5O6mmH/+f36t5qJphkC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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# training data stored in arrays X, y\n", + "data = loadmat(r\"D:\\Github\\Learning-Content\\Phase 3 - 2020 (Summer)\\Week 4(Apr 19 - Apr 25)\\Exercise3\\Data\\ex3data1.mat\")\n", + "X, y = data['X'], data['y'].ravel()\n", + "\n", + "# set the zero digit to 0, rather than its mapped 10 in this dataset\n", + "# This is an artifact due to the fact that this dataset was used in \n", + "# MATLAB where there is no index 0\n", + "y[y == 10] = 0\n", + "\n", + "# get number of examples in dataset\n", + "m = y.size\n", + "\n", + "# randomly permute examples, to be used for visualizing one \n", + "# picture at a time\n", + "indices = np.random.permutation(m)\n", + "\n", + "# Randomly select 100 data points to display\n", + "rand_indices = np.random.choice(m, 100, replace=False)\n", + "sel = X[rand_indices, :]\n", + "\n", + "displayData(sel)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "# Setup the parameters you will use for this exercise\n", + "input_layer_size = 400 # 20x20 Input Images of Digits\n", + "hidden_layer_size = 25 # 25 hidden units\n", + "num_labels = 10 # 10 labels, from 0 to 9\n", + "\n", + "# Load the .mat file, which returns a dictionary \n", + "weights = loadmat(r'D:\\Github\\Learning-Content\\Phase 3 - 2020 (Summer)\\Week 4(Apr 19 - Apr 25)\\Exercise3\\Data\\ex3weights.mat')\n", + "\n", + "# get the model weights from the dictionary\n", + "# Theta1 has size 25 x 401\n", + "# Theta2 has size 10 x 26\n", + "Theta1, Theta2 = weights['Theta1'], weights['Theta2']\n", + "\n", + "# swap first and last columns of Theta2, due to legacy from MATLAB indexing, \n", + "# since the weight file ex3weights.mat was saved based on MATLAB indexing\n", + "Theta2 = np.roll(Theta2, 1, axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(Theta1, Theta2, X):\n", + " \"\"\"\n", + " Predict the label of an input given a trained neural network.\n", + " \n", + " Parameters\n", + " ----------\n", + " Theta1 : array_like\n", + " Weights for the first layer in the neural network.\n", + " It has shape (2nd hidden layer size x input size)\n", + " \n", + " Theta2: array_like\n", + " Weights for the second layer in the neural network. \n", + " It has shape (output layer size x 2nd hidden layer size)\n", + " \n", + " X : array_like\n", + " The image inputs having shape (number of examples x image dimensions).\n", + " \n", + " Return \n", + " ------\n", + " p : array_like\n", + " Predictions vector containing the predicted label for each example.\n", + " It has a length equal to the number of examples.\n", + " \n", + " Instructions\n", + " ------------\n", + " Complete the following code to make predictions using your learned neural\n", + " network. You should set p to a vector containing labels \n", + " between 0 to (num_labels-1).\n", + " \n", + " Hint\n", + " ----\n", + " This code can be done all vectorized using the numpy argmax function.\n", + " In particular, the argmax function returns the index of the max element,\n", + " for more information see '?np.argmax' or search online. If your examples\n", + " are in rows, then, you can use np.argmax(A, axis=1) to obtain the index\n", + " of the max for each row.\n", + " \n", + " Note\n", + " ----\n", + " Remember, we have supplied the `sigmoid` function in the `utils.py` file. \n", + " You can use this function by calling `utils.sigmoid(z)`, where you can \n", + " replace `z` by the required input variable to sigmoid.\n", + " \"\"\"\n", + " # Make sure the input has two dimensions\n", + " if X.ndim == 1:\n", + " X = X[None] # promote to 2-dimensions\n", + " \n", + " # useful variables\n", + " m = X.shape[0]\n", + " num_labels = Theta2.shape[0]\n", + "\n", + " # You need to return the following variables correctly \n", + " p = np.zeros(X.shape[0])\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " X = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + " \n", + " a2 = sigmoid(X.dot(Theta1.T))\n", + " a2 = np.concatenate([np.ones((a2.shape[0], 1)), a2], axis=1)\n", + " \n", + " p = np.argmax(sigmoid(a2.dot(Theta2.T)), axis = 1)\n", + "\n", + " # =============================================================\n", + " return p" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Neural Network Prediction: 4\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "if indices.size > 0:\n", + " i, indices = indices[0], indices[1:]\n", + " displayData(X[i, :], figsize=(4, 4))\n", + " pred = predict(Theta1, Theta2, X[i, :])\n", + " print('Neural Network Prediction: {}'.format(*pred))\n", + "else:\n", + " print('No more images to display!')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 3c28a2abc141733020d1983a5004be2555402756 Mon Sep 17 00:00:00 2001 From: Aishik13012002 <51096112+Aishik13012002@users.noreply.github.com> Date: Sat, 25 Apr 2020 15:24:48 +0530 Subject: [PATCH 09/10] AIshik Rakshit 190122002 w04 From 408c4f92fc00ef0a239026805b89a1b128cf1e26 Mon Sep 17 00:00:00 2001 From: Aishik13012002 <51096112+Aishik13012002@users.noreply.github.com> Date: Sat, 2 May 2020 21:02:02 +0530 Subject: [PATCH 10/10] aishik rakshit 190122002 w05 --- .../Aishik Rakshit 190122002 w04 ex 5.ipynb | 680 ++++++++++++++ .../Aishik Rakshit190122002 w05 ex 4.ipynb | 851 ++++++++++++++++++ 2 files changed, 1531 insertions(+) create mode 100644 Phase 3 - 2020 (Summer)/Week 5(Apr 26-May 02)/Aishik Rakshit 190122002 w04 ex 5.ipynb create mode 100644 Phase 3 - 2020 (Summer)/Week 5(Apr 26-May 02)/Aishik Rakshit190122002 w05 ex 4.ipynb diff --git a/Phase 3 - 2020 (Summer)/Week 5(Apr 26-May 02)/Aishik Rakshit 190122002 w04 ex 5.ipynb b/Phase 3 - 2020 (Summer)/Week 5(Apr 26-May 02)/Aishik Rakshit 190122002 w04 ex 5.ipynb new file mode 100644 index 000000000..c69a38a05 --- /dev/null +++ b/Phase 3 - 2020 (Summer)/Week 5(Apr 26-May 02)/Aishik Rakshit 190122002 w04 ex 5.ipynb @@ -0,0 +1,680 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "\n", + "# Optimization module in scipy\n", + "from scipy import optimize\n", + "\n", + "# will be used to load MATLAB mat datafile format\n", + "from scipy.io import loadmat\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def trainLinearReg(linearRegCostFunction, X, y, lambda_=0.0, maxiter=200):\n", + " \"\"\"\n", + " Trains linear regression using scipy's optimize.minimize.\n", + "\n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The dataset with shape (m x n+1). The bias term is assumed to be concatenated.\n", + "\n", + " y : array_like\n", + " Function values at each datapoint. A vector of shape (m,).\n", + "\n", + " lambda_ : float, optional\n", + " The regularization parameter.\n", + "\n", + " maxiter : int, optional\n", + " Maximum number of iteration for the optimization algorithm.\n", + "\n", + " Returns\n", + " -------\n", + " theta : array_like\n", + " The parameters for linear regression. This is a vector of shape (n+1,).\n", + " \"\"\"\n", + " # Initialize Theta\n", + " initial_theta = np.zeros(X.shape[1])\n", + "\n", + " # Create \"short hand\" for the cost function to be minimized\n", + " costFunction = lambda t: linearRegCostFunction(X, y, t, lambda_)\n", + "\n", + " # Now, costFunction is a function that takes in only one argument\n", + " options = {'maxiter': maxiter}\n", + "\n", + " # Minimize using scipy\n", + " res = optimize.minimize(costFunction, initial_theta, jac=True, method='TNC', options=options)\n", + " return res.x\n", + "\n", + "\n", + "def featureNormalize(X):\n", + " \"\"\"\n", + " Normalizes the features in X returns a normalized version of X where the mean value of each\n", + " feature is 0 and the standard deviation is 1. This is often a good preprocessing step to do when\n", + " working with learning algorithms.\n", + "\n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " An dataset which is a (m x n) matrix, where m is the number of examples,\n", + " and n is the number of dimensions for each example.\n", + "\n", + " Returns\n", + " -------\n", + " X_norm : array_like\n", + " The normalized input dataset.\n", + "\n", + " mu : array_like\n", + " A vector of size n corresponding to the mean for each dimension across all examples.\n", + "\n", + " sigma : array_like\n", + " A vector of size n corresponding to the standard deviations for each dimension across\n", + " all examples.\n", + " \"\"\"\n", + " mu = np.mean(X, axis=0)\n", + " X_norm = X - mu\n", + "\n", + " sigma = np.std(X_norm, axis=0, ddof=1)\n", + " X_norm /= sigma\n", + " return X_norm, mu, sigma\n", + "\n", + "\n", + "def plotFit(polyFeatures, min_x, max_x, mu, sigma, theta, p):\n", + " \"\"\"\n", + " Plots a learned polynomial regression fit over an existing figure.\n", + " Also works with linear regression.\n", + " Plots the learned polynomial fit with power p and feature normalization (mu, sigma).\n", + "\n", + " Parameters\n", + " ----------\n", + " polyFeatures : func\n", + " A function which generators polynomial features from a single feature.\n", + "\n", + " min_x : float\n", + " The minimum value for the feature.\n", + "\n", + " max_x : float\n", + " The maximum value for the feature.\n", + "\n", + " mu : float\n", + " The mean feature value over the training dataset.\n", + "\n", + " sigma : float\n", + " The feature standard deviation of the training dataset.\n", + "\n", + " theta : array_like\n", + " The parameters for the trained polynomial linear regression.\n", + "\n", + " p : int\n", + " The polynomial order.\n", + " \"\"\"\n", + " # We plot a range slightly bigger than the min and max values to get\n", + " # an idea of how the fit will vary outside the range of the data points\n", + " x = np.arange(min_x - 15, max_x + 25, 0.05).reshape(-1, 1)\n", + "\n", + " # Map the X values\n", + " X_poly = polyFeatures(x, p)\n", + " X_poly -= mu\n", + " X_poly /= sigma\n", + "\n", + " # Add ones\n", + " X_poly = np.concatenate([np.ones((x.shape[0], 1)), X_poly], axis=1)\n", + "\n", + " # Plot\n", + " pyplot.plot(x, np.dot(X_poly, theta), '--', lw=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5wcdZnv8c93YiMZQi+yCZEFQnBAXWRnuYxuMF4AV5dRiZdXdAUJHAVGTVggoEL0HJV1RTkuRD2gLgyuBEFg4y0i44oIC2wSZAI4gMiS5ibKJajgxGhs8Dl/VI1MQndPzaSre3r6+3696pWu6ro8UzRP//pXv3pKEYGZmbWPjmYHYGZmjeXEb2bWZpz4zczajBO/mVmbceI3M2szz2t2AFnMnDkz5s6d2+wwzMxayrp1656IiFlbL2+JxD937lwGBwebHYaZWUuR9GCl5e7qMTNrM078ZmZtxonfzKzNOPGbmU0ypVKJpYsXM7tYZFpHB7OLRZYuXkypVKrL/p34zcwmkYGBAeZ1dzO9v5/Vw8NsjmD18DDT+/uZ193NwMDANh9DrVCkraenJzyqx8ymulKpxLzublZt2sTBFd5fAyzo7GTt0BBdXV1j7k/Suojo2Xq5W/xmZpPEeeecwwnlcsWkD3AwcHy5zPnLl2/TcZz4zcwmicu+9jWOK5drrnN8ucxll1yyTcdx4jczmySe2LiRPcdYZ0663rZw4jczmyRmzphBxVttR3koXW9bOPGbmU0SRx19NBcVCjXX6S8UOGrRom06jhO/mdkkceJpp3FhocCaKu+vIUn8S5Yu3abjOPGbmU0SXV1drFi5kgWdnSwrFCgBZaAELCsUWNDZyYqVKzMN5azFid/MbBLp7e1l7dAQm/v6mF8sMr2jg/nFIpv7+lg7NERvb+82H8M3cJmZTVENv4FL0vaSfizpJ5LuknRmuvyrku6XdHs67Z9XDGZm9lx5PohlM3BYRGyUVABukjRSZOJDEbEyx2ObmVkVubX4IzFyl0EhnSZ/v5KZWQPlXYmzklwv7kqaJul24HHgmoi4OX3rU5KGJC2X9Pwq2/ZJGpQ0uGHDhjzDNDNrikZU4qykIRd3Je0EfAv4J+BXwKPAdsAFQCki/rnW9r64a2ZTTb0rcVbS1OqcEfEkcD1weEQ8knYDbQb+HXhFI2IwM5tMGlWJs5I8R/XMSlv6SJoO/D3wM0m7pssEvBW4M68YzMwmq0ZV4qwkz1E9uwIXS5pG8gVzZURcJelHkmYBAm4H3p9jDGZmk1KjKnFWklvij4gh4IAKyw/L65hmZq1i5owZPDg8TK3e+3pU4qzEJRvMzJqgUZU4K3HiNzNrgkZV4qzEid/MrAkaVYmzkjETv6QOSQdIepOkwyTNrnsUZmZtqBGVOCupegOXpC7gdJJhmPcCG4DtgRcDm4B/Ay6OiD/lEtkovoHLzGz8qt3AVWtUz78AXwLeF1t9O0jaBTgKWARcXM9AzcwsX1UTf0QcWeO9x4HP5RKRmZnlKksf/6CkJZJe0IiAzMwsX1lG9bwL+CvgFkmXS/qHtNyCmZm1oDETf0Ssj4iPklzUvQz4CvCQpDMl7Zx3gGZmVl+ZxvFL6gbOAT4LfANYCPwW+FF+oZmZWR7GrNUjaR3wJHARcEZaThngZknz8wzOzMzqL0uRtndExH2V3oiIt9c5HjMzy1nVrh5JR0vqqJb0JXVJelV+oZmZWR5qtfj/Ergt7epZx7N37u4NvBZ4Ajgj9wjNzKyuat3A9XlJ5wGHAfOBbuD3wN3Aooh4qDEhmplZPdXs44+IZ4Br0snMzKYAl2U2M2szTvxmZm0mt8QvaXtJP5b0E0l3STozXb6XpJsl3SvpCknb5RWDmZk9V5YbuHYCjgHmjl4/Ik4aY9PNwGERsVFSAbhJ0gBwKrA8Ii6X9GXgOJLyz2Zm1gBZWvxXkyT9O0iGdY5MNUViYzpbSKcgGSW0Ml1+MfDW8YVsZmbbIsudu9tHxKkT2bmkaSRfEnsD55M8TvLJiHg6XeVhYLcq2/YBfQBz5syZyOHNzKyCLC3+SySdIGlXSTuPTFl2HhHPRMT+wO7AK4C/rrRalW0viIieiOiZNWtWlsOZmVkGWVr8fySpyvlRnk3SAbwo60Ei4klJ1wPzgJ0kPS9t9e8O/HJcEZuZ2TbJ0uI/Fdg7IuZGxF7pNGbSlzQrvTCMpOkkD22/G7iOpKwzwLHAdyYWupmZTUSWFv9dwKYJ7HtX4OK0n78DuDIirpL0U+BySf8C3EZS7tnMzBokS+J/Brhd0nUkQzSBsYdzRsQQcECF5feR9PebmVkTZEn8304nMzObAsZM/BFxcSMCMTOzxshy5+4+wKeBfUnq8QOQ5QKvmZlNPllG9fw7SUmFp4FDgRXAJXkGZWZm+cmS+KdHxLWAIuLBiPgESdkFMzNrQVku7v5BUgdwr6QTgV8Au+QblpmZ5SVLi/8UoBM4CTgIWERy45WZmbWgLKN6bklfbgTek284ZmaWt6qJX9J3qVJADSAiFuQSkZmZ5apWi/9f03/fDrwQ+Fo6fyTwQI4xmZlZjqom/oj4LwBJn4yI14x667uSbsg9MjMzy0WWi7uzJP35Zi1JewEukG9m1qKyDOdcClwv6b50fi7pk7HMzKz1ZBnV8/20bMNL00U/i4jNtbYxM7PJK0uLnzTR/yTnWMzMrAGy9PGbmdkU4sRvZtZmxkz8Shwt6WPp/BxJfoKWmVmLytLi/yJwMMmNWwDDwPm5RWRmZrnKkvj/LiKWAH8AiIjfANuNtZGkPSRdJ+luSXdJOjld/glJv5B0ezq9cZv+AjMzG5cso3rKkqaR1u2RNAv4U4btngZOi4hbJe0IrJN0Tfre8oj41xrbmplZTrK0+L8AfAvYRdKngJuAs8baKCIeiYhb09fDwN3AbtsQq5mZ1cGYiT8iLgU+TPLc3UeAt0bEf4znIJLmAgcAN6eLTpQ0JOkrkl5QZZs+SYOSBjds2DCew5mZWQ1Zh3PeS9LqXwX8TtKcrAeQNAP4BnBKRPyW5Pm9XcD+JF8k51TaLiIuiIieiOiZNculgczM6mXMPn5J/wR8HHgMeAYQSX9/d4ZtCyRJ/9KI+CZARDw26v0LgasmFLmZmU1Ilou7JwMviYhfjWfHkgRcBNwdEeeOWr5rRDySzr4NuHM8+zUzs22TJfH/HHhqAvueT/J83jsk3Z4u+whwpKT9SX41PAC8bwL7NjOzCar16MVT05f3kZRl/h7w56qco1vxlUTETSTdQlu7egJxmplZndRq8e+Y/vtQOm3HszduVX0Wr5mZTW5VR/VExJkRcSbw05HXo5bd3bgQzcyqK5VKLF28mNnFItM6OphdLLJ08WJKpVKzQ5u0sgznXJZxmZlZQw0MDDCvu5vp/f2sHh5mcwSrh4eZ3t/PvO5uBgYGmh3ipFSrj78XeCOwm6QvjHqrSFKOwcysaUqlEscsXMiqTZs4eNTyLuCscpkjymUWLFzI2qEhurq6mhXmpFSrxf9LYJCkONu6UdMq4B/yD83MrLrzzjmHE8rlLZL+aAcDx5fLnL98eSPDagmKqH2dVlIhIsoNiqeinp6eGBwcbGYIZjbJzC4WWT08TK22fAmYXyzy6FMTGZHe+iSti4ierZdnqdXT1KRvZlbJExs3sucY68xJ17Mt+dGLZtaSZs6YwYNjrPNQup5tqWril3RJ+u/JjQvHzCybo44+mosKhZrr9BcKHLVoUYMiah21WvwHSdoTeK+kF0jaefTUqADNzCo58bTTuLBQYE2V99eQJP4lS5c2MqyWUCvxfxn4PvBSthzVs45ktI+ZWdN0dXWxYuVKFnR2sqxQoASUSS7oLisUWNDZyYqVKz2Us4Jad+5+ISL+GvhKRLwoIvYaNb2ogTGamVXU29vL2qEhNvf1Mb9YZHpHB/OLRTb39bF2aIje3t5mhzgpjTmcE0DS3wKvTmdviIihXKPaiodzmpmN34SHc0o6CbgU2CWdLk0fzmJmZi0oSz3+44G/i4jfAUg6m+S6yf/LMzAzM8tHlnH8Innk4oiRxy+amVkLytLi/3fgZknfSuffSvJIRTMza0FjJv6IOFfS9cCrSFr674mI2/IOzMzM8pGlxU9E3ArcOp4dS9oDWAG8EPgTcEFEfD69+esKYC7JM3ffGRG/Gc++zcxs4vKs1fM0cFp6L8A8YImkfYEzgGsjYh/g2nTezMwaJLfEHxGPpL8UiIhhksc17ga8Bbg4Xe1ikmsGZmbWIFnG8Z+dZdkY+5gLHADcDMyOiEcg+XIguTfAzMwaJEuL//UVlmW+D1rSDOAbwCkR8dtxbNcnaVDS4IYNG7JuZmZmY6hVlvkDku4AXiJpaNR0P5CpZIOkAknSvzQivpkufkzSrun7uwKPV9o2Ii6IiJ6I6Jk1a9Z4/iYzM6uh1qiey4AB4NNseQF2OCJ+PdaOJYlkvP/dEXHuqLdWAccCn0n//c54gzYzs4mrmvgj4ingKUmnb/XWDEkzIuKhMfY9H1gE3CHp9nTZR0gS/pWSjiN5QM47Jha6mZlNRJZx/N8DguTmre2BvYB7gJfV2igibqJ6aYfXjSNGMzOroyx37v7N6HlJBwLvyy0iMzPL1bjH8adj81+eQyxmZtYAY7b4JZ06arYDOBDw+EozsxaVpY9/x1Gvnybp8/9GPuGYmVnesvTxnwkgacdkNjbmHpWZmeUmS8mG/STdBtwJ3CVpnaT98g/NzMzykOXi7gXAqRGxZ0TsCZyWLjMzsxaUJfHvEBHXjcxExPXADrlFZGZmucpycfc+Sf8HuCSdPxq4P7+QzMwsT1la/O8FZgHfTKeZwHvyDMrMzPKTZVTPb4CTGhCLmZk1QJ6PXjQzs0nIid/MrM048ZuZtZkstXq+UGHxU8BgRPghKmZmLSZLi397YH/g3nTqBnYGjpP0uRxjMzOzHGQZx783cFhEPA0g6UvAD0gewn5HjrGZmVkOsrT4d2PLO3V3AP4qIp4BNucSlZmZ5SZLi///ArdLup7kUYqvAc6StAPwwxxjMzOzHIzZ4o+Ii4BXAt9Op1dFRH9E/C4iPlRtO0lfkfS4pDtHLfuEpF9Iuj2d3liPP8LMJp9SqcTSxYuZXSwyraOD2cUiSxcvplQqNTu0tpd1OGcHyVO3fg3sLek1Gbb5KnB4heXLI2L/dLo64/HNrIUMDAwwr7ub6f39rB4eZnMEq4eHmd7fz7zubgYGBpodYlvLMpzzbOAfgbuAP6WLA7ih1nYRcYOkudsYn5m1mFKpxDELF7Jq0yYOHrW8CzirXOaIcpkFCxeydmiIrq6uZoXZ1rK0+N8KvCQi3hQRR6TTgm045omShtKuoBdUW0lSn6RBSYMbNvgRv2at4rxzzuGEcnmLpD/awcDx5TLnL1/eyLBsFEVE7RWkAeAdE3nkYtrivyoi9kvnZwNPkPxi+CSwa0S8d6z99PT0xODg4HgPb2ZNMLtYZPXwMLXa8iVgfrHIo0891aiw2pKkdRHRs/XyLKN6NpGM6rmWUcM3I2LcFTsj4rFRAV0IXDXefZjZ5PbExo3sOcY6c9L1rDmyJP5V6bTNJO0aEY+ks28jeY6vmU0hM2fM4MExWvwPpetZc2Spx3/xRHYs6evAIcBMSQ8DHwcOkbQ/SVfPA8D7JrJvM5u8jjr6aC7q7+escrnqOv2FAkctWtTAqGy0qn38kq6MiHdKuoMkUW8hIrrzDm6E+/jNWkepVGJed/dzRvWMWAMs6Oz0qJ4GmEgf/8npv2/OJyQzm4q6urpYsXIlCxYu5PhymePLZeaQdO/0Fwr0FwqsWLnSSb+Jqg7nHNUX/zpgu4h4cPTUmPDMrBX19vaydmiIzX19zC8Wmd7Rwfxikc19fawdGqK3t7fZIba1LMM5/xl4FbAnsA64EbgxIm7PP7yEu3rMzMavWldPllo9H4uIw4D9gJuAD5F8AZiZWQvKUrLhfwPzgRnAbcAHSVr9ZmbWgrKM43878DTwPeC/gLUR8YdcozIzs9xk6eo5kOQC749Jn7ol6aa8AzMzs3xk6erZD3g18FqgB/g57uoxM2tZWbp6ziYpwfwF4JaIqH47npmZTXpZSja8SdJ2wIuBl0i6x8nfzKx1ZenqeS2wgqS2joA9JB0bETUfxGJmZpNTlq6ec4E3RMQ9AJJeDHwdOCjPwMzMLB9ZnsBVGEn6ABHxP0Ahv5DMzCxPWVr8g5IuAi5J59+N79w1M2tZWRL/B4AlwEkkffw3AF/MMygzM8tPllE9m0n6+c/NPxwzM8tb1cRf7QEsIxr5IBYzM6ufWi3+dwC/b1QgZmbWGLUS/2URcaCkSyLCD8c0M5siaiX+7SQdC7xS0tu3fjMivllrx5K+QvLYxscjYr902c7AFcBckhvC3hkRv5lY6GZmNhG1xvG/H5gH7AQcsdWU5Tm8XwUO32rZGcC1EbEPcG06b2ZmDVS1xR8RNwE3SRqMiIvGu+OIuEHS3K0WvwU4JH19MXA9cPp4921mZhOXpR7/uJN+DbNHHuKe/rtLtRUl9UkalDS4YcOGOoZgZtbespRsaIqIuCAieiKiZ9asWc0Ox8xsyqiZ+JXYo47He0zSrum+dwUer+O+zcwsg5qJPyIC+HYdj7cKODZ9fSzwnTru28zMMsjS1bNW0svHu2NJXwfWkDy85WFJxwGfAV4v6V6S5/d+Zrz7NTOzbZOlSNuhwPslPQD8jqRQW4xVsiEijqzy1uvGFaGZmdVVlsTfm3sUZmbWMFmGcz4I7AEclr7elGU7MzObnMZM4JI+TnKT1bJ0UQH4Wp5BmVn9lEolli5ezOxikWkdHcwuFlm6eDGlUqnZoVmTZGm5vw1YQNK/T0T8Etgxz6DMrD4GBgaY193N9P5+Vg8PszmC1cPDTO/vZ153NwMDA80O0ZogS+L/YzqsMwAk7ZBvSGZWD6VSiWMWLmTVpk2cVS7TRXJRrws4q1xm1aZNHLNwoVv+bShL4r9S0r8BO0k6Afgh0J9vWGa2rc475xxOKJc5uMr7BwPHl8ucv3x5I8OySUBJY36MlaTXA28gGcr5nxFxTd6BjdbT0xODg4ONPKRZy5tdLLJ6eJiuGuuUgPnFIo8+9VSjwrIGkrQuInq2Xj7mcE5JZ0fE6cA1FZaZ2ST1xMaN7DnGOnPS9ay9ZOnqeX2FZR7bbzbJzZwxgwfHWOehdD1rL1UTv6QPpA9cf4mkoVHT/cBQ40I0s4k46uijuahQqLlOf6HAUYv8ZNV2U7WPX9JfAC8APs2WT8oajohfNyC2P3Mfv9n4lUol5nV3s2rTpooXeNcACzo7WTs0RFdXrSsB1qqq9fFXbfFHxFMR8UBEHJnesft7kiGdMyTNyTFWM6uDrq4uVqxcyYLOTpYVCpSAMskF3WWFAgs6O1mxcqWTfhvKcufuEWk1zfuB/yJ5SLrv+jBrAb29vawdGmJzXx/zi0Wmd3Qwv1hkc18fa4eG6O315bp2NOZwTkk/AQ4DfhgRB0g6FDgyIvoaESC4q8fMbCLG3dUzSjkifgV0SOqIiOuA/eseoZmZNUSWssxPSpoB3ABcKulx4Ol8wzIzs7xkafG/heTC7lLg+yTXho7IMygzM8tP1Ra/pFOA/wZui4hn0sUXNyQqMzPLTa2unt2BzwMvlTQErCb5IljT6HH8ZmZWP1UTf0R8EEDSdkAP8ErgvcCFkp6MiH0netD0+b3DwDPA05WuOpuZWT6yXNydDhSBv0inXwJ31OHYh0bEE3XYj5mZjUOtPv4LgJeRtMxvJunqOTciftOg2MzMLAe1RvXMAZ4PPAr8AngYeLJOxw3gB5LWSap4I5ikPkmDkgY3bNhQp8OamVnNO3cliaTV/8p02g/4NckF3o9P+KDSX0XELyXtQlLn/58i4oZq6/vOXTOz8ZvQnbuRuBO4mqQ+z3+TPLLz5G0JJn1gOxHxOPAt4BXbsr96KJVKLF28mNnFItM6OphdLLJ08WI/j9Qazp9Fy1utevwnSbpc0s9J7tp9M3AP8HZg54keUNIOknYceU3ySMc7J7q/ehgYGGBedzfT+/tZPTzM5ghWDw8zvb+fed3dDAy4Jp01hj+L1gi16vGfSzp2PyIeqdsBpReRtPIhubh8WUR8qtY2eXb1uGa5TRb+LFq9TaQe/6kRsbKeST/d730R8bfp9LKxkn7ezjvnHE4olyv+jwZwMHB8ucz5y5c3MixrQ/4sWqOMWZZ5MsizxT+7WGT18DC12k8lYH6xyKNPPZVLDGbgz6LV37aUZW4547k49sTGjew5xv7mpOuZ5cmfRWuUKZf4x3txbOaMGTw4xj4fStdrFI/qaE+T8bNoU9OUSvylUoljFi5k1aZNnFUu00Vy9bgLOKtcZtWmTRyzcOEWCfSoo4/mokKh5n77CwWOWrQo19hHeFRH+5psn0WbwiJi0k8HHXRQZHHKBz4QywqFCKg6nVEoxNIlS/68zfr162NmZ2esrrL+aoiZnZ2xfv36TDFsi8kUizWe//tbvQGDUSGnTqkW/2Vf+xrHlcs11zm+XOaySy7583xXVxcrVq5kQWcnywoFSkCZ5CLaskKBBZ2drFi5siHD5zyqY0uN6PKaTN1qk+mzaFNcpW+DyTZlbfF3SFGu0doPiD9CTOvoeM6269evj6VLlsTsYjGmdXTE7GIxli5Z0tDW1S477hjrx4h/PcTsYrFhMTXL1VdfHTM7O2NZoRDrIcrp376sUIiZnZ1x9dVXt8QxJmIyfBZtaqBKi39KDeds9eFw0zo62BxRs1Z2GZje0cHTzzxTY63W1ogbmXyzlLWDthjO2eoXxzyqI9GILi93q1lbq/QzYLJNWbt6Wv3i2EQuTk9FjejycreatQPa4eJuq18cO/G007iwUGBNlffXkPxiWbJ0aeZ9TqaLl1k14kYm3yxl7WxKJX6A3t5e1g4Nsbmvj/nFItM7OphfLLK5r4+1Q0P09vY2O8Sq6v3F1ar3BDSiy8vdatbWKv0MmGxT1q6eqaIeozpaudurEV1e7lazdkCVrp6mJ/UsU7sl/npo5cTWiC+tVv5iNMuqWuKfcl09lpjIzWyTRSOu1bT69SCzbeHEP0W1+sXLRlyraeXrQWbbYkrdwGXPavWb2cxs27XFDVz2rFa/mc3M8tOUxC/pcEn3SFov6YxmxDDV5XFPgJlNDQ1P/JKmAecDvcC+wJGS9m10HFOdL16aWTXNaPG/AlgfyUPX/whcDrylCXFMeb54aWaVNPzirqSFwOERcXw6vwj4u4g4cav1+oA+gDlz5hz04INj3WdpZmajTaaLu6qw7DnfPhFxQUT0RETPrFmzGhCWmVl7aEbifxjYY9T87sAvmxCHmVlbakbivwXYR9JekrYD3gWsakIcZmZtqSk3cEl6I/A5YBrwlYj41Bjrb4AxiylOJjOBJ5odxCTlc1Odz011PjfV1To3e0bEc/rKW+LO3VYjabDSBRXzuanF56Y6n5vqJnJufOeumVmbceI3M2szTvz5uKDZAUxiPjfV+dxU53NT3bjPjfv4zczajFv8ZmZtxonfzKzNOPHnQNIHJYWkmem8JH0hLUM9JOnAZsfYaJI+K+ln6d//LUk7jXpvWXpu7pH0D82Ms1lcqvxZkvaQdJ2kuyXdJenkdPnOkq6RdG/67wuaHWuzSJom6TZJV6Xze0m6OT03V6Q3x1blxF9nkvYAXg88NGpxL7BPOvUBX2pCaM12DbBfRHQD/wMsA0hLcr8LeBlwOPDFtHR323Cp8ud4GjgtIv4amAcsSc/HGcC1EbEPcG06365OBu4eNX82sDw9N78Bjqu1sRN//S0HPsyWhefeAqxIH3y/FthJ0q5Nia5JIuIHEfF0OruWpEYTJOfm8ojYHBH3A+tJSne3E5cqHyUiHomIW9PXwyQJbjeSc3JxutrFwFubE2FzSdodeBPQn84LOAxYma4y5rlx4q8jSQuAX0TET7Z6azfg56PmH06Xtav3AgPpa58bn4OqJM0FDgBuBmZHxCOQfDkAuzQvsqb6HEnj8k/p/F8CT45qWI35+XlefrFNTZJ+CLywwlsfBT4CvKHSZhWWTblxtLXOTUR8J13noyQ/5S8d2azC+lPu3IzB56ACSTOAbwCnRMRvk4Zte5P0ZuDxiFgn6ZCRxRVWrfn5ceIfp4j4+0rLJf0NsBfwk/QDujtwq6RX0CalqKudmxGSjgXeDLwunr2BpC3OzRh8DrYiqUCS9C+NiG+mix+TtGtEPJJ2lT7evAibZj6wIC10uT1QJPkFsJOk56Wt/jE/P+7qqZOIuCMidomIuRExl+R/5gMj4lGSstPHpKN75gFPjfxkbReSDgdOBxZExKZRb60C3iXp+ZL2IrkA/uNmxNhELlU+StpnfRFwd0ScO+qtVcCx6etjge80OrZmi4hlEbF7mmPeBfwoIt4NXAcsTFcb89y4xd8YVwNvJLlwuQl4T3PDaYrzgOcD16S/iNZGxPsj4i5JVwI/JekCWhIRzzQxzoaLiKclnQj8J8+WKr+ryWE103xgEXCHpNvTZR8BPgNcKek4klFz72hSfJPR6cDlkv4FuI3ki7Mql2wwM2sz7uoxM2szTvxmZm3Gid/MrM048ZuZtRknfjOzNuPEb3Uh6YWSLpdUkvRTSVdLerGkQ0YqCDabpH+WVPMmszodZydJi+uwn+sl1fUB47X2KWmlpBfV2HY7STdI8jDwFufEb9ssveHmW8D1EdEVEfuSjLue3dzIthQRH4uIHzbgUDsB40r86c19Tfv/UdLLgGkRcV+1ddICctcC/9iwwCwXTvxWD4cC5Yj48siCiLg9Im5MZ2ekrcmfSbo0/aJA0sck3SLpTkkXjFp+vaSzJf1Y0v9IenW6vFPSlWlN/yvS+uM96XtvkLRG0q2S/iOt87IFSV+VtDB9/YCkM9P175D00grrXy2pO319m6SPpa8/Kel4STMkXTtqHyMVNT8DdEm6XdJn020+lP6tQ5LOTJfNVVJz/ovArWxZtmHrWJ7z90nqTW9+G1nnEEnfzXo+tvJu0rs9Je2ppK77TEkdkm6UNFKD6tvputbCnPitHvYD1tV4/wDgFJJa8y8iuTMT4LyIeHlE7AdMJ6njM+J5ERZvVdcAAANkSURBVPGKdLuPp8sWA79Ja/p/EjgIQMkDb/438PcRcSAwCJyaIe4n0vW/BHywwvs3AK+WVCS5q3gk7lcBNwJ/AN6W7uNQ4Jz0y+sMoBQR+0fEh9KkuQ9J+eX9gYMkvSbd10tISnYfEBEPVgqyxt93DTBP0g7pqv8IXDHB8zGf9L9hGsfZwJeB04CfRsQP0vXuBF4+xr5sknNfnTXCjyPiYYD0Fvy5wE3AoZI+DHQCOwN3Ad9NtxkpzLUuXR+ShPt5gIi4U9JQunweyZfKf6c/GrYD1mSIa/Qx3l7h/RuBk4D7ge8Br5fUCcyNiHuUFBI7K03ifyIphVupe+sN6XRbOj+D5IvgIeDB9BkNtVT8+9JSD98HjpC0kqRG+4eB11Zaf4xj7ApsGJmJiH5J7wDeT/JlNbL8GUl/lLRjWivfWpATv9XDXTxbIKqSzaNePwM8T9L2wBeBnoj4uaRPkFQb3HqbZ3j2c1qtLq+AayLiyHHGXekYo90C9AD3kbSuZwIn8Oyvm3cDs4CDIqIs6YGt/obR8X06Iv5ti4VJrfnfZYiz1t93BbAE+DVwS0QMp786xns+fj869vQLbuRhOTOA0Un++SS/dqxFuavH6uFHwPMlnTCyQNLLJb22xjYjSeaJtP+51hfHiJuAd6b73xf4m3T5WmC+pL3T9zolvXicf8NzpBczf54ecy3JL4APpv8C/AVJbfSypEOBPdPlw8COo3b1n8B7R/rZJe0maTwPEan1910PHEjyhXRFhvWruRvYe9T82STPTPgYcOHIQkl/CWyIiPI44rdJxonftllaW/9tJF0hJUl3AZ+gRk3wiHiSJKHcQXLB8JYMh/oiMCvt4jkdGCIpcb0B+F/A19P31gLPuVg7QTcCj6WlpG8kaQWPJP5LgR5JgySt/58BRMSvSLpZ7pT02bR//DJgjaQ7SB6RtyMZ1fr70kqmV5E8r/eqsdav4XvAIQDpF/bLgbMj4lLgj5JGKsoeSlJt1lqYq3Nay1DyUPJCRPxBUhfJ0MIXpy1z2waSppPUdJ9fqyy2pG8CyyLinoYFZ3XnPn5rJZ3AdelFVQEfcNKvj4j4vaSPk1ygfqjSOkoeEvNtJ/3W5xa/mVmbcR+/mVmbceI3M2szTvxmZm3Gid/MrM048ZuZtZn/D9cM/apxPVORAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Load from ex5data1.mat, where all variables will be store in a dictionary\n", + "data = loadmat(os.path.join(r'D:\\Github\\Learning-Content\\Phase 3 - 2020 (Summer)\\Week 5(Apr 26-May 02)\\Exercise5\\Data\\ex5data1.mat'))\n", + "\n", + "# Extract train, test, validation data from dictionary\n", + "# and also convert y's form 2-D matrix (MATLAB format) to a numpy vector\n", + "X, y = data['X'], data['y'][:, 0]\n", + "Xtest, ytest = data['Xtest'], data['ytest'][:, 0]\n", + "Xval, yval = data['Xval'], data['yval'][:, 0]\n", + "\n", + "# m = Number of examples\n", + "m = y.size\n", + "\n", + "# Plot training data\n", + "pyplot.plot(X, y, 'ro', ms=10, mec='k', mew=1)\n", + "pyplot.xlabel('Change in water level (x)')\n", + "pyplot.ylabel('Water flowing out of the dam (y)');" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def linearRegCostFunction(X, y, theta, lambda_=0.0):\n", + " \"\"\"\n", + " Compute cost and gradient for regularized linear regression \n", + " with multiple variables. Computes the cost of using theta as\n", + " the parameter for linear regression to fit the data points in X and y. \n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The dataset. Matrix with shape (m x n + 1) where m is the \n", + " total number of examples, and n is the number of features \n", + " before adding the bias term.\n", + " \n", + " y : array_like\n", + " The functions values at each datapoint. A vector of\n", + " shape (m, ).\n", + " \n", + " theta : array_like\n", + " The parameters for linear regression. A vector of shape (n+1,).\n", + " \n", + " lambda_ : float, optional\n", + " The regularization parameter.\n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The computed cost function. \n", + " \n", + " grad : array_like\n", + " The value of the cost function gradient w.r.t theta. \n", + " A vector of shape (n+1, ).\n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the cost and gradient of regularized linear regression for\n", + " a particular choice of theta.\n", + " You should set J to the cost and grad to the gradient.\n", + " \"\"\"\n", + " # Initialize some useful values\n", + " m = y.size # number of training examples\n", + "\n", + " # You need to return the following variables correctly \n", + " J = 0\n", + " grad = np.zeros(theta.shape)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " h=X@theta\n", + " J=(1/(2*m))*sum(np.square(h-y))\n", + " J=J+(lambda_/(2*m))*sum(np.square(theta))\n", + " \n", + " \n", + " grad=(1/m)*X.transpose()@(h-y)\n", + " grad=grad.transpose()\n", + "\n", + " # ============================================================\n", + " return J, grad" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at theta = [1, 1]:\t 304.034859 \n", + "This value should be about 303.993192)\n", + "\n" + ] + } + ], + "source": [ + "theta = np.array([1, 1])\n", + "J, _ = linearRegCostFunction(np.concatenate([np.ones((m, 1)), X], axis=1), y, theta, 1)\n", + "\n", + "print('Cost at theta = [1, 1]:\\t %f ' % J)\n", + "print('This value should be about 303.993192)\\n' % J)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gradient at theta = [1, 1]: [-15.303016, 598.167411] \n", + " (this value should be about [-15.303016, 598.250744])\n", + "\n" + ] + } + ], + "source": [ + "theta = np.array([1, 1])\n", + "J, grad = linearRegCostFunction(np.concatenate([np.ones((m, 1)), X], axis=1), y, theta, 1)\n", + "\n", + "print('Gradient at theta = [1, 1]: [{:.6f}, {:.6f}] '.format(*grad))\n", + "print(' (this value should be about [-15.303016, 598.250744])\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# add a columns of ones for the y-intercept\n", + "X_aug = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + "theta = trainLinearReg(linearRegCostFunction, X_aug, y, lambda_=0)\n", + "\n", + "# Plot fit over the data\n", + "pyplot.plot(X, y, 'ro', ms=10, mec='k', mew=1.5)\n", + "pyplot.xlabel('Change in water level (x)')\n", + "pyplot.ylabel('Water flowing out of the dam (y)')\n", + "pyplot.plot(X, np.dot(X_aug, theta), '--', lw=2);" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def learningCurve(X, y, Xval, yval, lambda_=0):\n", + " \"\"\"\n", + " Generates the train and cross validation set errors needed to plot a learning curve\n", + " returns the train and cross validation set errors for a learning curve. \n", + " \n", + " In this function, you will compute the train and test errors for\n", + " dataset sizes from 1 up to m. In practice, when working with larger\n", + " datasets, you might want to do this in larger intervals.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The training dataset. Matrix with shape (m x n + 1) where m is the \n", + " total number of examples, and n is the number of features \n", + " before adding the bias term.\n", + " \n", + " y : array_like\n", + " The functions values at each training datapoint. A vector of\n", + " shape (m, ).\n", + " \n", + " Xval : array_like\n", + " The validation dataset. Matrix with shape (m_val x n + 1) where m is the \n", + " total number of examples, and n is the number of features \n", + " before adding the bias term.\n", + " \n", + " yval : array_like\n", + " The functions values at each validation datapoint. A vector of\n", + " shape (m_val, ).\n", + " \n", + " lambda_ : float, optional\n", + " The regularization parameter.\n", + " \n", + " Returns\n", + " -------\n", + " error_train : array_like\n", + " A vector of shape m. error_train[i] contains the training error for\n", + " i examples.\n", + " error_val : array_like\n", + " A vecotr of shape m. error_val[i] contains the validation error for\n", + " i training examples.\n", + " \n", + " Instructions\n", + " ------------\n", + " Fill in this function to return training errors in error_train and the\n", + " cross validation errors in error_val. i.e., error_train[i] and \n", + " error_val[i] should give you the errors obtained after training on i examples.\n", + " \n", + " Notes\n", + " -----\n", + " - You should evaluate the training error on the first i training\n", + " examples (i.e., X[:i, :] and y[:i]).\n", + " \n", + " For the cross-validation error, you should instead evaluate on\n", + " the _entire_ cross validation set (Xval and yval).\n", + " \n", + " - If you are using your cost function (linearRegCostFunction) to compute\n", + " the training and cross validation error, you should call the function with\n", + " the lambda argument set to 0. Do note that you will still need to use\n", + " lambda when running the training to obtain the theta parameters.\n", + " \n", + " Hint\n", + " ----\n", + " You can loop over the examples with the following:\n", + " \n", + " for i in range(1, m+1):\n", + " # Compute train/cross validation errors using training examples \n", + " # X[:i, :] and y[:i], storing the result in \n", + " # error_train[i-1] and error_val[i-1]\n", + " .... \n", + " \"\"\"\n", + " # Number of training examples\n", + " m = y.size\n", + "\n", + " # You need to return these values correctly\n", + " error_train = np.zeros(m)\n", + " error_val = np.zeros(m)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " for i in range(1,m+1):\n", + " \n", + " xsub=X[:i,:]\n", + " ysub=y[:i]\n", + " \n", + " theta=trainLinearReg(linearRegCostFunction,xsub,ysub)\n", + " \n", + " \n", + " error_train[i-1]=linearRegCostFunction(xsub,ysub,theta)[0]\n", + " error_val[i-1]=linearRegCostFunction(Xval,yval,theta)[0]\n", + " \n", + " # =============================================================\n", + " return error_train, error_val" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# Training Examples\tTrain Error\tCross Validation Error\n", + " \t1\t\t0.000000\t205.121096\n", + " \t2\t\t0.000000\t110.302641\n", + " \t3\t\t3.286595\t45.010231\n", + " \t4\t\t2.842678\t48.368910\n", + " \t5\t\t13.154049\t35.865165\n", + " \t6\t\t19.443963\t33.829962\n", + " \t7\t\t20.098522\t31.970986\n", + " \t8\t\t18.172859\t30.862446\n", + " \t9\t\t22.609405\t31.135998\n", + " \t10\t\t23.261462\t28.936207\n", + " \t11\t\t24.317250\t29.551432\n", + " \t12\t\t22.373906\t29.433818\n" + ] + }, + { + "data": { + "image/png": "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PfdcAHbt2sX555/PmDFjOPbYY1m6dGlof1dccQWTJk1i8ODBXZZErJOdWEoPQN9hsG2561vBmtE28Wxmryhtt6LFWcuWLWPixIktzl+4cCHLli1j0KBBLF68mAcffJD33nsPVeWYY47h5JNPZu3atQwYMICXXnJNf1dUVLBr1y6eeeYZVq5ciYiwe/fug7b9rW99i/Hjx/PHP/6RtLQ0nnjiCZ566inA9dHw7rvvIiLcd999/O53v+O2225rMc7LL7+cP/7xj5x88sn87Gc/C03v168fc+bMIRAIsHr1aqZOncqiRYuYNWsWt956Ky+++CIA8+bNC61z4403Mn78eJ599lneeOMNLr300lBHRCtXrmTu3LlUVVUxbNgwrrnmGtLT01uMqz3sSiHWQvUKS/2Nw5gEdPTRRzNo0CAAFixYwDe+8Q169uxJdnY23/zmN5k/fz6jR4/mtdde4/rrr2f+/Pn06tWL3NxcAoEAV111FX//+9/Jyso6aNsFBQWMHDmS119/nSVLlpCenh6qCygrK+OMM85g9OjR3HLLLXzyySctxlhRUcHu3bs5+eSTAbjkkktC8+rq6vjud7/L6NGjueiiiyI2993cggULQts49dRT2blzJxUVLrGec845ZGZmkp+fT79+/SJewXSUXSnEWsFoWPqE1SuY+NfKL/poGTlyJE8//XSL88Obz26p3bYvfelLLF68mJdffpkbbriBr33ta/zyl79k4cKFvP766zz++OP86U9/4o033jho3WARUv/+/UNFRwA/+MEP+OlPf8p5553HvHnzmDlzZosxqirNugYIueOOO+jfvz8fffQRjY2NBAKBFrfT2nEGt5+ZmRma1lVNg9uVQqzZHUjGtOjUU0+lpqaGe++9NzTt/fff58033zxo2ZNOOolnn32Wffv2sXfvXp555hlOPPFENm/eTFZWFhdffDHXXXcdH3zwAXv27KGiooKzzz6bO++8M1T80twFF1zAyy+/zBNPPMGUKVNC0ysqKigqKgLgoYceavUY8vLy6NWrFwsWLADgkUceabKdwsJCUlJS+Otf/xqqMM/JyaGqqiri9k466aTQNubNm0d+fj65ubmtxnAo7Eoh1vo361shJdXfeIyJIyLCM888w49//GNmzZpFIBCgpKSEO++8k02bNjVZdsKECUybNi10d9BVV13F+PHjeeWV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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "X_aug = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + "Xval_aug = np.concatenate([np.ones((yval.size, 1)), Xval], axis=1)\n", + "error_train, error_val = learningCurve(X_aug, y, Xval_aug, yval, lambda_=0)\n", + "\n", + "pyplot.plot(np.arange(1, m+1), error_train, np.arange(1, m+1), error_val, lw=2)\n", + "pyplot.title('Learning curve for linear regression')\n", + "pyplot.legend(['Train', 'Cross Validation'])\n", + "pyplot.xlabel('Number of training examples')\n", + "pyplot.ylabel('Error')\n", + "pyplot.axis([0, 13, 0, 150])\n", + "\n", + "print('# Training Examples\\tTrain Error\\tCross Validation Error')\n", + "for i in range(m):\n", + " print(' \\t%d\\t\\t%f\\t%f' % (i+1, error_train[i], error_val[i]))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def polyFeatures(X, p):\n", + " \"\"\"\n", + " Maps X (1D vector) into the p-th power.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " A data vector of size m, where m is the number of examples.\n", + " \n", + " p : int\n", + " The polynomial power to map the features. \n", + " \n", + " Returns \n", + " -------\n", + " X_poly : array_like\n", + " A matrix of shape (m x p) where p is the polynomial \n", + " power and m is the number of examples. That is:\n", + " \n", + " X_poly[i, :] = [X[i], X[i]**2, X[i]**3 ... X[i]**p]\n", + " \n", + " Instructions\n", + " ------------\n", + " Given a vector X, return a matrix X_poly where the p-th column of\n", + " X contains the values of X to the p-th power.\n", + " \"\"\"\n", + " # You need to return the following variables correctly.\n", + " X_poly = np.zeros((X.shape[0], p))\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " for i in range(p):\n", + " X_poly[:, i] = X[:, 0] ** (i + 1)\n", + "\n", + "\n", + " # ============================================================\n", + " return X_poly" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalized Training Example 1:\n" + ] + }, + { + "data": { + "text/plain": [ + "array([ 1. , -0.36214078, -0.75508669, 0.18222588, -0.70618991,\n", + " 0.30661792, -0.59087767, 0.3445158 , -0.50848117])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p = 8\n", + "\n", + "# Map X onto Polynomial Features and Normalize\n", + "X_poly = polyFeatures(X, p)\n", + "X_poly, mu, sigma = featureNormalize(X_poly)\n", + "X_poly = np.concatenate([np.ones((m, 1)), X_poly], axis=1)\n", + "\n", + "# Map X_poly_test and normalize (using mu and sigma)\n", + "X_poly_test = polyFeatures(Xtest, p)\n", + "X_poly_test -= mu\n", + "X_poly_test /= sigma\n", + "X_poly_test = np.concatenate([np.ones((ytest.size, 1)), X_poly_test], axis=1)\n", + "\n", + "# Map X_poly_val and normalize (using mu and sigma)\n", + "X_poly_val = polyFeatures(Xval, p)\n", + "X_poly_val -= mu\n", + "X_poly_val /= sigma\n", + "X_poly_val = np.concatenate([np.ones((yval.size, 1)), X_poly_val], axis=1)\n", + "\n", + "print('Normalized Training Example 1:')\n", + "X_poly[0, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Polynomial Regression (lambda = 100.000000)\n", + "\n", + "# Training Examples\tTrain Error\tCross Validation Error\n", + " \t1\t\t0.000000\t160.721900\n", + " \t2\t\t0.000000\t160.121511\n", + " \t3\t\t0.000000\t59.071638\n", + " \t4\t\t0.000000\t77.997856\n", + " \t5\t\t0.000000\t6.449009\n", + " \t6\t\t0.000000\t10.829585\n", + " \t7\t\t0.000000\t27.930121\n", + " \t8\t\t0.025083\t9.256265\n", + " \t9\t\t0.000249\t32.402637\n", + " \t10\t\t0.032541\t28.510531\n", + " \t11\t\t0.034697\t32.120191\n", + " \t12\t\t0.031890\t34.411499\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "lambda_ = 100\n", + "theta = trainLinearReg(linearRegCostFunction, X_poly, y,\n", + " lambda_=lambda_, maxiter=55)\n", + "\n", + "# Plot training data and fit\n", + "pyplot.plot(X, y, 'ro', ms=10, mew=1.5, mec='k')\n", + "\n", + "plotFit(polyFeatures, np.min(X), np.max(X), mu, sigma, theta, p)\n", + "\n", + "pyplot.xlabel('Change in water level (x)')\n", + "pyplot.ylabel('Water flowing out of the dam (y)')\n", + "pyplot.title('Polynomial Regression Fit (lambda = %f)' % lambda_)\n", + "pyplot.ylim([-20, 50])\n", + "\n", + "pyplot.figure()\n", + "error_train, error_val = learningCurve(X_poly, y, X_poly_val, yval, lambda_)\n", + "pyplot.plot(np.arange(1, 1+m), error_train, np.arange(1, 1+m), error_val)\n", + "\n", + "pyplot.title('Polynomial Regression Learning Curve (lambda = %f)' % lambda_)\n", + "pyplot.xlabel('Number of training examples')\n", + "pyplot.ylabel('Error')\n", + "pyplot.axis([0, 13, 0, 100])\n", + "pyplot.legend(['Train', 'Cross Validation'])\n", + "\n", + "print('Polynomial Regression (lambda = %f)\\n' % lambda_)\n", + "print('# Training Examples\\tTrain Error\\tCross Validation Error')\n", + "for i in range(m):\n", + " print(' \\t%d\\t\\t%f\\t%f' % (i+1, error_train[i], error_val[i]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Phase 3 - 2020 (Summer)/Week 5(Apr 26-May 02)/Aishik Rakshit190122002 w05 ex 4.ipynb b/Phase 3 - 2020 (Summer)/Week 5(Apr 26-May 02)/Aishik Rakshit190122002 w05 ex 4.ipynb new file mode 100644 index 000000000..48ec40c40 --- /dev/null +++ b/Phase 3 - 2020 (Summer)/Week 5(Apr 26-May 02)/Aishik Rakshit190122002 w05 ex 4.ipynb @@ -0,0 +1,851 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "\n", + "# Optimization module in scipy\n", + "from scipy import optimize\n", + "\n", + "# will be used to load MATLAB mat datafile format\n", + "from scipy.io import loadmat\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "\n", + "\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def displayData(X, example_width=None, figsize=(10, 10)):\n", + " \"\"\"\n", + " Displays 2D data stored in X in a nice grid.\n", + " \"\"\"\n", + " # Compute rows, cols\n", + " if X.ndim == 2:\n", + " m, n = X.shape\n", + " elif X.ndim == 1:\n", + " n = X.size\n", + " m = 1\n", + " X = X[None] # Promote to a 2 dimensional array\n", + " else:\n", + " raise IndexError('Input X should be 1 or 2 dimensional.')\n", + "\n", + " example_width = example_width or int(np.round(np.sqrt(n)))\n", + " example_height = n / example_width\n", + "\n", + " # Compute number of items to display\n", + " display_rows = int(np.floor(np.sqrt(m)))\n", + " display_cols = int(np.ceil(m / display_rows))\n", + "\n", + " fig, ax_array = pyplot.subplots(display_rows, display_cols, figsize=figsize)\n", + " fig.subplots_adjust(wspace=0.025, hspace=0.025)\n", + "\n", + " ax_array = [ax_array] if m == 1 else ax_array.ravel()\n", + "\n", + " for i, ax in enumerate(ax_array):\n", + " # Display Image\n", + " h = ax.imshow(X[i].reshape(example_width, example_width, order='F'),\n", + " cmap='Greys', extent=[0, 1, 0, 1])\n", + " ax.axis('off')\n", + "\n", + "\n", + "def predict(Theta1, Theta2, X):\n", + " \"\"\"\n", + " Predict the label of an input given a trained neural network\n", + " Outputs the predicted label of X given the trained weights of a neural\n", + " network(Theta1, Theta2)\n", + " \"\"\"\n", + " # Useful values\n", + " m = X.shape[0]\n", + " num_labels = Theta2.shape[0]\n", + "\n", + " # You need to return the following variables correctly\n", + " p = np.zeros(m)\n", + " h1 = sigmoid(np.dot(np.concatenate([np.ones((m, 1)), X], axis=1), Theta1.T))\n", + " h2 = sigmoid(np.dot(np.concatenate([np.ones((m, 1)), h1], axis=1), Theta2.T))\n", + " p = np.argmax(h2, axis=1)\n", + " return p\n", + "\n", + "\n", + "def debugInitializeWeights(fan_out, fan_in):\n", + " \"\"\"\n", + " Initialize the weights of a layer with fan_in incoming connections and fan_out outgoings\n", + " connections using a fixed strategy. This will help you later in debugging.\n", + "\n", + " Note that W should be set a matrix of size (1+fan_in, fan_out) as the first row of W handles\n", + " the \"bias\" terms.\n", + "\n", + " Parameters\n", + " ----------\n", + " fan_out : int\n", + " The number of outgoing connections.\n", + "\n", + " fan_in : int\n", + " The number of incoming connections.\n", + "\n", + " Returns\n", + " -------\n", + " W : array_like (1+fan_in, fan_out)\n", + " The initialized weights array given the dimensions.\n", + " \"\"\"\n", + " # Initialize W using \"sin\". This ensures that W is always of the same values and will be\n", + " # useful for debugging\n", + " W = np.sin(np.arange(1, 1 + (1+fan_in)*fan_out))/10.0\n", + " W = W.reshape(fan_out, 1+fan_in, order='F')\n", + " return W\n", + "\n", + "\n", + "def computeNumericalGradient(J, theta, e=1e-4):\n", + " \"\"\"\n", + " Computes the gradient using \"finite differences\" and gives us a numerical estimate of the\n", + " gradient.\n", + "\n", + " Parameters\n", + " ----------\n", + " J : func\n", + " The cost function which will be used to estimate its numerical gradient.\n", + "\n", + " theta : array_like\n", + " The one dimensional unrolled network parameters. The numerical gradient is computed at\n", + " those given parameters.\n", + "\n", + " e : float (optional)\n", + " The value to use for epsilon for computing the finite difference.\n", + "\n", + " Notes\n", + " -----\n", + " The following code implements numerical gradient checking, and\n", + " returns the numerical gradient. It sets `numgrad[i]` to (a numerical\n", + " approximation of) the partial derivative of J with respect to the\n", + " i-th input argument, evaluated at theta. (i.e., `numgrad[i]` should\n", + " be the (approximately) the partial derivative of J with respect\n", + " to theta[i].)\n", + " \"\"\"\n", + " numgrad = np.zeros(theta.shape)\n", + " perturb = np.diag(e * np.ones(theta.shape))\n", + " for i in range(theta.size):\n", + " loss1, _ = J(theta - perturb[:, i])\n", + " loss2, _ = J(theta + perturb[:, i])\n", + " numgrad[i] = (loss2 - loss1)/(2*e)\n", + " return numgrad\n", + "\n", + "\n", + "def checkNNGradients(nnCostFunction, lambda_=0):\n", + " \"\"\"\n", + " Creates a small neural network to check the backpropagation gradients. It will output the\n", + " analytical gradients produced by your backprop code and the numerical gradients\n", + " (computed using computeNumericalGradient). These two gradient computations should result in\n", + " very similar values.\n", + "\n", + " Parameters\n", + " ----------\n", + " nnCostFunction : func\n", + " A reference to the cost function implemented by the student.\n", + "\n", + " lambda_ : float (optional)\n", + " The regularization parameter value.\n", + " \"\"\"\n", + " input_layer_size = 3\n", + " hidden_layer_size = 5\n", + " num_labels = 3\n", + " m = 5\n", + "\n", + " # We generate some 'random' test data\n", + " Theta1 = debugInitializeWeights(hidden_layer_size, input_layer_size)\n", + " Theta2 = debugInitializeWeights(num_labels, hidden_layer_size)\n", + "\n", + " # Reusing debugInitializeWeights to generate X\n", + " X = debugInitializeWeights(m, input_layer_size - 1)\n", + " y = np.arange(1, 1+m) % num_labels\n", + " # print(y)\n", + " # Unroll parameters\n", + " nn_params = np.concatenate([Theta1.ravel(), Theta2.ravel()])\n", + "\n", + " # short hand for cost function\n", + " costFunc = lambda p: nnCostFunction(p, input_layer_size, hidden_layer_size,\n", + " num_labels, X, y, lambda_)\n", + " cost, grad = costFunc(nn_params)\n", + " numgrad = computeNumericalGradient(costFunc, nn_params)\n", + "\n", + " # Visually examine the two gradient computations.The two columns you get should be very similar.\n", + " print(np.stack([numgrad, grad], axis=1))\n", + " print('The above two columns you get should be very similar.')\n", + " print('(Left-Your Numerical Gradient, Right-Analytical Gradient)\\n')\n", + "\n", + " # Evaluate the norm of the difference between two the solutions. If you have a correct\n", + " # implementation, and assuming you used e = 0.0001 in computeNumericalGradient, then diff\n", + " # should be less than 1e-9.\n", + " diff = np.linalg.norm(numgrad - grad)/np.linalg.norm(numgrad + grad)\n", + "\n", + " print('If your backpropagation implementation is correct, then \\n'\n", + " 'the relative difference will be small (less than 1e-9). \\n'\n", + " 'Relative Difference: %g' % diff)\n", + "\n", + "\n", + "def sigmoid(z):\n", + " \"\"\"\n", + " Computes the sigmoid of z.\n", + " \"\"\"\n", + " return 1.0 / (1.0 + np.exp(-z))\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# training data stored in arrays X, y\n", + "data = loadmat(r'D:\\Github\\Learning-Content\\Phase 3 - 2020 (Summer)\\Week 5(Apr 26-May 02)\\Exercise4\\Data\\ex4data1.mat')\n", + "X, y = data['X'], data['y'].ravel()\n", + "\n", + "# set the zero digit to 0, rather than its mapped 10 in this dataset\n", + "# This is an artifact due to the fact that this dataset was used in \n", + "# MATLAB where there is no index 0\n", + "y[y == 10] = 0\n", + "\n", + "# Number of training examples\n", + "m = y.size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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VatWAJL7V68/1PP/gKS7bc011wQAPPXUU3U+U0l0zTbaaKOQV111VQCFcQLJDJbzzz8fAPDMM8+EbsSIESFvueWWAJLZP3m4iHV/6fXj3HPPBQDsvvvuoXvxxRdDphtuhx12CN1cc80Vcp6uYZ3T33//HfKAAQNCPu644wAkXay6F5lh16FDh9Ax0w4ouPmbowscAJZeemkAyTktvPDCIV911VUAkq6tFVdcMeSVVlop5Ia68WzRMcYYY0zNUjaLDt+4tN6DBtC+9NJLdWS1CKjFgugb/2mnnRby4YcfnvhNoLqCVjmu+sakT//ffvttyLfeeisAYOONNw6dBu5mOVc9prqWDzzwQMiffPIJgOQboT6RM4hz+eWXD52+ES+55JIAgKWWWip0nTp1CjmPYDtdC471zz//DN3nn38eMt+odZz33ntvyAwcHTduXOj222+/1N8q11sZv3Py5Mmh45sjAEycODHkhx56CEDy/ErbU7oXdC58U+3cufMsP19O+P0a9HzkkUeGrG/0PBYa4LjAAguEzGvNW2+9FTq1fq2zzjqJ78kLPaabb755yFwXPf94TgLA119/DSAZ1N+tW7eQqc+7NovufV4TAODNN98EUEh6AJIWqcUXXxxA8pqS9/Wfa6LHVK04GljN66Pe0xZZZJGQDzzwQADJAHtaUYGkJa85wvuCWrT0+vLKK68AAFZYYYXQlXr/s0XHGGOMMTWLH3SMMcYYU7OU3XX1119/hY71EADgyy+/DJlBZmpOVTPsjz/+CAA477zzUj9P01W1BiXTfaCuATXTcfxqelUzJeW11147dGpGz8JMy2Op5mQ1vdKcCBRM37pmBx10UMjdu3cHkDSxps1fUV2WQXbFGqWqa4dBqKxHAgCvvfZayNtssw0AYMEFFwydlitfd911ASRdK7qWWbjmOK9XX301dHRRAcD2228fMtetvn2kgeBjx44NmfNmPRYgn8BI7jMgGeBN1PU455xzhsw6Jrqn1XXAvaznZ96Bn2lrpa4drbNDN8D6668fuk033TTkaqzDotcHhjYcf/zxofv5559D5vqoGzNveP5pbSddE61pdNtttwFIXh8ffPDBkOn+KlYnqTmSNn69pmhiwxdffAGgUE8OSJ6fTdm/tugYY4wxpmbxg44xxhhjapayua5oWp133nlDp/nuakZmnYd55pkndOoG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Zs8+++yQGcSqtWe0O2///v0BJIO1aa7NirQ6QVpWXwNv2UlcAyS1pkxzQV2LN910U8gMfNc6D9qdnm5IuhgB4JJLLslsnA2B54ImAFx++eUhaxA9Td4aAK9uZgb86vmpgYNp3emzQM8pyurO1rYw6sbmdUPHp9cSHgt1zW633XYhn3HGGQCyKbFfH8XcAXpeNrT2ks5Z244wcL6SLmau35QpU0Kn7kRtF8P6W0wKAJKuxc8//xxA8vq02GKLhZyH65zz0nNGZQ154L7V639a4LXuXz3/2C6DQclA0s1cyfsieeCBB0Lm9WPjjTcOnbawWG655QAkkwHUdZfF+G3RMcYYY0zN4gcdY4wxxtQsmWZdFauHQtOrZhWomZ3ZSJphoabXPEyTNC3OMcccoVMTssocn9YBYkdoALj77rsBJLNe1FxHM94777wTOjX56hjKXfpb2zZobQott85sgfnnnz906prbcccdyzKmLFBzsnaf16y4Sy+9FACw/fbbh26JJZYImXPVrLk8snJ0z7FmjK6D1ls56aSTQuZee/zxx0OnNYP4vZqdo+0wWAeE2RNA/bWPGnp81ISve/7TTz8FkDTX6/z1+/kdau7X72XXeXbJBpKuD7ok99tvv9Bp1lOl1jqtrH5D4FzVza7ZQFz/StWb0d/U67ge/169eoXMbB22qgCAyZMnh8x13W233UKn53Uerpu0tjS6Zmnnh7qzdC04P93fei6y9RHPCSBZx01remW5V/W7taYV3ZBa52jrrbcOuUOHDgCSri1t98HrSznv87boGGOMMaZmydSio+gT67Rp0wAAt956a+i0Qea2224LoFABGUg+MedZp0XnoZWRtcEl/0freLBRHVB4q2HzS6BQWRMoBG4tv/zyodM6O1nMn29/epzVCqBVLtkg8IADDgidBkszCF2DtfOurZP29soK1ADw7LPPhswgXX2LYrVdoBCYrMGEaRa9rEmz6OjbXL9+/UJee+21Q2bNHK1Ge+GFF4ZM643O/5prrgn5scceAwDsueeeodPAbA2i5xi15ses0HXSYFReH1gvCGjc22ra/6rFY6211gqZFcn1nFaLTqXQAE21fjOYuphFhsdcLZYaeM/6M5W0QvKc0KBxrYysVdY5P01wOPbYY0OmdVWte3k3QOY5peukY1LrKs8b3ctqHWYzXd1/WiWfSRL6d23a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U8suu2zIl112GQBg4sSJoaM7AQDuvfdeAMA222wTuh49eoScR7ZLmrtC569w/+nf9fzjvNUFoP+ra02XXSX39JtvvgkAOOyww0KnbqwuXboAKGSvAAV3FgCcc845AJLujrvvvjvkOeaYI+Ryz0vXSfeXui6mTZsGoLi7hWPSvzNTCyi4uarp+qlwL+meUtcb0XueHjcen8svvzx0uv5HHnlknd/KYv7F3JC77bYbAODTTz8N3bXXXhvyFltsASC5z3T+AwcOBJB0fen/7rTTTnXGUq+7b5Z/NcYYY4xpxmRq0SkWFEbrzSWXXBK6Bx98MOQFF1wQANCuXbvQff755yE/88wzAICnnnoqdKusskrIeddPSHsT+f3330P+9ddfAQA//fRT6K6//vqQ+XaiVoTFF1885EpZDHT9tM4Fg1BffPHF0C2yyCIh842jOZFmcbzoootCp28RtIi88cYboTvvvPOyHWAT0LcctX4yWHzNNdcM3TLLLBMyrTv6ea1p0bdvXwBJiwDf0ipJ2poBhfNj8uTJoVOLBs87BkUCyTosI0eOBADMNddcodP/1ZofN910E4DsrzlqceJ1QS2OxxxzTMgnn3wygOT41WJyxhlnAEhaWdu2bRtyltYP/W69ZujbO+uvFEsG+OqrrwAAr776auh69+4d8o033ggA2HXXXVN/Nw90LpyfJgCoRWbbbbcFUKh3BCSDsWmRe+WVV0Kn9woNLOe+zGL+ev716dMnZO7LoUOHhq579+4hp1mZ9LvoKfjkk09CN2zYsJB79eoVslqlZ4UtOsYYY4ypWfygY4wxxpiapeyuq2LmZK25wjoOaro7+OCDQz7hhBMAJN01d955Z52/a7DTqquuWvLYG0JD6m2MGzcOADBq1KjQDR8+PGSaXPXzacHINNECSTdepdDxabAfzaR777136LTc97fffgsAaNOmTdZDLBs61z/++ANA0t247rrrhtyvXz8AyToy1Yi6OM8999yQeV4WC/bk51566aXQaTAyTeprrLFG6CrlGkhrLgoATzzxRMh0bev1Rc38NOeru2m++eYLmW7IzTbbLHTa4mTEiBGpY8gSrVPEwHId39Zbbx0y10eTOfT4EL1mauBrlm44PV6LLbZYyHTHAPU39WSQeLH7B4Pld9xxx9DlEZisvzllypSQTzvtNACFVhZAck9x/XScev4x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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Randomly select 100 data points to display\n", + "rand_indices = np.random.choice(m, 100, replace=False)\n", + "sel = X[rand_indices, :]\n", + "\n", + "displayData(sel)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 0, ..., 9, 9, 9], dtype=uint8)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setup the parameters you will use for this exercise\n", + "input_layer_size = 400 # 20x20 Input Images of Digits\n", + "hidden_layer_size = 25 # 25 hidden units\n", + "num_labels = 10 # 10 labels, from 0 to 9\n", + "\n", + "# Load the weights into variables Theta1 and Theta2\n", + "weights = loadmat(r'D:\\Github\\Learning-Content\\Phase 3 - 2020 (Summer)\\Week 5(Apr 26-May 02)\\Exercise4\\Data\\ex4weights.mat')\n", + "\n", + "# Theta1 has size 25 x 401\n", + "# Theta2 has size 10 x 26\n", + "Theta1, Theta2 = weights['Theta1'], weights['Theta2']\n", + "\n", + "# swap first and last columns of Theta2, due to legacy from MATLAB indexing, \n", + "# since the weight file ex3weights.mat was saved based on MATLAB indexing\n", + "Theta2 = np.roll(Theta2, 1, axis=0)\n", + "\n", + "# Unroll parameters \n", + "nn_params = np.concatenate([Theta1.ravel(), Theta2.ravel()])\n", + "y" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "y_=np.reshape(y,(m,1))\n", + "y_1=np.tile(y_,(1,num_labels))\n", + "y_2=np.tile(np.arange(0,num_labels),(m,1))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "#y_matrix=np.zeros((5000,10))\n", + "#for i in range(0,m):\n", + " # for j in range(0,num_labels):\n", + " # y_matrix[i,j]=int(y_1[i,j]==y_2[(i,j)])\n", + "#np.shape(y_matrix) " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoidGradient(z):\n", + " \"\"\"\n", + " Computes the gradient of the sigmoid function evaluated at z. \n", + " This should work regardless if z is a matrix or a vector. \n", + " In particular, if z is a vector or matrix, you should return\n", + " the gradient for each element.\n", + " \n", + " Parameters\n", + " ----------\n", + " z : array_like\n", + " A vector or matrix as input to the sigmoid function. \n", + " \n", + " Returns\n", + " --------\n", + " g : array_like\n", + " Gradient of the sigmoid function. Has the same shape as z. \n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the gradient of the sigmoid function evaluated at\n", + " each value of z (z can be a matrix, vector or scalar).\n", + " \n", + " Note\n", + " ----\n", + " We have provided an implementation of the sigmoid function \n", + " in `utils.py` file accompanying this assignment.\n", + " \"\"\"\n", + "\n", + " g = np.zeros(np.shape(z))\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + "\n", + " g=sigmoid(z)*(1-sigmoid(z))\n", + "\n", + " # =============================================================\n", + " return g" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def nnCostFunction(nn_params,\n", + " input_layer_size,\n", + " hidden_layer_size,\n", + " num_labels,\n", + " X, y, lambda_=0.0):\n", + " \"\"\"\n", + " Implements the neural network cost function and gradient for a two layer neural \n", + " network which performs classification. \n", + " \n", + " Parameters\n", + " ----------\n", + " nn_params : array_like\n", + " The parameters for the neural network which are \"unrolled\" into \n", + " a vector. This needs to be converted back into the weight matrices Theta1\n", + " and Theta2.\n", + " \n", + " input_layer_size : int\n", + " Number of features for the input layer. \n", + " \n", + " hidden_layer_size : int\n", + " Number of hidden units in the second layer.\n", + " \n", + " num_labels : int\n", + " Total number of labels, or equivalently number of units in output layer. \n", + " \n", + " X : array_like\n", + " Input dataset. A matrix of shape (m x input_layer_size).\n", + " \n", + " y : array_like\n", + " Dataset labels. A vector of shape (m,).\n", + " \n", + " lambda_ : float, optional\n", + " Regularization parameter.\n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The computed value for the cost function at the current weight values.\n", + " \n", + " grad : array_like\n", + " An \"unrolled\" vector of the partial derivatives of the concatenatation of\n", + " neural network weights Theta1 and Theta2.\n", + " \n", + " Instructions\n", + " ------------\n", + " You should complete the code by working through the following parts.\n", + " \n", + " - Part 1: Feedforward the neural network and return the cost in the \n", + " variable J. After implementing Part 1, you can verify that your\n", + " cost function computation is correct by verifying the cost\n", + " computed in the following cell.\n", + " \n", + " - Part 2: Implement the backpropagation algorithm to compute the gradients\n", + " Theta1_grad and Theta2_grad. You should return the partial derivatives of\n", + " the cost function with respect to Theta1 and Theta2 in Theta1_grad and\n", + " Theta2_grad, respectively. After implementing Part 2, you can check\n", + " that your implementation is correct by running checkNNGradients provided\n", + " in the utils.py module.\n", + " \n", + " Note: The vector y passed into the function is a vector of labels\n", + " containing values from 0..K-1. You need to map this vector into a \n", + " binary vector of 1's and 0's to be used with the neural network\n", + " cost function.\n", + " \n", + " Hint: We recommend implementing backpropagation using a for-loop\n", + " over the training examples if you are implementing it for the \n", + " first time.\n", + " \n", + " - Part 3: Implement regularization with the cost function and gradients.\n", + " \n", + " Hint: You can implement this around the code for\n", + " backpropagation. That is, you can compute the gradients for\n", + " the regularization separately and then add them to Theta1_grad\n", + " and Theta2_grad from Part 2.\n", + " \n", + " Note \n", + " ----\n", + " We have provided an implementation for the sigmoid function in the file \n", + " `utils.py` accompanying this assignment.\n", + " \"\"\"\n", + " # Reshape nn_params back into the parameters Theta1 and Theta2, the weight matrices\n", + " # for our 2 layer neural network\n", + " Theta1 = np.reshape(nn_params[:hidden_layer_size * (input_layer_size + 1)],\n", + " (hidden_layer_size, (input_layer_size + 1)))\n", + "\n", + " Theta2 = np.reshape(nn_params[(hidden_layer_size * (input_layer_size + 1)):],\n", + " (num_labels, (hidden_layer_size + 1)))\n", + "\n", + " # Setup some useful variables\n", + " m = y.size\n", + " \n", + " # You need to return the following variables correctly \n", + " J = 0\n", + " Theta1_grad = np.zeros(Theta1.shape)\n", + " Theta2_grad = np.zeros(Theta2.shape)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " a1=np.concatenate((np.ones((m,1)),X),axis=1)\n", + " z1=a1@Theta1.transpose()\n", + " a2=sigmoid(z1)\n", + " a2=np.concatenate((np.ones((np.shape(a2)[0],1)),a2),axis=1)\n", + " z2=a2@Theta2.transpose()\n", + " a3=sigmoid(z2)\n", + " \n", + " y_matrix = y.reshape(-1)\n", + " y_matrix = np.eye(num_labels)[y_matrix]\n", + " \n", + " temp1 = Theta1\n", + " temp2 = Theta2\n", + " reg_term = (lambda_ / (2 * m)) * (np.sum(np.square(temp1[:, 1:])) + np.sum(np.square(temp2[:, 1:])))\n", + " \n", + " J = (-1 / m) * np.sum((np.log(a3) * y_matrix) + np.log(1 - a3) * (1 - y_matrix)) + reg_term\n", + " del1=np.zeros(np.shape(Theta1));\n", + " del2=np.zeros(np.shape(Theta2));\n", + " del3=y_matrix-a3\n", + " \n", + " del2=del3@Theta2[:,1:]*sigmoidGradient(a1@Theta1.transpose())\n", + " \n", + " delta2=del3.transpose()@a2\n", + " delta1=del2.transpose()@a1\n", + " \n", + " Theta1_grad=(1/m)*delta1\n", + " Theta1_grad[:,1:]=Theta1_grad[:,1:]+(lambda_/m)*Theta1[:,1:]\n", + " Theta2_grad=(1/m)*delta2\n", + " Theta2_grad[:,1:]=Theta2_grad[:,1:]+(lambda_/m)*Theta2[:,1:]\n", + " # ================================================================\n", + " # Unroll gradients\n", + " # grad = np.concatenate([Theta1_grad.ravel(order=order), Theta2_grad.ravel(order=order)])\n", + " grad = np.concatenate([Theta1_grad.ravel(), Theta2_grad.ravel()])\n", + "\n", + " return J, grad" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at parameters (loaded from ex4weights): 0.287629 \n", + "The cost should be about : 0.287629.\n" + ] + } + ], + "source": [ + "lambda_ = 0\n", + "J, _ = nnCostFunction(nn_params, input_layer_size, hidden_layer_size,\n", + " num_labels, X, y, lambda_)\n", + "print('Cost at parameters (loaded from ex4weights): %.6f ' % J)\n", + "print('The cost should be about : 0.287629.')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at parameters (loaded from ex4weights): 0.383770\n", + "This value should be about : 0.383770.\n" + ] + } + ], + "source": [ + "# Weight regularization parameter (we set this to 1 here).\n", + "lambda_ = 1\n", + "J, _ = nnCostFunction(nn_params, input_layer_size, hidden_layer_size,\n", + " num_labels, X, y, lambda_)\n", + "\n", + "print('Cost at parameters (loaded from ex4weights): %.6f' % J)\n", + "print('This value should be about : 0.383770.')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def randInitializeWeights(L_in, L_out, epsilon_init=0.12):\n", + " \"\"\"\n", + " Randomly initialize the weights of a layer in a neural network.\n", + " \n", + " Parameters\n", + " ----------\n", + " L_in : int\n", + " Number of incomming connections.\n", + " \n", + " L_out : int\n", + " Number of outgoing connections. \n", + " \n", + " epsilon_init : float, optional\n", + " Range of values which the weight can take from a uniform \n", + " distribution.\n", + " \n", + " Returns\n", + " -------\n", + " W : array_like\n", + " The weight initialiatized to random values. Note that W should\n", + " be set to a matrix of size(L_out, 1 + L_in) as\n", + " the first column of W handles the \"bias\" terms.\n", + " \n", + " Instructions\n", + " ------------\n", + " Initialize W randomly so that we break the symmetry while training\n", + " the neural network. Note that the first column of W corresponds \n", + " to the parameters for the bias unit.\n", + " \"\"\"\n", + "\n", + " # You need to return the following variables correctly \n", + " W = np.zeros((L_out, 1 + L_in))\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + "\n", + "\n", + " W=np.random.rand(L_out,L_in+1)*2*epsilon_init - epsilon_init\n", + " # ============================================================\n", + " return W" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initializing Neural Network Parameters ...\n" + ] + } + ], + "source": [ + "print('Initializing Neural Network Parameters ...')\n", + "\n", + "initial_Theta1 = randInitializeWeights(input_layer_size, hidden_layer_size)\n", + "initial_Theta2 = randInitializeWeights(hidden_layer_size, num_labels)\n", + "\n", + "# Unroll parameters\n", + "initial_nn_params = np.concatenate([initial_Theta1.ravel(), initial_Theta2.ravel()], axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-9.27825235e-03 9.27825236e-03]\n", + " [-3.04978709e-06 3.04978914e-06]\n", + " [-1.75060084e-04 1.75060082e-04]\n", + " [-9.62660640e-05 9.62660620e-05]\n", + " [ 8.89911959e-03 -8.89911960e-03]\n", + " [ 1.42869450e-05 -1.42869443e-05]\n", + " [ 2.33146358e-04 -2.33146357e-04]\n", + " [ 1.17982666e-04 -1.17982666e-04]\n", + " [-8.36010761e-03 8.36010762e-03]\n", + " [-2.59383093e-05 2.59383100e-05]\n", + " [-2.87468729e-04 2.87468729e-04]\n", + " [-1.37149709e-04 1.37149706e-04]\n", + " [ 7.62813550e-03 -7.62813551e-03]\n", + " [ 3.69883257e-05 -3.69883234e-05]\n", + " [ 3.35320351e-04 -3.35320347e-04]\n", + " [ 1.53247082e-04 -1.53247082e-04]\n", + " [-6.74798369e-03 6.74798370e-03]\n", + " [-4.68759764e-05 4.68759769e-05]\n", + " [-3.76215583e-04 3.76215587e-04]\n", + " [-1.66560294e-04 1.66560294e-04]\n", + " [ 3.14544970e-01 -3.14544970e-01]\n", + " [ 1.64090819e-01 -1.64090819e-01]\n", + " [ 1.64567932e-01 -1.64567932e-01]\n", + " [ 1.58339334e-01 -1.58339334e-01]\n", + " [ 1.51127527e-01 -1.51127527e-01]\n", + " [ 1.49568335e-01 -1.49568335e-01]\n", + " [ 1.11056588e-01 -1.11056588e-01]\n", + " [ 5.75736494e-02 -5.75736493e-02]\n", + " [ 5.77867378e-02 -5.77867378e-02]\n", + " [ 5.59235296e-02 -5.59235296e-02]\n", + " [ 5.36967009e-02 -5.36967009e-02]\n", + " [ 5.31542052e-02 -5.31542052e-02]\n", + " [ 9.74006970e-02 -9.74006970e-02]\n", + " [ 5.04575855e-02 -5.04575855e-02]\n", + " [ 5.07530173e-02 -5.07530173e-02]\n", + " [ 4.91620841e-02 -4.91620841e-02]\n", + " [ 4.71456249e-02 -4.71456249e-02]\n", + " [ 4.65597186e-02 -4.65597186e-02]]\n", + "The above two columns you get should be very similar.\n", + "(Left-Your Numerical Gradient, Right-Analytical Gradient)\n", + "\n", + "If your backpropagation implementation is correct, then \n", + "the relative difference will be small (less than 1e-9). \n", + "Relative Difference: 4.14102e+10\n" + ] + } + ], + "source": [ + "checkNNGradients(nnCostFunction)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-9.27825235e-03 9.27825236e-03]\n", + " [-1.67679797e-02 -1.67618801e-02]\n", + " [-6.01744725e-02 -5.98243523e-02]\n", + " [-1.73704651e-02 -1.71779329e-02]\n", + " [ 8.89911959e-03 -8.89911960e-03]\n", + " [ 3.94334829e-02 3.94049090e-02]\n", + " [-3.19612287e-02 -3.24275214e-02]\n", + " [-5.75658668e-02 -5.78018322e-02]\n", + " [-8.36010761e-03 8.36010762e-03]\n", + " [ 5.93355565e-02 5.93874331e-02]\n", + " [ 2.49225535e-02 2.54974909e-02]\n", + " [-4.51963845e-02 -4.49220851e-02]\n", + " [ 7.62813550e-03 -7.62813551e-03]\n", + " [ 2.47640974e-02 2.46901208e-02]\n", + " [ 5.97717617e-02 5.91011210e-02]\n", + " [ 9.14587966e-03 8.83938550e-03]\n", + " [-6.74798369e-03 6.74798370e-03]\n", + " [-3.26881426e-02 -3.25943907e-02]\n", + " [ 3.86410548e-02 3.93934860e-02]\n", + " [ 5.46101547e-02 5.49432753e-02]\n", + " [ 3.14544970e-01 -3.14544970e-01]\n", + " [ 1.18682669e-01 -2.09498969e-01]\n", + " [ 2.03987128e-01 -1.25148736e-01]\n", + " [ 1.25698067e-01 -1.90980601e-01]\n", + " [ 1.76337550e-01 -1.25917505e-01]\n", + " [ 1.32294136e-01 -1.66842534e-01]\n", + " [ 1.11056588e-01 -1.11056588e-01]\n", + " [ 3.81928689e-05 -1.15109106e-01]\n", + " [ 1.17148233e-01 1.57475695e-03]\n", + " [-4.07588279e-03 -1.15922942e-01]\n", + " [ 1.13133142e-01 5.73974043e-03]\n", + " [-4.52964427e-03 -1.10838055e-01]\n", + " [ 9.74006970e-02 -9.74006970e-02]\n", + " [ 3.36926556e-02 -6.72225154e-02]\n", + " [ 7.54801264e-02 -2.60259082e-02]\n", + " [ 1.69677090e-02 -8.13564592e-02]\n", + " [ 8.61628953e-02 -8.12835444e-03]\n", + " [ 1.50048382e-03 -9.16189534e-02]]\n", + "The above two columns you get should be very similar.\n", + "(Left-Your Numerical Gradient, Right-Analytical Gradient)\n", + "\n", + "If your backpropagation implementation is correct, then \n", + "the relative difference will be small (less than 1e-9). \n", + "Relative Difference: 2.23751\n", + "\n", + "\n", + "Cost at (fixed) debugging parameters (w/ lambda = 3.000000): 0.576051 \n", + "(for lambda = 3, this value should be about 0.576051)\n" + ] + } + ], + "source": [ + "# Check gradients by running checkNNGradients\n", + "lambda_ = 3\n", + "checkNNGradients(nnCostFunction, lambda_)\n", + "\n", + "# Also output the costFunction debugging values\n", + "debug_J, _ = nnCostFunction(nn_params, input_layer_size,\n", + " hidden_layer_size, num_labels, X, y, lambda_)\n", + "\n", + "print('\\n\\nCost at (fixed) debugging parameters (w/ lambda = %f): %f ' % (lambda_, debug_J))\n", + "print('(for lambda = 3, this value should be about 0.576051)')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# After you have completed the assignment, change the maxiter to a larger\n", + "# value to see how more training helps.\n", + "options= {'maxiter': 100}\n", + "\n", + "# You should also try different values of lambda\n", + "lambda_ = 1\n", + "\n", + "# Create \"short hand\" for the cost function to be minimized\n", + "costFunction = lambda p: nnCostFunction(p, input_layer_size,\n", + " hidden_layer_size,\n", + " num_labels, X, y, lambda_)\n", + "\n", + "# Now, costFunction is a function that takes in only one argument\n", + "# (the neural network parameters)\n", + "res = optimize.minimize(costFunction,\n", + " initial_nn_params,\n", + " jac=True,\n", + " method='TNC',\n", + " options=options)\n", + "\n", + "# get the solution of the optimization\n", + "nn_params = res.x\n", + " \n", + "# Obtain Theta1 and Theta2 back from nn_params\n", + "Theta1 = np.reshape(nn_params[:hidden_layer_size * (input_layer_size + 1)],\n", + " (hidden_layer_size, (input_layer_size + 1)))\n", + "\n", + "Theta2 = np.reshape(nn_params[(hidden_layer_size * (input_layer_size + 1)):],\n", + " (num_labels, (hidden_layer_size + 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.00628234, -0.00146306, -0.05142674, ..., -0.09994837,\n", + " -0.11065824, -0.00457264],\n", + " [ 0.09763301, -0.00979571, 0.04509217, ..., -0.10976644,\n", + " 0.01176824, 0.09969519],\n", + " [ 0.09264358, -0.03911751, 0.04035854, ..., -0.05785748,\n", + " -0.05638749, 0.085673 ],\n", + " ...,\n", + " [ 0.08179291, 0.11364726, 0.11785947, ..., 0.01273425,\n", + " 0.01405875, 0.02204611],\n", + " [-0.09570627, -0.05675888, -0.1114769 , ..., 0.00722112,\n", + " -0.05075026, -0.04881935],\n", + " [ 0.05975326, -0.08410285, -0.01892549, ..., -0.00175921,\n", + " -0.11652668, 0.09348823]])" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(Theta1[:, 1:])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}