Files
test-repo/IML Projects/Task 1a/data/template_solution.ipynb
2026-03-11 21:34:43 +01:00

812 lines
42 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### General guidance\n",
"\n",
"This serves as a template which will guide you through the implementation of this task. It is advised\n",
"to first read the whole template and get a sense of the overall structure of the code before trying to fill in any of the TODO gaps.\n",
"This is the jupyter notebook version of the template. For the python file version, please refer to the file `template_solution.py`.\n",
"\n",
"First, we import necessary libraries:"
]
},
{
"cell_type": "code",
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-11T20:25:46.118936Z",
"start_time": "2026-03-11T20:25:46.115270Z"
}
},
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn.model_selection import KFold\n",
"\n",
"# Add any additional imports here (however, the task is solvable without using \n",
"# any additional imports)\n",
"# import ..."
],
"outputs": [],
"execution_count": 55
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" #### Loading data"
]
},
{
"cell_type": "code",
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-11T20:25:46.151114Z",
"start_time": "2026-03-11T20:25:46.143378Z"
}
},
"source": [
"data = pd.read_csv(\"train.csv\")\n",
"y = data[\"y\"].to_numpy()\n",
"data = data.drop(columns=\"y\")\n",
"# print a few data samples\n",
"print(data.head())"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 \\\n",
"0 0.06724 0.0 3.24 0.0 0.460 6.333 17.2 5.2146 4.0 430.0 16.9 \n",
"1 9.23230 0.0 18.10 0.0 0.631 6.216 100.0 1.1691 24.0 666.0 20.2 \n",
"2 0.11425 0.0 13.89 1.0 0.550 6.373 92.4 3.3633 5.0 276.0 16.4 \n",
"3 24.80170 0.0 18.10 0.0 0.693 5.349 96.0 1.7028 24.0 666.0 20.2 \n",
"4 0.05646 0.0 12.83 0.0 0.437 6.232 53.7 5.0141 5.0 398.0 18.7 \n",
"\n",
" x12 x13 \n",
"0 375.21 7.34 \n",
"1 366.15 9.53 \n",
"2 393.74 10.50 \n",
"3 396.90 19.77 \n",
"4 386.40 12.34 \n"
]
}
],
"execution_count": 56
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Calculating the average RMSE"
]
},
{
"cell_type": "code",
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-11T20:25:46.175778Z",
"start_time": "2026-03-11T20:25:46.173181Z"
}
},
"source": [
"def calculate_RMSE(w, X, y):\n",
" \"\"\"This function takes test data points (X and y), and computes the empirical RMSE of \n",
" predicting y from X using a linear model with weights w. \n",
"\n",
" Parameters\n",
" ----------\n",
" w: array of floats: dim = (13,), optimal parameters of ridge regression \n",
" X: matrix of floats, dim = (15,13), inputs with 13 features\n",
" y: array of floats, dim = (15,), input labels\n",
"\n",
" Returns\n",
" ----------\n",
" rmse: float: dim = 1, RMSE value\n",
" \"\"\"\n",
" rmse = 0\n",
" n = X.shape[0]\n",
" rmse = np.sqrt(1/n * np.sum( (y - X @ w)**2 ))\n",
" assert np.isscalar(rmse)\n",
" return rmse"
],
"outputs": [],
"execution_count": 57
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Fitting the regressor"
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"The fitting can be carried out by solving the normal equations:\n",
"$$\n",
"(\\lambda \\cdot \\mathbf{I} + \\mathbf{X}) \\mathbf{w} = \\mathbf{X}^{T}\\cdot \\mathbf{y}\n",
"$$\n"
]
},
{
"cell_type": "code",
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-11T20:25:46.200893Z",
"start_time": "2026-03-11T20:25:46.197877Z"
}
},
"source": [
"def fit(X, y, lam):\n",
" \"\"\"\n",
" This function receives training data points, then fits the ridge regression on this data\n",
" with regularization hyperparameter lambda. The weights w of the fitted ridge regression\n",
" are returned. \n",
"\n",
" Parameters\n",
" ----------\n",
" X: matrix of floats, dim = (135,13), inputs with 13 features\n",
" y: array of floats, dim = (135,), input labels\n",
" lam: float. lambda parameter, used in regularization term\n",
"\n",
" Returns\n",
" ----------\n",
" w: array of floats: dim = (13,), optimal parameters of ridge regression\n",
" \"\"\"\n",
" weights = np.zeros((13,))\n",
" A = lam * np.identity(13) + np.transpose(X) @ X\n",
" b = X.T @ y\n",
" weights = np.linalg.solve(A, b)\n",
"\n",
" assert weights.shape == (13,)\n",
" return weights"
],
"outputs": [],
"execution_count": 58
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Performing computation"
]
},
{
"cell_type": "code",
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-11T20:27:41.325447Z",
"start_time": "2026-03-11T20:27:41.305479Z"
}
},
"source": [
"\"\"\"\n",
"Main cross-validation loop, implementing 10-fold CV. In every iteration \n",
"(for every train-test split), the RMSE for every lambda is calculated, \n",
"and then averaged over iterations.\n",
"\n",
"Parameters\n",
"---------- \n",
"X: matrix of floats, dim = (150, 13), inputs with 13 features\n",
"y: array of floats, dim = (150, ), input labels\n",
"lambdas: list of floats, len = 5, values of lambda for which ridge regression is fitted and RMSE estimated\n",
"n_folds: int, number of folds (pieces in which we split the dataset), parameter K in KFold CV\n",
"\n",
"Compute\n",
"----------\n",
"avg_RMSE: array of floats: dim = (5,), average RMSE value for every lambda\n",
"\"\"\"\n",
"X = data.to_numpy()\n",
"# The function calculating the average RMSE\n",
"lambdas = [0.1, 1, 10, 100, 200]\n",
"n_folds = 10\n",
"\n",
"RMSE_mat = np.zeros((n_folds, len(lambdas)))\n",
"\n",
"\n",
"# and fill all entries in the matrix 'RMSE_mat'\n",
"for k in range(n_folds):\n",
" fold = 150 // n_folds\n",
" X_train = np.concatenate((X[:k*fold,:], X[(k+1)*fold:,:]),axis=0) # leave out the validation set\n",
" X_validation = X[k*fold:(k+1)*fold,:]\n",
" y_train = np.concatenate((y[:k*fold], y[(k+1)*fold:]))\n",
" y_validation = y[k*fold:(k+1)*fold]\n",
" for i in range(len(lambdas)):\n",
" w = fit(X_train, y_train, lambdas[i])\n",
" RMSE_mat[k,i] = calculate_RMSE(w, X_validation, y_validation)\n",
"avg_RMSE = np.mean(RMSE_mat, axis=0) # avg_RMSE: array of floats: dim = (5,), average RMSE value for every lambda\n",
"assert avg_RMSE.shape == (5,)"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[7.4412339 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 0. ]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [0. 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 0. 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 0. 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 4.70584949 0. 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 4.70584949 4.30299719 0. ]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 4.70584949 4.30299719 4.45025962]\n",
" [0. 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 4.70584949 4.30299719 4.45025962]\n",
" [3.5549224 0. 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 4.70584949 4.30299719 4.45025962]\n",
" [3.5549224 3.47254925 0. 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 4.70584949 4.30299719 4.45025962]\n",
" [3.5549224 3.47254925 3.38243796 0. 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 4.70584949 4.30299719 4.45025962]\n",
" [3.5549224 3.47254925 3.38243796 3.79878164 0. ]]\n",
"[[7.4412339 7.47793331 7.58146902 8.19645872 8.50748161]\n",
" [5.12826602 4.88393133 4.45282503 3.55256057 3.60399295]\n",
" [7.70764701 7.70279186 7.72774439 7.77994411 7.88968326]\n",
" [4.54006065 4.50059526 4.33989198 4.94678494 5.24054741]\n",
" [4.07531646 4.0726219 4.19425423 4.89426434 5.24272243]\n",
" [5.10975443 5.15192098 5.39446252 7.11982551 7.87880031]\n",
" [6.55136404 6.56151161 6.55275056 7.13545034 7.47865912]\n",
" [6.04021985 6.09837022 6.36717035 7.59224397 7.99355906]\n",
" [4.88759828 4.88177704 4.70584949 4.30299719 4.45025962]\n",
" [3.5549224 3.47254925 3.38243796 3.79878164 4.14775924]]\n"
]
}
],
"execution_count": 64
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-11T20:25:46.251095Z",
"start_time": "2026-03-11T20:25:46.248154Z"
}
},
"cell_type": "code",
"source": [
"A = np.array([[1,2],[3,4]])\n",
"#print(A[:,:1])\n",
"#print(np.transpose(A), A, np.transpose(A) @ A)\n",
"print(np.concatenate((A,A),axis=1))"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[1 2 1 2]\n",
" [3 4 3 4]]\n"
]
}
],
"execution_count": 60
},
{
"cell_type": "code",
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-11T20:25:46.295067Z",
"start_time": "2026-03-11T20:25:46.292066Z"
}
},
"source": [
"# Save results in the required format\n",
"np.savetxt(\"./results.csv\", avg_RMSE, fmt=\"%.12f\")"
],
"outputs": [],
"execution_count": 61
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-11T20:25:46.321558Z",
"start_time": "2026-03-11T20:25:46.319798Z"
}
},
"cell_type": "code",
"source": "# Validate",
"outputs": [],
"execution_count": 62
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}