@@ -664,28 +664,18 @@
},
"outputs" : [],
"source" : [
" # def error_function(w, Phi, t, lamb):\n " ,
" # temp_matrix = np.dot(Phi, w) - t\n " ,
" # return 0.5*np.dot(().T, \n " ,
" \n " ,
" \n " ,
" def fit_polynomial_reg(x, t, M, lamb):\n " ,
" \n " ,
" D_M = designmatrix(x, M)\n " ,
" \n " ,
" try: \n " ,
" \n " ,
" a = np.dot(D_M.T, D_M) + (np.dot( lamb, np.eye(M+1)))\n " ,
" \n " ,
" \n " ,
" b = np.dot(np.linalg.inv(a), D_M.T,)\n " ,
" \n " ,
" except Exception as e:\n " ,
" print(\" np.dot(D_M.T, D_M) + (np.dot( lamb, np.eye(M+1))):\" )\n " ,
" print(a.shape, a)\n " ,
" print(\" designmatrix:\" )\n " ,
" print(D_M.shape, D_M)\n " ,
" print(\" x.shape, t.shape, M, lamb\" )\n " ,
" print(x.shape, t.shape, M, lamb)\n " ,
" raise e\n " ,
" \n " ,
" w_ml = np.dot(b, t)\n " ,
" \n " ,
@@ -1075,7 +1065,7 @@
},
{
"cell_type" : " code" ,
"execution_count" : 40 ,
"execution_count" : 58 ,
"metadata" : {
"deletable" : false ,
"nbgrader" : {
@@ -1112,7 +1102,7 @@
" error /= (len(train_folds)+0.0)\n " ,
" if (error < best):\n " ,
" best = error\n " ,
" argbest = (m,lamb )\n " ,
" argbest = (m,exp )\n " ,
" prediction_errors[m][lamb] = error\n " ,
" \n " ,
" return argbest\n " ,
@@ -1121,14 +1111,14 @@
},
{
"cell_type" : " code" ,
"execution_count" : 41 ,
"execution_count" : 59 ,
"metadata" : {},
"outputs" : [
{
"name" : " stdout" ,
"output_type" : " stream" ,
"text" : [
" (2, -10 )\n "
" (2, 4.5399929762484854e-05 )\n "
]
}
],
@@ -1138,7 +1128,7 @@
},
{
"cell_type" : " code" ,
"execution_count" : null ,
"execution_count" : 60 ,
"metadata" : {
"deletable" : false ,
"editable" : false ,
@@ -1159,7 +1149,7 @@
},
{
"cell_type" : " code" ,
"execution_count" : null ,
"execution_count" : 61 ,
"metadata" : {},
"outputs" : [],
"source" : [
@@ -1267,7 +1257,7 @@
},
{
"cell_type" : " code" ,
"execution_count" : null ,
"execution_count" : 63 ,
"metadata" : {
"deletable" : false ,
"nbgrader" : {
@@ -1280,10 +1270,49 @@
"solution" : true
}
},
"outputs" : [],
"outputs" : [
{
"name" : " stdout" ,
"output_type" : " stream" ,
"text" : [
" 2 4.5399929762484854e-05\n "
]
},
{
"data" : {
"image/png": "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\n",
"text/plain" : [
" <Figure size 432x288 with 1 Axes>"
]
},
"metadata" : {
"needs_background" : " light"
},
"output_type" : " display_data"
}
],
"source" : [
" # YOUR CODE HERE\n " ,
" raise NotImplementedError()"
" N = 10\n " ,
" x = np.linspace(-1, 1, N)\n " ,
" t = 0.3*np.square(x) + 2.5\n " ,
" \n " ,
" m_ultimate,lamb_ultimate = find_best_m_and_lamb(x,t)\n " ,
" \n " ,
" print(m_ultimate,lamb_ultimate)\n " ,
" \n " ,
" plt.plot()\n " ,
" \n " ,
" xs = np.linspace(-1, 1, 10)\n " ,
" \n " ,
" w, Phi = fit_polynomial_reg(x, t, m_ultimate, lamb_ultimate)\n " ,
" \n " ,
" plt.plot(xs, predict(xs, w), label=\" prediction of order {}\" .format(m_ultimate))\n " ,
" plt.plot(xs, 0.3*np.square(x) + 2.5, label=\" ground thruth\" )\n " ,
" plt.scatter(x, t, label=\" data\" )\n " ,
" plt.legend()\n " ,
" \n " ,
" plt.show()\n " ,
" \n "
]
},
{
@@ -1324,11 +1353,14 @@
},
"outputs" : [],
"source" : [
" variance = 0.25\n " ,
" def gen_sine2(n):\n " ,
" # YOUR CODE HERE\n " ,
" raise NotImplementedError()\n " ,
" \n " ,
" return x, t\n "
" x = [random.uniform(0,2*np.pi) for _ in range(n)]\n " ,
" t = []\n " ,
" for x_ in x:\n " ,
" mean = np.sin(x_)\n " ,
" t.append(np.random.normal(mean, variance))\n " ,
" return np.array(x), np.array(t)\n "
]
},
{