Cherry pick pretty plots
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 581 KiB After Width: | Height: | Size: 111 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+36
-24
@@ -53,6 +53,7 @@
|
|||||||
"x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n",
|
"x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"fig, ax = plotting.scatter_dataset(x_train, x_test, y_train, y_test)\n",
|
"fig, ax = plotting.scatter_dataset(x_train, x_test, y_train, y_test)\n",
|
||||||
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"data_scatter.png\"), dpi=300)"
|
"fig.savefig(os.path.join(FIG_DIR, \"data_scatter.png\"), dpi=300)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -101,6 +102,7 @@
|
|||||||
"fig, ax = plotting.mse_r2_plot(\n",
|
"fig, ax = plotting.mse_r2_plot(\n",
|
||||||
" polynomial_degrees, train_mse_list, mse_list, train_r2_list, r2_list\n",
|
" polynomial_degrees, train_mse_list, mse_list, train_r2_list, r2_list\n",
|
||||||
")\n",
|
")\n",
|
||||||
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"ols_mse_r2.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"ols_mse_r2.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -112,6 +114,7 @@
|
|||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"fig, ax = plotting.parameter_plot(polynomial_degrees, beta_OLS_list)\n",
|
"fig, ax = plotting.parameter_plot(polynomial_degrees, beta_OLS_list)\n",
|
||||||
|
"# fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"ols_parameter_plot.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"ols_parameter_plot.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -165,6 +168,7 @@
|
|||||||
" train_r2_ridge_list,\n",
|
" train_r2_ridge_list,\n",
|
||||||
" r2_ridge_list,\n",
|
" r2_ridge_list,\n",
|
||||||
")\n",
|
")\n",
|
||||||
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"ridge_mse_r2.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"ridge_mse_r2.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -222,6 +226,7 @@
|
|||||||
")\n",
|
")\n",
|
||||||
"for ax in axs:\n",
|
"for ax in axs:\n",
|
||||||
" ax.set_xscale(\"log\")\n",
|
" ax.set_xscale(\"log\")\n",
|
||||||
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"ridge_mse_r2_lambda.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"ridge_mse_r2_lambda.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -249,6 +254,7 @@
|
|||||||
"ax.set_xticklabels(\n",
|
"ax.set_xticklabels(\n",
|
||||||
" [f\"${format_number(tick)}$\" for tick in lambda_values[::3]], rotation=45\n",
|
" [f\"${format_number(tick)}$\" for tick in lambda_values[::3]], rotation=45\n",
|
||||||
")\n",
|
")\n",
|
||||||
|
"\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"ridge_parameter_plot.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"ridge_parameter_plot.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -260,7 +266,7 @@
|
|||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"lambda_values = np.logspace(-5, 3, 60)\n",
|
"lambda_values = np.logspace(-5, 3, 60)\n",
|
||||||
"polynomial_degrees = np.arange(1, 31, dtype=int)\n",
|
"polynomial_degrees = np.arange(3, 20, dtype=int)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"test_mse_ridge_list = np.zeros((len(polynomial_degrees), len(lambda_values)))\n",
|
"test_mse_ridge_list = np.zeros((len(polynomial_degrees), len(lambda_values)))\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -312,7 +318,7 @@
|
|||||||
"X_tr, X_te = datamanip.scale_data(X_train, X_test)\n",
|
"X_tr, X_te = datamanip.scale_data(X_train, X_test)\n",
|
||||||
"y_tr, y_te = datamanip.scale_data(y_train, y_test)\n",
|
"y_tr, y_te = datamanip.scale_data(y_train, y_test)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"fig, (ax1, ax2) = plt.subplots(1, 2, figsize=plotting.get_figsize(0.5))\n",
|
"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=plotting.get_figsize(1.0))\n",
|
||||||
"num_iters = 1_000\n",
|
"num_iters = 1_000\n",
|
||||||
"\n",
|
"\n",
|
||||||
"learning_rates = np.logspace(-4, 0, 5)\n",
|
"learning_rates = np.logspace(-4, 0, 5)\n",
|
||||||
@@ -339,7 +345,7 @@
|
|||||||
"plotting.plot_optimizers(ax2, ridge_optimizers, X_tr, y_tr, \"Ridge Cost\", labels=labels)\n",
|
"plotting.plot_optimizers(ax2, ridge_optimizers, X_tr, y_tr, \"Ridge Cost\", labels=labels)\n",
|
||||||
"ax1.set_ylim(bottom=0.465, top=0.505)\n",
|
"ax1.set_ylim(bottom=0.465, top=0.505)\n",
|
||||||
"ax2.set_ylim(bottom=0.4775, top=0.505)\n",
|
"ax2.set_ylim(bottom=0.4775, top=0.505)\n",
|
||||||
"fig.tight_layout()\n",
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"gradient_descent_convergence.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"gradient_descent_convergence.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -350,7 +356,7 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=plotting.get_figsize(0.8))\n",
|
"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=plotting.get_figsize(1.0))\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X_train = datamanip.polynomial_features(x_train, 10, False)\n",
|
"X_train = datamanip.polynomial_features(x_train, 10, False)\n",
|
||||||
"X_test = datamanip.polynomial_features(x_test, 10, False)\n",
|
"X_test = datamanip.polynomial_features(x_test, 10, False)\n",
|
||||||
@@ -393,7 +399,7 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"ax1.set_ylim(bottom=0.465, top=0.505)\n",
|
"ax1.set_ylim(bottom=0.465, top=0.505)\n",
|
||||||
"ax2.set_ylim(bottom=0.4775, top=0.505)\n",
|
"ax2.set_ylim(bottom=0.4775, top=0.505)\n",
|
||||||
"fig.tight_layout()\n",
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"optimizer_comparison.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"optimizer_comparison.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -404,7 +410,7 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"fig, ax = plt.subplots(figsize=plotting.get_figsize(0.5))\n",
|
"fig, ax = plt.subplots(figsize=plotting.get_figsize(0.6))\n",
|
||||||
"\n",
|
"\n",
|
||||||
"ols_adam = optimizers.OLSAdam(learning_rate=0.01, beta1=0.9, beta2=0.999)\n",
|
"ols_adam = optimizers.OLSAdam(learning_rate=0.01, beta1=0.9, beta2=0.999)\n",
|
||||||
"ridge_adam = optimizers.RidgeAdam(learning_rate=0.01, beta1=0.9, beta2=0.999, lam=0.1)\n",
|
"ridge_adam = optimizers.RidgeAdam(learning_rate=0.01, beta1=0.9, beta2=0.999, lam=0.1)\n",
|
||||||
@@ -435,7 +441,7 @@
|
|||||||
"]\n",
|
"]\n",
|
||||||
"labels += [\"Adam Opt.\", \"Grad. Desc.\"]\n",
|
"labels += [\"Adam Opt.\", \"Grad. Desc.\"]\n",
|
||||||
"ax.legend(handles, labels)\n",
|
"ax.legend(handles, labels)\n",
|
||||||
"fig.tight_layout()\n",
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"cost_function_comparison.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"cost_function_comparison.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -488,7 +494,7 @@
|
|||||||
"fig, ax = plotting.optimization_performance_evaluation(\n",
|
"fig, ax = plotting.optimization_performance_evaluation(\n",
|
||||||
" optimizer_list, labels, X_tr, y_tr\n",
|
" optimizer_list, labels, X_tr, y_tr\n",
|
||||||
")\n",
|
")\n",
|
||||||
"fig.tight_layout()\n",
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"optimization_performance.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"optimization_performance.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -500,7 +506,7 @@
|
|||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"X_size = 1_000_000\n",
|
"X_size = 1_000_000\n",
|
||||||
"num_epochs = 1000\n",
|
"num_epochs = 500\n",
|
||||||
"batches_per_epoch = 100\n",
|
"batches_per_epoch = 100\n",
|
||||||
"batch_size = 128\n",
|
"batch_size = 128\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -566,23 +572,27 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"labels = [\"SGD\", \"Mom. SGD\", \"AdaGrad\", \"RMSProp\", \"Adam\"]\n",
|
"labels = [\"SGD\", \"Mom. SGD\", \"AdaGrad\", \"RMSProp\", \"Adam\"]\n",
|
||||||
"\n",
|
"\n",
|
||||||
"fig, axs = plt.subplots(1, 3, figsize=plotting.get_figsize(0.5), sharey=True)\n",
|
"fig, axs = plt.subplots(\n",
|
||||||
"plotting.plot_optimizers(\n",
|
" 3, 1, figsize=plotting.get_figsize(1.0, full_width=False), sharex=True\n",
|
||||||
" axs[0], optimizers_ols, X_tr, y_tr, ylabel=\"Average Cost per Epoch\", labels=labels\n",
|
|
||||||
")\n",
|
")\n",
|
||||||
"plotting.plot_optimizers(\n",
|
"plotting.plot_optimizers(\n",
|
||||||
" axs[1], optimizers_ridge, X_tr, y_tr, ylabel=None, labels=labels\n",
|
" axs[0], optimizers_ols, X_tr, y_tr, ylabel=\"OLS Cost\", labels=labels\n",
|
||||||
")\n",
|
")\n",
|
||||||
"plotting.plot_optimizers(\n",
|
"plotting.plot_optimizers(\n",
|
||||||
" axs[2], optimizers_lasso, X_tr, y_tr, ylabel=None, labels=labels\n",
|
" axs[1], optimizers_ridge, X_tr, y_tr, ylabel=\"Ridge Cost\", labels=labels\n",
|
||||||
|
")\n",
|
||||||
|
"plotting.plot_optimizers(\n",
|
||||||
|
" axs[2], optimizers_lasso, X_tr, y_tr, ylabel=\"LASSO Cost\", labels=labels\n",
|
||||||
")\n",
|
")\n",
|
||||||
"for ax in axs:\n",
|
"for ax in axs:\n",
|
||||||
" ax.set_xlabel(\"Epoch\")\n",
|
" ax.set_xlabel(None)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"axs[0].set_title(\"OLS\")\n",
|
"axs[2].set_xlabel(\"Epoch\")\n",
|
||||||
"axs[1].set_title(\"Ridge\")\n",
|
"\n",
|
||||||
"axs[2].set_title(\"LASSO\")\n",
|
"# axs[0].set_title(\"OLS\")\n",
|
||||||
"fig.tight_layout()\n",
|
"# axs[1].set_title(\"Ridge\")\n",
|
||||||
|
"# axs[2].set_title(\"LASSO\")\n",
|
||||||
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"stochastic_gradient_descent_convergence.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"stochastic_gradient_descent_convergence.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -674,7 +684,7 @@
|
|||||||
"ax.set_ylabel(\"Error\")\n",
|
"ax.set_ylabel(\"Error\")\n",
|
||||||
"ax.legend()\n",
|
"ax.legend()\n",
|
||||||
"\n",
|
"\n",
|
||||||
"fig.tight_layout()\n",
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"bias_variance_tradeoff.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"bias_variance_tradeoff.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -709,7 +719,9 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"fig, (ax, ax2) = plt.subplots(1, 2, figsize=plotting.get_figsize(0.5), sharey=True)\n",
|
"fig, (ax, ax2) = plt.subplots(\n",
|
||||||
|
" 1, 2, figsize=plotting.get_figsize(0.35, True), sharey=True\n",
|
||||||
|
")\n",
|
||||||
"mse_mean = np.mean(mses, axis=1)\n",
|
"mse_mean = np.mean(mses, axis=1)\n",
|
||||||
"bias_mean = np.mean(biases, axis=1)\n",
|
"bias_mean = np.mean(biases, axis=1)\n",
|
||||||
"var_mean = np.mean(variances, axis=1)\n",
|
"var_mean = np.mean(variances, axis=1)\n",
|
||||||
@@ -768,7 +780,7 @@
|
|||||||
"ax2.set_xlabel(\"Polynomial Degree\")\n",
|
"ax2.set_xlabel(\"Polynomial Degree\")\n",
|
||||||
"# ax2.set_ylabel(\"Mean Squared Error\")\n",
|
"# ax2.set_ylabel(\"Mean Squared Error\")\n",
|
||||||
"ax2.legend()\n",
|
"ax2.legend()\n",
|
||||||
"fig.tight_layout()\n",
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"bias_variance_tradeoff_combined_plot.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"bias_variance_tradeoff_combined_plot.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -838,9 +850,9 @@
|
|||||||
" )\n",
|
" )\n",
|
||||||
"\n",
|
"\n",
|
||||||
"ax.set_xlabel(\"Polynomial Degree\")\n",
|
"ax.set_xlabel(\"Polynomial Degree\")\n",
|
||||||
"ax.set_ylabel(f\"MSE ({k_folds}-fold validation)\")\n",
|
"ax.set_ylabel(f\"MSE ({k_folds}-fold)\")\n",
|
||||||
"ax.legend()\n",
|
"ax.legend()\n",
|
||||||
"fig.tight_layout()\n",
|
"fig.set_layout_engine(\"compressed\")\n",
|
||||||
"fig.savefig(os.path.join(FIG_DIR, \"kfold_mse_comparison_per_cost_function.pdf\"))"
|
"fig.savefig(os.path.join(FIG_DIR, \"kfold_mse_comparison_per_cost_function.pdf\"))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -95,7 +95,6 @@ def mse_r2_plot(
|
|||||||
ax2.set_xlabel(labels["xlabel"])
|
ax2.set_xlabel(labels["xlabel"])
|
||||||
ax2.set_ylabel(labels["ylabel2"])
|
ax2.set_ylabel(labels["ylabel2"])
|
||||||
|
|
||||||
fig.tight_layout()
|
|
||||||
return fig, (ax1, ax2)
|
return fig, (ax1, ax2)
|
||||||
|
|
||||||
|
|
||||||
@@ -136,7 +135,6 @@ def parameter_plot(
|
|||||||
ax.set_xticklabels(polynomial_degrees[::3])
|
ax.set_xticklabels(polynomial_degrees[::3])
|
||||||
ax.set_yticks(np.arange(0, beta_OLS.shape[0], 5))
|
ax.set_yticks(np.arange(0, beta_OLS.shape[0], 5))
|
||||||
ax.set_yticklabels(np.arange(1, beta_OLS.shape[0] + 1, step=5))
|
ax.set_yticklabels(np.arange(1, beta_OLS.shape[0] + 1, step=5))
|
||||||
fig.tight_layout()
|
|
||||||
return fig, ax
|
return fig, ax
|
||||||
|
|
||||||
|
|
||||||
@@ -149,7 +147,6 @@ def scatter_dataset(
|
|||||||
ax.set_xlabel("$x$")
|
ax.set_xlabel("$x$")
|
||||||
ax.set_ylabel("$y$")
|
ax.set_ylabel("$y$")
|
||||||
ax.legend()
|
ax.legend()
|
||||||
fig.tight_layout()
|
|
||||||
return fig, ax
|
return fig, ax
|
||||||
|
|
||||||
|
|
||||||
@@ -188,7 +185,7 @@ def optimization_performance_evaluation(
|
|||||||
X_tr: np.ndarray,
|
X_tr: np.ndarray,
|
||||||
y_tr: np.ndarray,
|
y_tr: np.ndarray,
|
||||||
):
|
):
|
||||||
fig, ax = plt.subplots(figsize=get_figsize(0.5))
|
fig, ax = plt.subplots(figsize=get_figsize(0.6))
|
||||||
|
|
||||||
for optimizer, label in zip(optimizers, labels):
|
for optimizer, label in zip(optimizers, labels):
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
@@ -215,5 +212,4 @@ def optimization_performance_evaluation(
|
|||||||
ax.set_xlabel("Epoch")
|
ax.set_xlabel("Epoch")
|
||||||
ax.set_ylabel("Cost")
|
ax.set_ylabel("Cost")
|
||||||
ax.legend()
|
ax.legend()
|
||||||
fig.tight_layout()
|
|
||||||
return fig, ax
|
return fig, ax
|
||||||
|
|||||||
Reference in New Issue
Block a user