From 8aab9c63674832c64eec9229bb3b852cdb0ffbd0 Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Wed, 13 Sep 2023 14:32:08 +0200 Subject: [PATCH] update --- .../programs/codeexamplesscaling.do.txt | 9 +- .../week37/programs/codeexamplesscaling.ipynb | 170 ++++++++---------- 2 files changed, 79 insertions(+), 100 deletions(-) diff --git a/doc/src/week37/programs/codeexamplesscaling.do.txt b/doc/src/week37/programs/codeexamplesscaling.do.txt index abd6c4c70..85b35c90e 100644 --- a/doc/src/week37/programs/codeexamplesscaling.do.txt +++ b/doc/src/week37/programs/codeexamplesscaling.do.txt @@ -294,7 +294,7 @@ _Scikit-Learn_. Here we limit ourselves to Ridge regression only. !bc pycod from sklearn import linear_model np.random.seed(2018) -n = 100 +n = 10 d = 2 Lambda = 0.01 @@ -310,19 +310,20 @@ for p in range(d): #Split data in train and test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +print(X_train) # Scale data by subtracting mean value using scikit-learn from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(X_train) X_train_scaled = scaler.transform(X_train) -X_test_scaled = scaler.transform(X_test) +print(X_train_scaled) #Calculate beta OLS = LinearRegression() -OLS.fit(X_train,y_train) +OLS.fit(X_train,y_train_scaled) ypredictOLS = OLS.predict(X_test) RegRidge = linear_model.Ridge(Lambda) -RegRidge.fit(X_train,y_train) +RegRidge.fit(X_train_scaled,y_train) ypredictRidge = RegRidge.predict(X_test) print(OLS.coef_) print(RegRidge.coef_) diff --git a/doc/src/week37/programs/codeexamplesscaling.ipynb b/doc/src/week37/programs/codeexamplesscaling.ipynb index ed05bfcba..4fb54d1f8 100644 --- a/doc/src/week37/programs/codeexamplesscaling.ipynb +++ b/doc/src/week37/programs/codeexamplesscaling.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "11ec219f", + "id": "a6d58753", "metadata": {}, "source": [ " 22\u001b[0m X_train_scaled \u001b[38;5;241m=\u001b[39m \u001b[43mscaler\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;66;03m#Calculate beta\u001b[39;00m\n\u001b[1;32m 26\u001b[0m OLS \u001b[38;5;241m=\u001b[39m LinearRegression()\n", + "File \u001b[0;32m~/miniforge3/envs/myenv/lib/python3.9/site-packages/sklearn/preprocessing/_data.py:970\u001b[0m, in \u001b[0;36mStandardScaler.transform\u001b[0;34m(self, X, copy)\u001b[0m\n\u001b[1;32m 955\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransform\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 956\u001b[0m \u001b[38;5;124;03m\"\"\"Perform standardization by centering and scaling.\u001b[39;00m\n\u001b[1;32m 957\u001b[0m \n\u001b[1;32m 958\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 968\u001b[0m \u001b[38;5;124;03m Transformed array.\u001b[39;00m\n\u001b[1;32m 969\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 970\u001b[0m \u001b[43mcheck_is_fitted\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 972\u001b[0m copy \u001b[38;5;241m=\u001b[39m copy \u001b[38;5;28;01mif\u001b[39;00m copy \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcopy\n\u001b[1;32m 973\u001b[0m X \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_data(\n\u001b[1;32m 974\u001b[0m X,\n\u001b[1;32m 975\u001b[0m reset\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 980\u001b[0m force_all_finite\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow-nan\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 981\u001b[0m )\n", + "File \u001b[0;32m~/miniforge3/envs/myenv/lib/python3.9/site-packages/sklearn/utils/validation.py:1222\u001b[0m, in \u001b[0;36mcheck_is_fitted\u001b[0;34m(estimator, attributes, msg, all_or_any)\u001b[0m\n\u001b[1;32m 1217\u001b[0m fitted \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 1218\u001b[0m v \u001b[38;5;28;01mfor\u001b[39;00m v \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mvars\u001b[39m(estimator) \u001b[38;5;28;01mif\u001b[39;00m v\u001b[38;5;241m.\u001b[39mendswith(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m v\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 1219\u001b[0m ]\n\u001b[1;32m 1221\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m fitted:\n\u001b[0;32m-> 1222\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NotFittedError(msg \u001b[38;5;241m%\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28mtype\u001b[39m(estimator)\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m})\n", + "\u001b[0;31mNotFittedError\u001b[0m: This StandardScaler instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator." ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -615,16 +596,14 @@ "# Scale data by subtracting mean value using scikit-learn\n", "from sklearn.preprocessing import StandardScaler\n", "scaler = StandardScaler()\n", - "scaler.fit(X_train)\n", "X_train_scaled = scaler.transform(X_train)\n", - "X_test_scaled = scaler.transform(X_test)\n", "\n", "#Calculate beta\n", "OLS = LinearRegression()\n", - "OLS.fit(X_train,y_train)\n", + "OLS.fit(X_train_scaled,y_train)\n", "ypredictOLS = OLS.predict(X_test)\n", "RegRidge = linear_model.Ridge(Lambda)\n", - "RegRidge.fit(X_train,y_train)\n", + "RegRidge.fit(X_train_scaled,y_train)\n", "ypredictRidge = RegRidge.predict(X_test)\n", "print(OLS.coef_)\n", "print(RegRidge.coef_)\n", @@ -644,7 +623,6 @@ "print(MSE(y_test,ytilde_test_Ridge))\n", "plt.scatter(x,y,label='Data')\n", "plt.plot(x, X @ RegRidge.coef_ + RegRidge.intercept_ , label=\"Ridge_Fit\")\n", - "\n", "plt.grid()\n", "plt.legend()\n", "plt.show()" @@ -653,7 +631,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7e81070c", + "id": "b99be971", "metadata": {}, "outputs": [], "source": [] @@ -675,7 +653,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.9.10" } }, "nbformat": 4,