From b872d1b324393b0f4f30bef6bc3ef8db8ae95cf4 Mon Sep 17 00:00:00 2001 From: danijoo Date: Fri, 31 Dec 2021 11:58:41 +0100 Subject: [PATCH] ex 5 --- Exercise5/exercise5.ipynb | 377 ++++++++++++++++++++++++++++++++++---- 1 file changed, 338 insertions(+), 39 deletions(-) diff --git a/Exercise5/exercise5.ipynb b/Exercise5/exercise5.ipynb index 5182c27..766b684 100755 --- a/Exercise5/exercise5.ipynb +++ b/Exercise5/exercise5.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -97,9 +97,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "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('Data', 'ex5data1.mat'))\n", @@ -138,7 +151,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -184,12 +197,25 @@ " 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", + " # J = 0\n", + " # grad = np.zeros(theta.shape)\n", "\n", " # ====================== YOUR CODE HERE ======================\n", + " hypothesis = np.tensordot(theta.T, X, axes=([0], [1]))\n", + " diff = hypothesis - y\n", "\n", + " # cost\n", + " J = np.sum( diff**2 ) + lambda_ * np.sum(theta[1:]**2)\n", + " J /= (2*m)\n", "\n", + " # repeat along new axis for vectorized gradient calculation\n", + " # (m x n ) => ( m x n x len(theta) )\n", + " diff = np.repeat(diff[..., np.newaxis], theta.shape[0], axis=1)\n", + "\n", + " # gradient\n", + " grad = np.sum(diff*X[..., np.arange(theta.shape[0])], axis=0)\n", + " grad[1:] += lambda_ * theta[1:]\n", + " grad /= m\n", "\n", " # ============================================================\n", " return J, grad" @@ -204,9 +230,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at theta = [1, 1]:\t 303.993192 \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", @@ -228,9 +264,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Submitting Solutions | Programming Exercise regularized-linear-regression-and-bias-variance\n", + "\n", + " Part Name | Score | Feedback\n", + " --------- | ----- | --------\n", + " Validation Curve | 25 / 25 | Nice work!\n", + "Regularized Linear Regression Cost Function | 0 / 25 | Your answer is incorrect.\n", + " Regularized Linear Regression Gradient | 0 / 20 | Your answer is incorrect.\n", + " Learning Curve | 0 / 10 | Your answer is incorrect.\n", + " Polynomial Feature Mapping | 0 / 20 | Your answer is incorrect.\n", + " --------------------------------\n", + " | 25 / 100 | \n", + "\n" + ] + } + ], "source": [ "grader[1] = linearRegCostFunction\n", "grader.grade()" @@ -260,9 +316,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gradient at theta = [1, 1]: [-15.303016, 598.250744] \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", @@ -280,9 +346,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Submitting Solutions | Programming Exercise regularized-linear-regression-and-bias-variance\n", + "\n", + " Part Name | Score | Feedback\n", + " --------- | ----- | --------\n", + " Validation Curve | 25 / 25 | Nice work!\n", + "Regularized Linear Regression Cost Function | 25 / 25 | Nice work!\n", + " Regularized Linear Regression Gradient | 0 / 20 | Your answer is incorrect.\n", + " Learning Curve | 0 / 10 | Your answer is incorrect.\n", + " Polynomial Feature Mapping | 0 / 20 | Your answer is incorrect.\n", + " --------------------------------\n", + " | 50 / 100 | \n", + "\n" + ] + } + ], "source": [ "grader[2] = linearRegCostFunction\n", "grader.grade()" @@ -308,9 +394,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "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", @@ -354,7 +453,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -430,14 +529,20 @@ " \"\"\"\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", - " \n", "\n", + " for i in range(1, m+1):\n", + " X_train = X[:i, ...]\n", + " y_train = y[:i]\n", + " \n", + " theta = utils.trainLinearReg(linearRegCostFunction, X_train, y_train, lambda_, 200)\n", + " \n", + " error_train[i-1] = linearRegCostFunction(X_train, y_train, theta, 0)[0]\n", + " error_val[i-1] = linearRegCostFunction(Xval, yval, theta, 0)[0]\n", " \n", " # =============================================================\n", " return error_train, error_val" @@ -456,9 +561,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "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.368911\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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", + "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", @@ -485,9 +622,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Submitting Solutions | Programming Exercise regularized-linear-regression-and-bias-variance\n", + "\n", + " Part Name | Score | Feedback\n", + " --------- | ----- | --------\n", + " Validation Curve | 25 / 25 | Nice work!\n", + "Regularized Linear Regression Cost Function | 25 / 25 | Nice work!\n", + " Regularized Linear Regression Gradient | 20 / 20 | Nice work!\n", + " Learning Curve | 0 / 10 | Your answer is incorrect.\n", + " Polynomial Feature Mapping | 0 / 20 | Your answer is incorrect.\n", + " --------------------------------\n", + " | 70 / 100 | \n", + "\n" + ] + } + ], "source": [ "grader[3] = learningCurve\n", "grader.grade()" @@ -521,7 +678,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -551,13 +708,16 @@ " 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", + " # X_poly = np.zeros((X.shape[0], p))\n", + " \n", " # ====================== YOUR CODE HERE ======================\n", - "\n", - "\n", + " \n", + " X_poly = np.repeat(X[:,0,np.newaxis], p, axis=1)\n", + " for i in range(p):\n", + " X_poly[:, i] = X_poly[:, i]**(i+1)\n", "\n", " # ============================================================\n", + "\n", " return X_poly" ] }, @@ -570,9 +730,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "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": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "p = 8\n", "\n", @@ -606,9 +785,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Submitting Solutions | Programming Exercise regularized-linear-regression-and-bias-variance\n", + "\n", + " Part Name | Score | Feedback\n", + " --------- | ----- | --------\n", + " Validation Curve | 25 / 25 | Nice work!\n", + "Regularized Linear Regression Cost Function | 25 / 25 | Nice work!\n", + " Regularized Linear Regression Gradient | 20 / 20 | Nice work!\n", + " Learning Curve | 10 / 10 | Nice work!\n", + " Polynomial Feature Mapping | 0 / 20 | Your answer is incorrect.\n", + " --------------------------------\n", + " | 80 / 100 | \n", + "\n" + ] + } + ], "source": [ "grader[4] = polyFeatures\n", "grader.grade()" @@ -645,9 +844,55 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Polynomial Regression (lambda = 0.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.071639\n", + " \t4\t\t0.000000\t77.997739\n", + " \t5\t\t0.000000\t6.450042\n", + " \t6\t\t0.000000\t10.829280\n", + " \t7\t\t0.000000\t27.916159\n", + " \t8\t\t0.000001\t21.245381\n", + " \t9\t\t0.000318\t33.289891\n", + " \t10\t\t0.014776\t73.762624\n", + " \t11\t\t0.036160\t33.792066\n", + " \t12\t\t0.033456\t41.458105\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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GThwIH/5y19qtS0/WUJJNZZQTBKbNWsWWVlZTJgwoXxZv379GDx4MLNnz+bkk0/mRz/6Eb179wbg3nvvpVevXvTq1YtJkyYBsGPHDk4//XT69u1Lr169eP755wG4+eab6dGjB3369DlsjhWAcePG8dxzz5Xff+655xg3bhwAr7/+OoMGDaJ///4MHz78sAQHbv6Wu+++G4AFCxaUD5n/4IMPlq+zcuVKBg8eXD6o5Ycfflge25w5c+jXrx/33Xcfs2fP5owzzgBg8+bNnH322fTp04fjjjuOxYsXl+/vxz/+MUOHDqVTp04JkYBs6JVUk9celv7bJtoydffWzbDuv9HdZpvecNrEsA9//vnnHH300WEfnzdvHp9//jkdO3ZkwYIFTJ48mY8//hhVZdCgQQwZMoTly5fTtm1b3njjDcANYb9582amTp3KV199hYiwdevWw7Z94YUX0r9/f/7617+SmZnJ888/z4svvgi4OVY++ugjRIRHH32U//u//+Oee+4JG+cVV1zBX//6V4YMGcKNN95YvrxVq1bMnDmT7OxsiouLGTduHPPnz2fixIncfffdTJs2DYDZs2eXP+f222+nf//+vPLKK7z77rtceuml5ZOQffXVV8yaNYvS0lK6devGz372M7KyssLGFWtWQkk1efmwbyfs2uJ3JMZE3bHHHkvHjh0BmDt3Lueccw6NGjWicePGnHvuucyZM4fevXvz73//m5tuuok5c+aQl5dHbm4u2dnZXHnllbz88svk5OQctu02bdrQs2dP3nnnHRYuXEhWVlb5tY/Vq1czcuRIevfuzV133cUXX3wRNsaSkhK2bt3KkCFDALjkkkvKH9u3bx8//elP6d27NxdccEGlQ+5XNHfu3PJtDBs2jE2bNlFSUgLA6aefToMGDWjZsiWtWrWqtOQUT1ZCSTWhE23lNPc3FpPcqihJxErPnj156aWXwj4eOoR9uHEICwoKWLBgAW+++Sa33HILp556Krfddhvz5s3jnXfe4bnnnuOBBx7g3XcPH/MuWO3VunXr8uougKuvvprrrruOs846i9mzZ3PHHXeEjVFVkTC1A/fddx+tW7dm0aJFHDhwgOzs7LDbqeo4g9tv0KBB+bJEGJ7fSiipxvqimCQ2bNgw9uzZwyOPPFK+7JNPPuG99947bN2TTjqJV155hZ07d7Jjxw6mTp3K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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "lambda_ = 0\n", "theta = utils.trainLinearReg(linearRegCostFunction, X_poly, y,\n", @@ -723,7 +968,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -795,7 +1040,11 @@ "\n", " # ====================== YOUR CODE HERE ======================\n", "\n", + " for idx, lambda_ in enumerate(lambda_vec):\n", + " theta = utils.trainLinearReg(linearRegCostFunction, X, y, lambda_)\n", "\n", + " error_train[idx] = linearRegCostFunction(X, y, theta, 0)[0]\n", + " error_val[idx] = linearRegCostFunction(Xval, yval, theta, 0)[0]\n", "\n", " # ============================================================\n", " return lambda_vec, error_train, error_val" @@ -815,9 +1064,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lambda\t\tTrain Error\tValidation Error\n", + " 0.000000\t0.033456\t41.458105\n", + " 0.001000\t0.112727\t9.880672\n", + " 0.003000\t0.170895\t16.324383\n", + " 0.010000\t0.221481\t16.950407\n", + " 0.030000\t0.281858\t12.828912\n", + " 0.100000\t0.459318\t7.587062\n", + " 0.300000\t0.921763\t4.636828\n", + " 1.000000\t2.076200\t4.260602\n", + " 3.000000\t4.901379\t3.822918\n", + " 10.000000\t16.092273\t9.945554\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "lambda_vec, error_train, error_val = validationCurve(X_poly, y, X_poly_val, yval)\n", "\n", @@ -840,9 +1119,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Submitting Solutions | Programming Exercise regularized-linear-regression-and-bias-variance\n", + "\n", + " Part Name | Score | Feedback\n", + " --------- | ----- | --------\n", + " Validation Curve | 25 / 25 | Nice work!\n", + "Regularized Linear Regression Cost Function | 25 / 25 | Nice work!\n", + " Regularized Linear Regression Gradient | 20 / 20 | Nice work!\n", + " Learning Curve | 10 / 10 | Nice work!\n", + " Polynomial Feature Mapping | 20 / 20 | Nice work!\n", + " --------------------------------\n", + " | 100 / 100 | \n", + "\n" + ] + } + ], "source": [ "grader[5] = validationCurve\n", "grader.grade()"