659 lines
48 KiB
Plaintext
659 lines
48 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"source": [
|
||
"## HW2 Question 2\r\n",
|
||
"\r\n",
|
||
"Your job is to predict democracy index by real GDP per capita and other demographic features. Inorder to predict the democracy index we are going to use the following models:\r\n",
|
||
"1. Ridge Regression (10 points)\r\n",
|
||
"2. Lasso Regression (10 points)\r\n",
|
||
"3. Adaptive Lasso Regression (10 points)\r\n",
|
||
"4. Elastic Net Regression (10 points)"
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 40,
|
||
"source": [
|
||
"#Required libraries\r\n",
|
||
"import pandas as pd\r\n",
|
||
"import asgl\r\n",
|
||
"from sklearn.linear_model import ElasticNetCV, RidgeCV, LassoCV\r\n",
|
||
"import logging\r\n",
|
||
"from sklearn.model_selection import GridSearchCV, RepeatedKFold, cross_val_score, train_test_split\r\n",
|
||
"from sklearn.metrics import mean_squared_error\r\n",
|
||
"from sklearn.datasets import make_regression\r\n",
|
||
"from dataclasses import dataclass\r\n",
|
||
"import numpy as np\r\n",
|
||
"import matplotlib.pyplot as plt\r\n"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 54,
|
||
"source": [
|
||
"income_cleansed"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
" dem_ind log_gdppc log_pop age_1 age_2 age_3 age_4 \\\n",
|
||
"38 0.530000 8.905374 9.933823 0.307737 0.241766 0.210866 0.151395 \n",
|
||
"39 0.166667 9.016160 10.011580 0.302024 0.239600 0.207557 0.152852 \n",
|
||
"40 0.833333 9.133990 10.084220 0.293686 0.245023 0.199240 0.154751 \n",
|
||
"41 0.166667 9.202840 10.167740 0.292191 0.248464 0.190341 0.154945 \n",
|
||
"42 0.833333 9.271142 10.243310 0.305165 0.237141 0.186167 0.152458 \n",
|
||
"... ... ... ... ... ... ... ... \n",
|
||
"1364 0.666667 7.831994 8.716208 0.487388 0.249146 0.135395 0.081204 \n",
|
||
"1365 0.500000 7.876341 8.872487 0.490522 0.261934 0.124533 0.075827 \n",
|
||
"1366 0.166667 7.913739 9.061492 0.477027 0.272603 0.132026 0.073196 \n",
|
||
"1367 0.333333 7.977293 9.234155 0.462648 0.277990 0.141861 0.072411 \n",
|
||
"1368 0.166667 7.882274 9.347926 0.454770 0.282207 0.146730 0.070168 \n",
|
||
"\n",
|
||
" age_5 educ age_median \n",
|
||
"38 0.088237 4.988 26.799999 \n",
|
||
"39 0.097967 5.214 27.200001 \n",
|
||
"40 0.107299 5.876 27.400000 \n",
|
||
"41 0.114059 5.845 27.299999 \n",
|
||
"42 0.119069 6.618 27.200001 \n",
|
||
"... ... ... ... \n",
|
||
"1364 0.046867 2.147 15.600000 \n",
|
||
"1365 0.047184 2.816 15.400000 \n",
|
||
"1366 0.045149 2.828 16.000000 \n",
|
||
"1367 0.045090 4.087 16.700001 \n",
|
||
"1368 0.046125 4.428 17.000000 \n",
|
||
"\n",
|
||
"[679 rows x 10 columns]"
|
||
],
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>dem_ind</th>\n",
|
||
" <th>log_gdppc</th>\n",
|
||
" <th>log_pop</th>\n",
|
||
" <th>age_1</th>\n",
|
||
" <th>age_2</th>\n",
|
||
" <th>age_3</th>\n",
|
||
" <th>age_4</th>\n",
|
||
" <th>age_5</th>\n",
|
||
" <th>educ</th>\n",
|
||
" <th>age_median</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>38</th>\n",
|
||
" <td>0.530000</td>\n",
|
||
" <td>8.905374</td>\n",
|
||
" <td>9.933823</td>\n",
|
||
" <td>0.307737</td>\n",
|
||
" <td>0.241766</td>\n",
|
||
" <td>0.210866</td>\n",
|
||
" <td>0.151395</td>\n",
|
||
" <td>0.088237</td>\n",
|
||
" <td>4.988</td>\n",
|
||
" <td>26.799999</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>39</th>\n",
|
||
" <td>0.166667</td>\n",
|
||
" <td>9.016160</td>\n",
|
||
" <td>10.011580</td>\n",
|
||
" <td>0.302024</td>\n",
|
||
" <td>0.239600</td>\n",
|
||
" <td>0.207557</td>\n",
|
||
" <td>0.152852</td>\n",
|
||
" <td>0.097967</td>\n",
|
||
" <td>5.214</td>\n",
|
||
" <td>27.200001</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>40</th>\n",
|
||
" <td>0.833333</td>\n",
|
||
" <td>9.133990</td>\n",
|
||
" <td>10.084220</td>\n",
|
||
" <td>0.293686</td>\n",
|
||
" <td>0.245023</td>\n",
|
||
" <td>0.199240</td>\n",
|
||
" <td>0.154751</td>\n",
|
||
" <td>0.107299</td>\n",
|
||
" <td>5.876</td>\n",
|
||
" <td>27.400000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>41</th>\n",
|
||
" <td>0.166667</td>\n",
|
||
" <td>9.202840</td>\n",
|
||
" <td>10.167740</td>\n",
|
||
" <td>0.292191</td>\n",
|
||
" <td>0.248464</td>\n",
|
||
" <td>0.190341</td>\n",
|
||
" <td>0.154945</td>\n",
|
||
" <td>0.114059</td>\n",
|
||
" <td>5.845</td>\n",
|
||
" <td>27.299999</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>42</th>\n",
|
||
" <td>0.833333</td>\n",
|
||
" <td>9.271142</td>\n",
|
||
" <td>10.243310</td>\n",
|
||
" <td>0.305165</td>\n",
|
||
" <td>0.237141</td>\n",
|
||
" <td>0.186167</td>\n",
|
||
" <td>0.152458</td>\n",
|
||
" <td>0.119069</td>\n",
|
||
" <td>6.618</td>\n",
|
||
" <td>27.200001</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1364</th>\n",
|
||
" <td>0.666667</td>\n",
|
||
" <td>7.831994</td>\n",
|
||
" <td>8.716208</td>\n",
|
||
" <td>0.487388</td>\n",
|
||
" <td>0.249146</td>\n",
|
||
" <td>0.135395</td>\n",
|
||
" <td>0.081204</td>\n",
|
||
" <td>0.046867</td>\n",
|
||
" <td>2.147</td>\n",
|
||
" <td>15.600000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1365</th>\n",
|
||
" <td>0.500000</td>\n",
|
||
" <td>7.876341</td>\n",
|
||
" <td>8.872487</td>\n",
|
||
" <td>0.490522</td>\n",
|
||
" <td>0.261934</td>\n",
|
||
" <td>0.124533</td>\n",
|
||
" <td>0.075827</td>\n",
|
||
" <td>0.047184</td>\n",
|
||
" <td>2.816</td>\n",
|
||
" <td>15.400000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1366</th>\n",
|
||
" <td>0.166667</td>\n",
|
||
" <td>7.913739</td>\n",
|
||
" <td>9.061492</td>\n",
|
||
" <td>0.477027</td>\n",
|
||
" <td>0.272603</td>\n",
|
||
" <td>0.132026</td>\n",
|
||
" <td>0.073196</td>\n",
|
||
" <td>0.045149</td>\n",
|
||
" <td>2.828</td>\n",
|
||
" <td>16.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1367</th>\n",
|
||
" <td>0.333333</td>\n",
|
||
" <td>7.977293</td>\n",
|
||
" <td>9.234155</td>\n",
|
||
" <td>0.462648</td>\n",
|
||
" <td>0.277990</td>\n",
|
||
" <td>0.141861</td>\n",
|
||
" <td>0.072411</td>\n",
|
||
" <td>0.045090</td>\n",
|
||
" <td>4.087</td>\n",
|
||
" <td>16.700001</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1368</th>\n",
|
||
" <td>0.166667</td>\n",
|
||
" <td>7.882274</td>\n",
|
||
" <td>9.347926</td>\n",
|
||
" <td>0.454770</td>\n",
|
||
" <td>0.282207</td>\n",
|
||
" <td>0.146730</td>\n",
|
||
" <td>0.070168</td>\n",
|
||
" <td>0.046125</td>\n",
|
||
" <td>4.428</td>\n",
|
||
" <td>17.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>679 rows × 10 columns</p>\n",
|
||
"</div>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 54
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"source": [
|
||
"#Read in and cleanse the data\r\n",
|
||
"income_democracy = pd.read_csv('./data/income_democracy.csv')\r\n",
|
||
"exclude_cols = ['country','year','code']\r\n",
|
||
"income_cleansed = income_democracy.drop(exclude_cols, axis=1)\r\n",
|
||
"for col in income_cleansed.columns:\r\n",
|
||
" income_cleansed = income_cleansed[~pd.isnull(income_cleansed[col])]\r\n"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 53,
|
||
"source": [
|
||
"income_cleansed.shape"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
"(679, 10)"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 53
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"source": [
|
||
"y = income_cleansed.dem_ind\r\n",
|
||
"X = income_cleansed.drop(\"dem_ind\", axis=1)"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"source": [
|
||
"#Split dataset into train/test with a train size of 80%\r\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"source": [
|
||
"## Fit ridge regression\r\n",
|
||
"### 2A) "
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"source": [
|
||
"ridge = RidgeCV(alphas=[1e-3, 1e-2, 1e-1, 1, 10],store_cv_values=True, alpha_per_target=True).fit(X_train, y_train)"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"source": [
|
||
"ridge.alpha_"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
"10.0"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 22
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"source": [
|
||
"y_pred_ridge = ridge.predict(X_test)\r\n",
|
||
"ridge_mse = mean_squared_error(y_test,y_pred_ridge)\r\n",
|
||
"print(ridge_mse)"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"name": "stdout",
|
||
"text": [
|
||
"0.05953832584294149\n"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"source": [
|
||
"fig = plt.figure()\r\n",
|
||
"ax = fig.add_axes([0,0,1,1])\r\n",
|
||
"ax.bar(list(X_train.columns),list(ridge.coef_))\r\n",
|
||
"#set parameters for tick labels\r\n",
|
||
"plt.tick_params(axis='x', which='major', labelsize=9)"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "display_data",
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
],
|
||
"image/png": "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"
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
}
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"source": [
|
||
"## Fit lasso regression\r\n",
|
||
"### 2B) "
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"source": [
|
||
"lasso = LassoCV(cv=10).fit(X_train, y_train)"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"source": [
|
||
"lasso.alpha_"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
"0.0015182975900542828"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 13
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 37,
|
||
"source": [
|
||
"y_pred_lasso = lasso.predict(X_test)\r\n",
|
||
"lasso_mse = mean_squared_error(y_test,y_pred_lasso)\r\n",
|
||
"print(lasso_mse)"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"name": "stdout",
|
||
"text": [
|
||
"0.059578045325377305\n"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"source": [
|
||
"fig = plt.figure()\r\n",
|
||
"ax = fig.add_axes([0,0,1,1])\r\n",
|
||
"ax.bar(list(X_train.columns),list(lasso.coef_))\r\n",
|
||
"#set parameters for tick labels\r\n",
|
||
"plt.tick_params(axis='x', which='major', labelsize=9)\r\n",
|
||
"plt.show()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "display_data",
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
],
|
||
"image/png": "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"
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
}
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"source": [
|
||
"## Fit adaptive lasso regression\r\n",
|
||
"### 2C) "
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 49,
|
||
"source": [
|
||
"#lambda1 = 10.0 ** np.arange(-3, 1.51, 0.1)\r\n",
|
||
"tvt_alasso = asgl.TVT(model='lm', penalization='alasso', lambda1=lasso.alpha_, parallel=True,\r\n",
|
||
" weight_technique='lasso', error_type='MSE', random_state=1, \r\n",
|
||
" train_size=80)\r\n",
|
||
"\r\n",
|
||
"#alasso_result = tvt_alasso.train_validate_test(x=X_train, y=y_train)\r\n",
|
||
"#alasso_prediction_error = alasso_result['test_error']\r\n",
|
||
"#alasso_betas = alasso_result['optimal_betas'][1:]\r\n"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 50,
|
||
"source": [
|
||
"tvt_alasso.alpha"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
"0.5"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 50
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 52,
|
||
"source": [
|
||
"tvt_alasso.coef_"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"source": [
|
||
"## Fit elastic net regression\r\n",
|
||
"### 2D) "
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"source": [
|
||
"elastic = ElasticNetCV(cv=10).fit(X_train, y_train)"
|
||
],
|
||
"outputs": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"source": [
|
||
"elastic.alpha_"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
"0.003036595180108563"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 16
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"source": [],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"source": [
|
||
"fig = plt.figure()\r\n",
|
||
"ax = fig.add_axes([0,0,1,1])\r\n",
|
||
"ax.bar(list(X_train.columns),list(elastic.coef_))\r\n",
|
||
"#set parameters for tick labels\r\n",
|
||
"plt.tick_params(axis='x', which='major', labelsize=9)\r\n",
|
||
"plt.show()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "display_data",
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
],
|
||
"image/png": "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"
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
}
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 34,
|
||
"source": [
|
||
"y_pred_elastic = lasso.predict(X_test)\r\n",
|
||
"elastic_mse = mean_squared_error(y_test,y_pred_elastic)\r\n",
|
||
"print(elastic_mse)"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"name": "stdout",
|
||
"text": [
|
||
"0.059578045325377305\n"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 35,
|
||
"source": [
|
||
"fig = plt.figure()\r\n",
|
||
"ax = fig.add_axes([0,0,1,1])\r\n",
|
||
"mse_x = [\"Ridge MSE\",\"Lasso MSE\",\"Elastic MSE\"]\r\n",
|
||
"mse_y=[ridge_mse,lasso_mse,elastic_mse]\r\n",
|
||
"ax.bar(mse_x,mse_y)\r\n",
|
||
"#set parameters for tick labels\r\n",
|
||
"plt.tick_params(axis='x', which='major', labelsize=9)\r\n",
|
||
"plt.show()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"output_type": "display_data",
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
],
|
||
"image/png": "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"
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
}
|
||
}
|
||
],
|
||
"metadata": {}
|
||
}
|
||
],
|
||
"metadata": {
|
||
"orig_nbformat": 4,
|
||
"language_info": {
|
||
"name": "python"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
} |