{
"cells": [
{
"cell_type": "markdown",
"id": "bd169264-2680-4dfe-b2e0-51c435f73e66",
"metadata": {},
"source": [
"# Automobiles"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6f894399-b3b6-4e79-9c7b-2b2fb7c1d977",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"id": "52141acc-0e1e-41a2-a170-e2eff0d913f4",
"metadata": {},
"source": [
"## Imports"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9cfbd670-d747-49b7-93b3-a6f4accc8f6c",
"metadata": {},
"outputs": [],
"source": [
"from fastai.vision.all import *\n",
"from aiking.data.external import * #We need to import this after fastai modules\n",
"import pandas as pd\n",
"from sklearn.ensemble import RandomForestRegressor, ExtraTreesRegressor\n",
"from sklearn.model_selection import cross_val_score\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import r2_score, make_scorer\n",
"from sklearn.feature_selection import mutual_info_regression\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.decomposition import PCA\n",
"from sklearn.pipeline import make_pipeline\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import ipywidgets as widgets\n",
"from ipywidgets import interact, interactive, fixed, interact_manual"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "414586d1-2715-418d-bdfc-8a0cae00622b",
"metadata": {},
"outputs": [],
"source": [
"plt.style.use('ggplot')"
]
},
{
"cell_type": "markdown",
"id": "6d7ff80d-e841-42c7-be00-f5ebecf012b2",
"metadata": {},
"source": [
"## Getting Dataset"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "55cef641-d87a-4dd4-8f5d-14e7597973b3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Path('/content/drive/MyDrive/PPV/S_Personal_Study/aiking/data/automobile-dataset')"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# kaggle datasets download -d toramky/automobile-dataset\n",
"path = untar_data(\"kaggle_datasets::toramky/automobile-dataset\"); path"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "985c0ca0-2ba4-4931-8e77-5a0a7b0ad5e8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(#1) [Path('/content/drive/MyDrive/PPV/S_Personal_Study/aiking/data/automobile-dataset/Automobile_data.csv')]"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"path.ls()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1a542241-4e40-4a37-bd1d-bf920b80baab",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" symboling | \n",
" normalized-losses | \n",
" make | \n",
" fuel-type | \n",
" aspiration | \n",
" num-of-doors | \n",
" body-style | \n",
" drive-wheels | \n",
" engine-location | \n",
" wheel-base | \n",
" length | \n",
" width | \n",
" height | \n",
" curb-weight | \n",
" engine-type | \n",
" num-of-cylinders | \n",
" engine-size | \n",
" fuel-system | \n",
" bore | \n",
" stroke | \n",
" compression-ratio | \n",
" horsepower | \n",
" peak-rpm | \n",
" city-mpg | \n",
" highway-mpg | \n",
" price | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 3 | \n",
" NaN | \n",
" alfa-romero | \n",
" gas | \n",
" std | \n",
" two | \n",
" convertible | \n",
" rwd | \n",
" front | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" dohc | \n",
" four | \n",
" 130 | \n",
" mpfi | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
" 13495.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 3 | \n",
" NaN | \n",
" alfa-romero | \n",
" gas | \n",
" std | \n",
" two | \n",
" convertible | \n",
" rwd | \n",
" front | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" dohc | \n",
" four | \n",
" 130 | \n",
" mpfi | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
" 16500.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" NaN | \n",
" alfa-romero | \n",
" gas | \n",
" std | \n",
" two | \n",
" hatchback | \n",
" rwd | \n",
" front | \n",
" 94.5 | \n",
" 171.2 | \n",
" 65.5 | \n",
" 52.4 | \n",
" 2823 | \n",
" ohcv | \n",
" six | \n",
" 152 | \n",
" mpfi | \n",
" 2.68 | \n",
" 3.47 | \n",
" 9.0 | \n",
" 154.0 | \n",
" 5000.0 | \n",
" 19 | \n",
" 26 | \n",
" 16500.0 | \n",
"
\n",
" \n",
" 3 | \n",
" 2 | \n",
" 164.0 | \n",
" audi | \n",
" gas | \n",
" std | \n",
" four | \n",
" sedan | \n",
" fwd | \n",
" front | \n",
" 99.8 | \n",
" 176.6 | \n",
" 66.2 | \n",
" 54.3 | \n",
" 2337 | \n",
" ohc | \n",
" four | \n",
" 109 | \n",
" mpfi | \n",
" 3.19 | \n",
" 3.40 | \n",
" 10.0 | \n",
" 102.0 | \n",
" 5500.0 | \n",
" 24 | \n",
" 30 | \n",
" 13950.0 | \n",
"
\n",
" \n",
" 4 | \n",
" 2 | \n",
" 164.0 | \n",
" audi | \n",
" gas | \n",
" std | \n",
" four | \n",
" sedan | \n",
" 4wd | \n",
" front | \n",
" 99.4 | \n",
" 176.6 | \n",
" 66.4 | \n",
" 54.3 | \n",
" 2824 | \n",
" ohc | \n",
" five | \n",
" 136 | \n",
" mpfi | \n",
" 3.19 | \n",
" 3.40 | \n",
" 8.0 | \n",
" 115.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 22 | \n",
" 17450.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" symboling normalized-losses make ... city-mpg highway-mpg price\n",
"0 3 NaN alfa-romero ... 21 27 13495.0\n",
"1 3 NaN alfa-romero ... 21 27 16500.0\n",
"2 1 NaN alfa-romero ... 19 26 16500.0\n",
"3 2 164.0 audi ... 24 30 13950.0\n",
"4 2 164.0 audi ... 18 22 17450.0\n",
"\n",
"[5 rows x 26 columns]"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv(path/'Automobile_data.csv', na_values=[\"?\"]); df.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5a35a604-e9c7-4537-b784-31292cc54f40",
"metadata": {},
"outputs": [],
"source": [
"X = df.fillna(0).copy()\n",
"y = X.pop(\"price\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8381e575-a838-4e85-a442-d777fc765f26",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" symboling | \n",
" normalized-losses | \n",
" make | \n",
" fuel-type | \n",
" aspiration | \n",
" num-of-doors | \n",
" body-style | \n",
" drive-wheels | \n",
" engine-location | \n",
" wheel-base | \n",
" length | \n",
" width | \n",
" height | \n",
" curb-weight | \n",
" engine-type | \n",
" num-of-cylinders | \n",
" engine-size | \n",
" fuel-system | \n",
" bore | \n",
" stroke | \n",
" compression-ratio | \n",
" horsepower | \n",
" peak-rpm | \n",
" city-mpg | \n",
" highway-mpg | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 3 | \n",
" 0.0 | \n",
" alfa-romero | \n",
" gas | \n",
" std | \n",
" two | \n",
" convertible | \n",
" rwd | \n",
" front | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" dohc | \n",
" four | \n",
" 130 | \n",
" mpfi | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
"
\n",
" \n",
" 1 | \n",
" 3 | \n",
" 0.0 | \n",
" alfa-romero | \n",
" gas | \n",
" std | \n",
" two | \n",
" convertible | \n",
" rwd | \n",
" front | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" dohc | \n",
" four | \n",
" 130 | \n",
" mpfi | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" 0.0 | \n",
" alfa-romero | \n",
" gas | \n",
" std | \n",
" two | \n",
" hatchback | \n",
" rwd | \n",
" front | \n",
" 94.5 | \n",
" 171.2 | \n",
" 65.5 | \n",
" 52.4 | \n",
" 2823 | \n",
" ohcv | \n",
" six | \n",
" 152 | \n",
" mpfi | \n",
" 2.68 | \n",
" 3.47 | \n",
" 9.0 | \n",
" 154.0 | \n",
" 5000.0 | \n",
" 19 | \n",
" 26 | \n",
"
\n",
" \n",
" 3 | \n",
" 2 | \n",
" 164.0 | \n",
" audi | \n",
" gas | \n",
" std | \n",
" four | \n",
" sedan | \n",
" fwd | \n",
" front | \n",
" 99.8 | \n",
" 176.6 | \n",
" 66.2 | \n",
" 54.3 | \n",
" 2337 | \n",
" ohc | \n",
" four | \n",
" 109 | \n",
" mpfi | \n",
" 3.19 | \n",
" 3.40 | \n",
" 10.0 | \n",
" 102.0 | \n",
" 5500.0 | \n",
" 24 | \n",
" 30 | \n",
"
\n",
" \n",
" 4 | \n",
" 2 | \n",
" 164.0 | \n",
" audi | \n",
" gas | \n",
" std | \n",
" four | \n",
" sedan | \n",
" 4wd | \n",
" front | \n",
" 99.4 | \n",
" 176.6 | \n",
" 66.4 | \n",
" 54.3 | \n",
" 2824 | \n",
" ohc | \n",
" five | \n",
" 136 | \n",
" mpfi | \n",
" 3.19 | \n",
" 3.40 | \n",
" 8.0 | \n",
" 115.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 22 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 200 | \n",
" -1 | \n",
" 95.0 | \n",
" volvo | \n",
" gas | \n",
" std | \n",
" four | \n",
" sedan | \n",
" rwd | \n",
" front | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 2952 | \n",
" ohc | \n",
" four | \n",
" 141 | \n",
" mpfi | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 23 | \n",
" 28 | \n",
"
\n",
" \n",
" 201 | \n",
" -1 | \n",
" 95.0 | \n",
" volvo | \n",
" gas | \n",
" turbo | \n",
" four | \n",
" sedan | \n",
" rwd | \n",
" front | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.8 | \n",
" 55.5 | \n",
" 3049 | \n",
" ohc | \n",
" four | \n",
" 141 | \n",
" mpfi | \n",
" 3.78 | \n",
" 3.15 | \n",
" 8.7 | \n",
" 160.0 | \n",
" 5300.0 | \n",
" 19 | \n",
" 25 | \n",
"
\n",
" \n",
" 202 | \n",
" -1 | \n",
" 95.0 | \n",
" volvo | \n",
" gas | \n",
" std | \n",
" four | \n",
" sedan | \n",
" rwd | \n",
" front | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3012 | \n",
" ohcv | \n",
" six | \n",
" 173 | \n",
" mpfi | \n",
" 3.58 | \n",
" 2.87 | \n",
" 8.8 | \n",
" 134.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 23 | \n",
"
\n",
" \n",
" 203 | \n",
" -1 | \n",
" 95.0 | \n",
" volvo | \n",
" diesel | \n",
" turbo | \n",
" four | \n",
" sedan | \n",
" rwd | \n",
" front | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3217 | \n",
" ohc | \n",
" six | \n",
" 145 | \n",
" idi | \n",
" 3.01 | \n",
" 3.40 | \n",
" 23.0 | \n",
" 106.0 | \n",
" 4800.0 | \n",
" 26 | \n",
" 27 | \n",
"
\n",
" \n",
" 204 | \n",
" -1 | \n",
" 95.0 | \n",
" volvo | \n",
" gas | \n",
" turbo | \n",
" four | \n",
" sedan | \n",
" rwd | \n",
" front | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3062 | \n",
" ohc | \n",
" four | \n",
" 141 | \n",
" mpfi | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 19 | \n",
" 25 | \n",
"
\n",
" \n",
"
\n",
"
205 rows × 25 columns
\n",
"
"
],
"text/plain": [
" symboling normalized-losses make ... peak-rpm city-mpg highway-mpg\n",
"0 3 0.0 alfa-romero ... 5000.0 21 27\n",
"1 3 0.0 alfa-romero ... 5000.0 21 27\n",
"2 1 0.0 alfa-romero ... 5000.0 19 26\n",
"3 2 164.0 audi ... 5500.0 24 30\n",
"4 2 164.0 audi ... 5500.0 18 22\n",
".. ... ... ... ... ... ... ...\n",
"200 -1 95.0 volvo ... 5400.0 23 28\n",
"201 -1 95.0 volvo ... 5300.0 19 25\n",
"202 -1 95.0 volvo ... 5500.0 18 23\n",
"203 -1 95.0 volvo ... 4800.0 26 27\n",
"204 -1 95.0 volvo ... 5400.0 19 25\n",
"\n",
"[205 rows x 25 columns]"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X"
]
},
{
"cell_type": "markdown",
"id": "85d00e96-940c-41d5-a505-3ab0e8a94a27",
"metadata": {},
"source": [
"## Mutual Information (MI) "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9f910b70-461e-4446-8c92-2a906f5fe367",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" symboling | \n",
" normalized-losses | \n",
" make | \n",
" fuel-type | \n",
" aspiration | \n",
" num-of-doors | \n",
" body-style | \n",
" drive-wheels | \n",
" engine-location | \n",
" wheel-base | \n",
" length | \n",
" width | \n",
" height | \n",
" curb-weight | \n",
" engine-type | \n",
" num-of-cylinders | \n",
" engine-size | \n",
" fuel-system | \n",
" bore | \n",
" stroke | \n",
" compression-ratio | \n",
" horsepower | \n",
" peak-rpm | \n",
" city-mpg | \n",
" highway-mpg | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 3 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" 0 | \n",
" 0 | \n",
" 130 | \n",
" 0 | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
"
\n",
" \n",
" 1 | \n",
" 3 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" 0 | \n",
" 0 | \n",
" 130 | \n",
" 0 | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 94.5 | \n",
" 171.2 | \n",
" 65.5 | \n",
" 52.4 | \n",
" 2823 | \n",
" 1 | \n",
" 1 | \n",
" 152 | \n",
" 0 | \n",
" 2.68 | \n",
" 3.47 | \n",
" 9.0 | \n",
" 154.0 | \n",
" 5000.0 | \n",
" 19 | \n",
" 26 | \n",
"
\n",
" \n",
" 3 | \n",
" 2 | \n",
" 164.0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
" 99.8 | \n",
" 176.6 | \n",
" 66.2 | \n",
" 54.3 | \n",
" 2337 | \n",
" 2 | \n",
" 0 | \n",
" 109 | \n",
" 0 | \n",
" 3.19 | \n",
" 3.40 | \n",
" 10.0 | \n",
" 102.0 | \n",
" 5500.0 | \n",
" 24 | \n",
" 30 | \n",
"
\n",
" \n",
" 4 | \n",
" 2 | \n",
" 164.0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 2 | \n",
" 0 | \n",
" 99.4 | \n",
" 176.6 | \n",
" 66.4 | \n",
" 54.3 | \n",
" 2824 | \n",
" 2 | \n",
" 2 | \n",
" 136 | \n",
" 0 | \n",
" 3.19 | \n",
" 3.40 | \n",
" 8.0 | \n",
" 115.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 22 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 200 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 2952 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 23 | \n",
" 28 | \n",
"
\n",
" \n",
" 201 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.8 | \n",
" 55.5 | \n",
" 3049 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 8.7 | \n",
" 160.0 | \n",
" 5300.0 | \n",
" 19 | \n",
" 25 | \n",
"
\n",
" \n",
" 202 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3012 | \n",
" 1 | \n",
" 1 | \n",
" 173 | \n",
" 0 | \n",
" 3.58 | \n",
" 2.87 | \n",
" 8.8 | \n",
" 134.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 23 | \n",
"
\n",
" \n",
" 203 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3217 | \n",
" 2 | \n",
" 1 | \n",
" 145 | \n",
" 6 | \n",
" 3.01 | \n",
" 3.40 | \n",
" 23.0 | \n",
" 106.0 | \n",
" 4800.0 | \n",
" 26 | \n",
" 27 | \n",
"
\n",
" \n",
" 204 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3062 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 19 | \n",
" 25 | \n",
"
\n",
" \n",
"
\n",
"
205 rows × 25 columns
\n",
"
"
],
"text/plain": [
" symboling normalized-losses make ... peak-rpm city-mpg highway-mpg\n",
"0 3 0.0 0 ... 5000.0 21 27\n",
"1 3 0.0 0 ... 5000.0 21 27\n",
"2 1 0.0 0 ... 5000.0 19 26\n",
"3 2 164.0 1 ... 5500.0 24 30\n",
"4 2 164.0 1 ... 5500.0 18 22\n",
".. ... ... ... ... ... ... ...\n",
"200 -1 95.0 21 ... 5400.0 23 28\n",
"201 -1 95.0 21 ... 5300.0 19 25\n",
"202 -1 95.0 21 ... 5500.0 18 23\n",
"203 -1 95.0 21 ... 4800.0 26 27\n",
"204 -1 95.0 21 ... 5400.0 19 25\n",
"\n",
"[205 rows x 25 columns]"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"for colname in X.select_dtypes(\"object\"):\n",
" X[colname], _ = X[colname].factorize()\n",
"X"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fccfc6e3-2d44-4245-8409-a079f56b7b0e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"symboling int64\n",
"normalized-losses float64\n",
"make int64\n",
"fuel-type int64\n",
"aspiration int64\n",
"num-of-doors int64\n",
"body-style int64\n",
"drive-wheels int64\n",
"engine-location int64\n",
"wheel-base float64\n",
"length float64\n",
"width float64\n",
"height float64\n",
"curb-weight int64\n",
"engine-type int64\n",
"num-of-cylinders int64\n",
"engine-size int64\n",
"fuel-system int64\n",
"bore float64\n",
"stroke float64\n",
"compression-ratio float64\n",
"horsepower float64\n",
"peak-rpm float64\n",
"city-mpg int64\n",
"highway-mpg int64\n",
"dtype: object"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.dtypes"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "aaa0424b-1193-4525-be75-d864455111e6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"symboling True\n",
"normalized-losses False\n",
"make True\n",
"fuel-type True\n",
"aspiration True\n",
"num-of-doors True\n",
"body-style True\n",
"drive-wheels True\n",
"engine-location True\n",
"wheel-base False\n",
"length False\n",
"width False\n",
"height False\n",
"curb-weight True\n",
"engine-type True\n",
"num-of-cylinders True\n",
"engine-size True\n",
"fuel-system True\n",
"bore False\n",
"stroke False\n",
"compression-ratio False\n",
"horsepower False\n",
"peak-rpm False\n",
"city-mpg True\n",
"highway-mpg True\n",
"dtype: bool"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.dtypes == int"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "16af11a1-0926-4cb3-8d9f-2e5b3803176b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"symboling True\n",
"normalized-losses False\n",
"make True\n",
"fuel-type True\n",
"aspiration True\n",
"num-of-doors True\n",
"body-style True\n",
"drive-wheels True\n",
"engine-location True\n",
"wheel-base False\n",
"length False\n",
"width False\n",
"height False\n",
"curb-weight True\n",
"engine-type True\n",
"num-of-cylinders True\n",
"engine-size True\n",
"fuel-system True\n",
"bore False\n",
"stroke False\n",
"compression-ratio False\n",
"horsepower False\n",
"peak-rpm False\n",
"city-mpg True\n",
"highway-mpg True\n",
"dtype: bool"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"discrete_features = X.dtypes == int; discrete_features"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4626656a-5dc8-4f34-aeb3-be01e066fda0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Series([], Name: price, dtype: float64)"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y[y==\"?\"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c3edb2f1-37e2-49c0-9c3b-30825bb523ae",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" symboling | \n",
" normalized-losses | \n",
" make | \n",
" fuel-type | \n",
" aspiration | \n",
" num-of-doors | \n",
" body-style | \n",
" drive-wheels | \n",
" engine-location | \n",
" wheel-base | \n",
" length | \n",
" width | \n",
" height | \n",
" curb-weight | \n",
" engine-type | \n",
" num-of-cylinders | \n",
" engine-size | \n",
" fuel-system | \n",
" bore | \n",
" stroke | \n",
" compression-ratio | \n",
" horsepower | \n",
" peak-rpm | \n",
" city-mpg | \n",
" highway-mpg | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 3 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" 0 | \n",
" 0 | \n",
" 130 | \n",
" 0 | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
"
\n",
" \n",
" 1 | \n",
" 3 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" 0 | \n",
" 0 | \n",
" 130 | \n",
" 0 | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 94.5 | \n",
" 171.2 | \n",
" 65.5 | \n",
" 52.4 | \n",
" 2823 | \n",
" 1 | \n",
" 1 | \n",
" 152 | \n",
" 0 | \n",
" 2.68 | \n",
" 3.47 | \n",
" 9.0 | \n",
" 154.0 | \n",
" 5000.0 | \n",
" 19 | \n",
" 26 | \n",
"
\n",
" \n",
" 3 | \n",
" 2 | \n",
" 164.0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
" 99.8 | \n",
" 176.6 | \n",
" 66.2 | \n",
" 54.3 | \n",
" 2337 | \n",
" 2 | \n",
" 0 | \n",
" 109 | \n",
" 0 | \n",
" 3.19 | \n",
" 3.40 | \n",
" 10.0 | \n",
" 102.0 | \n",
" 5500.0 | \n",
" 24 | \n",
" 30 | \n",
"
\n",
" \n",
" 4 | \n",
" 2 | \n",
" 164.0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 2 | \n",
" 0 | \n",
" 99.4 | \n",
" 176.6 | \n",
" 66.4 | \n",
" 54.3 | \n",
" 2824 | \n",
" 2 | \n",
" 2 | \n",
" 136 | \n",
" 0 | \n",
" 3.19 | \n",
" 3.40 | \n",
" 8.0 | \n",
" 115.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 22 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 200 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 2952 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 23 | \n",
" 28 | \n",
"
\n",
" \n",
" 201 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.8 | \n",
" 55.5 | \n",
" 3049 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 8.7 | \n",
" 160.0 | \n",
" 5300.0 | \n",
" 19 | \n",
" 25 | \n",
"
\n",
" \n",
" 202 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3012 | \n",
" 1 | \n",
" 1 | \n",
" 173 | \n",
" 0 | \n",
" 3.58 | \n",
" 2.87 | \n",
" 8.8 | \n",
" 134.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 23 | \n",
"
\n",
" \n",
" 203 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3217 | \n",
" 2 | \n",
" 1 | \n",
" 145 | \n",
" 6 | \n",
" 3.01 | \n",
" 3.40 | \n",
" 23.0 | \n",
" 106.0 | \n",
" 4800.0 | \n",
" 26 | \n",
" 27 | \n",
"
\n",
" \n",
" 204 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3062 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 19 | \n",
" 25 | \n",
"
\n",
" \n",
"
\n",
"
205 rows × 25 columns
\n",
"
"
],
"text/plain": [
" symboling normalized-losses make ... peak-rpm city-mpg highway-mpg\n",
"0 3 0.0 0 ... 5000.0 21 27\n",
"1 3 0.0 0 ... 5000.0 21 27\n",
"2 1 0.0 0 ... 5000.0 19 26\n",
"3 2 164.0 1 ... 5500.0 24 30\n",
"4 2 164.0 1 ... 5500.0 18 22\n",
".. ... ... ... ... ... ... ...\n",
"200 -1 95.0 21 ... 5400.0 23 28\n",
"201 -1 95.0 21 ... 5300.0 19 25\n",
"202 -1 95.0 21 ... 5500.0 18 23\n",
"203 -1 95.0 21 ... 4800.0 26 27\n",
"204 -1 95.0 21 ... 5400.0 19 25\n",
"\n",
"[205 rows x 25 columns]"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "370344eb-1eee-49cf-803c-ffaf811a11db",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"curb-weight 1.389106\n",
"engine-size 1.008542\n",
"highway-mpg 0.933126\n",
"horsepower 0.838589\n",
"city-mpg 0.824853\n",
"width 0.654700\n",
"length 0.560122\n",
"wheel-base 0.557972\n",
"make 0.556152\n",
"bore 0.471904\n",
"fuel-system 0.447296\n",
"height 0.352667\n",
"stroke 0.323039\n",
"drive-wheels 0.314699\n",
"num-of-cylinders 0.313724\n",
"normalized-losses 0.288269\n",
"peak-rpm 0.226938\n",
"symboling 0.213840\n",
"compression-ratio 0.186054\n",
"engine-type 0.156490\n",
"aspiration 0.080632\n",
"body-style 0.057173\n",
"fuel-type 0.039664\n",
"engine-location 0.034692\n",
"num-of-doors 0.006551\n",
"Name: MI Scores, dtype: float64"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mi_scores = mutual_info_regression(X, y, discrete_features=discrete_features)\n",
"mi_scores = pd.Series(mi_scores, name=\"MI Scores\", index=X.columns).sort_values(ascending=False)\n",
"mi_scores"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8e0e1f10-981c-401b-80c9-b07a54364a85",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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jrBt2zaef/55zGYzCxYs4JNPPuHs2bPExsby4IMPsnTpUtavX8+9997L4sWL+c1vfkOfPn1Yt27dRdc9dOgQs2fPxmw288wzzzBo0CACAwPJyspi6tSpBAUF8d5777F69Wruu+++anO3bNlCx44d+f3vf09VVRVnz56t9v7AgQMZOHAgTqeT5557jrvvvpvS0tIrWltEREQurM4XLXv27OHgwYOkpaUBUFFRQWhoKGazma5duwIQExPD7t27AcjPzyc1NRWAPn36sGTJkguu265dO89pzJGRkZSUlFBWVsaRI0eYOnUqAE6nk7i4uPPmtmrVitdeew2n00lCQgLR0dEXvMbixYtp164d3bp1Y+fOnVe0NoDNZsNmswGQkZFx2XskIuIrwsPDvR1CrTCbzYbJ9adqOu86X7S43W769evHQw89VO33q1atwmQyAeDn54fL5bqqdQMCAjw//zjf7XbTvn17nnnmmWpjDxw4wBtvvAHA0KFD6datGzNmzCA3N5dXX32Ve+65h379+lWbs3HjRo4dO8Zjjz3myeNCa19IUlISSUlJV5WPiIgvMMpzHnqm5dpd6pmWOv+R5/bt25OTk8OpU6cAOH36NMeOHbvo+NjYWP7zn/8AsG3btqu6VlxcHF999RVFRUUAOBwOCgsLiY2NxWq1YrVa6datG8eOHePmm28mKSmJX/3qVxw8eLDaOgUFBaxatYqnn34aPz+/S64tIiIiV6bOd1oiIyN54IEHeOGFF3C73fj7+zNy5MiLjn/00Ud5+eWXycrKolOnTp4toCsRGhpKSkoKf/vb36isrATggQceOK/q27t3L6tWrcLf35+goCCeeuqpau+vXbuW06dPM2PGDODcdtLo0aOvaG0RERG5sHr3keezZ88SGBiIyWRi69atbN26lYkTJ3o7rOtitI6MEduqRswZjJm3cjYGI+YM+sjzVSsoKODNN9/E7XYTEhLCk08+6e2QRERE5Aaod0WLxWLBarV6OwwRERG5wer8g7giIiIioKJFREREfISKFhEREfEJKlpERETEJ6hoEREREZ+gokVERER8Qr37yHN95HpisLdDqFXF3g7AC4yYMxgzb1/I2X9+trdDELkgr3Va7HY748ePP+/3y5Yt85zYfDHLly8nO1v/U4mIiBhJneu0DB061NshiIiISB3k1aKlqqqK119/nfz8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X5k4cSIvv/wybdu2Zc6cOQQGBpKbm+sZFxwczJw5cxg0aBCLFy8GYPHixfzmN79hzpw56vCIiIhcpXrbadmzZw89e/YkNDQUgEaNGl10rMlkom/fvmzevJk777yT/Px8nnrqqQuO7dy5M2azmaioKKqqqujUqRMAUVFRHDt2zDOud+/enj/feustAPLz8z3dmz59+ly0y2Kz2bDZbABkZGRcTdoi4uPCw8O9HcINZzab62Vel2LEnKHm8663RcvV6t+/P5mZmQQGBtKrVy/8/f1Zu3Yt69evByAtLQ049x8EwM/PD39/f0wmE3Cu8HG5XJ71fvz9z3++EklJSSQlJV1XPiLim+rjycBGPPHYiDmDTnm+Zu3atSMnJ4cffvgBgNOnT1d7PygoiDNnznheh4WF0bhxY95991369+8PwKBBg7BarVit1qveztm2bZvnz9jYWABiY2P5z3/+U+19ERERuTL1ttPSokULfve73zF9+nT8/PyIjo7mlltu8bzfv39/5s+fT2BgIDNnziQwMJA77riDH374gcjIyOu+/unTp5kwYQIBAQGMGzcOgEcffZSXX36ZrKwsOnXqRHBw8HVfR0RExChMbrfb7e0g6oqFCxfSsmVL7rrrrutaJyUlhfT0dM/zND86e/YsgYGBmEwmtm7dytatWz2fWLqUw3d3u654RMR31MfvaTHiVokRc4aa3x6qt52WqzVp0iSCgoJ45JFHauwaBQUFvPnmm7jdbkJCQnjyySevaF59/EvsUoz4P7sRcwZj5m3EnEVuFHVafEBhYaG3Q6hVRvxL3Yg5gzHzVs7GYMScQQ/iioiIiAAqWkRERMRHqGgRERERn6CiRURERHyCihYRERHxCSpaRERExCfoe1p8gOuJwd4OoVYVezsALzBiznD9eRvtO4xEjE6dlmuUnp5OWVnZeb9fvnw52dnn/iLduHEjJ06c8LyXkpJCaWlprcUoIiJSn6houUZpaWmEhIRccszGjRs5efJkLUUkIiJSv2l76CKys7Mxm80kJyezePFivv32W6ZNm8aePXv4+OOP+eqrrzznC2VlZbFp0yZCQ0Np0qQJMTEx5OTk8M033/DSSy95DmUEWLt2LTt37sTpdPKXv/yF5s2bezlTERER36BOy0XEx8eTl5cHnDszyOFw4HQ62b9/PxaLxTOuoKCArVu3Mnv2bNLS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2LNnD0VFRTRv3hx/f39MJhMAfn5+uFwuANxuNzNnziQwMLDaem63m/Hjx593U06dOuX5eebMmfzP//wPrVq1YvTo0QCea/z05zfffJN77rmHbt26sXfvXv79738DMGTIELp06UJubi5Tp05lypQpnt8PGDDgRt4eERERw/CJB3Hj4+NZtWoVFouF+Ph4PvroI6Kjo6sVEj/XoUMH1q5d63l96NAhADp27MgHH3yA2+0G4ODBg+fNnTJlClar1VOwAGzbts3zZ2xsLHCuexMWFgbApk2bPGOLioqIiopiyJAhtGrViu+//56OHTuyYcPReM4AACAASURBVMMGHA4HcK5L89NCSURERC6tzndaACwWCytXriQuLo6goCACAwOxWCyXnDNixAgWLlzIhAkTcLlcWCwWRo0axX333cfixYuZMGECbrebiIgIJk+efNkYTp8+zYQJEwgICGDcuHEA/OEPf2Du3LmEhITQrl077HY7AGvWrGHv3r2YTCYiIyPp3LkzAQEBfP/9956uS1BQEE8//TS/+MUvrvPuiIiIGIPJ/WPLQeqswsJCb4dQq4y4F2zEnMGYeStnYzBizlDzz7T4xPaQiIiIiIoWERER8QkqWkRERMQnqGgRERERn6CiRURERHyCihYRERHxCSpaRERExCf4xJfLGZ3ricHeDqFWFXs7AC/w9Zz952d7OwQRMQB1WmrIxo0bWbhwobfDEBERqTdUtIiIiIhP0PbQJdjtdmbNmkVsbCz5+fm0atWK/v378+9//5tTp04xduxYABYtWkRlZSWBgYGMGTPmvK8gzs3N5d1332XSpEkcPHiQ5cuX43Q6adq0KWPGjCEoKMgb6YmIiPgUdVouo6ioiN/+9rfMmzeP77//ni1btvDcc88xbNgwsrKyaNasGc899xyzZ8/m/vvv5//9v/9Xbf6OHTt47733SEtLAyArK4upU6eSmZlJTEwMq1ev9kZaIiIiPkedlsuIiIggKioKgBYtWtC+fXtMJhNRUVEcO3aM8vJyXn31VYqKigBwuVyeuXv27KGgoIApU6YQHBzMzp07OXLkCFOnTgXA6XQSFxd33jVtNhs2mw2AjIyMmk5R5LqFh4df0zyz2XzNc32VcjYGI+YMNZ+3ipbLCAgI8PxsMpk8r00mE1VVVSxbtoy2bduSmpqK3W5nxowZnvFNmzbFbrdz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X2jdurWnEouMjOSBBx7ghRdewO124+/vz8iRI7nlllsuutaaNWvYu3cvJpOJyMhIOnfuDMDNN99M8+bN6d69u2fs9u3b2bx5M/7+/tx88838/ve/p1GjRtx+++2MHz+eTp06MWzYML7//numTJkCQFBQEE8//fQlHwYWERGRq2Ny/3TPxeDOnj3LhAkTyMzMJDg42NvheBQWFno7hFplxLaqEXMGY+atnI3BiDlDzW8P+Uynpabt3r2b119/nbvvvrtOFSwiIiJyjoqW/9WhQwf+/ve/ezsMERERuQg9dCEiIiI+QUWLiIiI+AQVLSIiIuITVLSIiIiIT1DRIiIiIj5BRYuIiIj4BH3k+X/Z7XYyMzOZM2fOFY1ft24dDRo0uORp0hs3buSbb75h5MiR572XlZXF73//+yu6luuJwVc0rr4o9nYA18F/fra3QxARqbfUablGAwcOvGTBcjkrV668gdGIiIjUf+q0/ERVVRWvv/46+fn5hIWFMXHiRE6cOMHChQspLS2lQYMG/OlPf6J58+YsX76coKAgBg8ezNdff83rr7+OyWSiQ4cOfPHFF56OzcmTJ5k5cybFxcUkJCTw8MMP884771BRUUFqaiotWrRg7NixXs5cRESk7lOn5SeOHj3KoEGDmDt3LsHBweTk5PDGG2/w2GOPkZmZybBhw1iwYMF581577TVGjRqF1Wo975DEQ4cO8ec//5n/+3//L9u2baOkpIQ//vGPBAYGYrVaVbCIiIhcIXVafiIiIoLo6GgAYmJiOHbsGF999RVz5871jHE6ndXmlJWVcebMGeLi4gDo06cPubm5nvfbtWvnOcsoMjKSkpISwsPDLxmHzWbDZrMBkJGRcd15Se253H/bizGbzdc815cZMW/lbAxGzBlqPm8VLT8REBDg+dnPz49Tp04REhKC1Wq9YWu6XK7LzklKSiIpKemarynec62nm+pEWONQzsZgxJyh5k951vbQJTRs2JCIiAi2b98OgNvt5tChQ9XGhISE0LBhQw4cOADA1q1br2hts9l8XtdGRERELk6dlssYO3Ys8+fPJysrC6fTSe/evT1bSD8aPXo0//jHPzCZTLRp08azHXQpv/rVr0hNTaVly5Z6rkVEROQKmNxut9vbQfg6h8NBUFAQAO+99x4nT55kxIgRN2z9wsLCG7aWLzBiW9WIOYMx81bO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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mi_scores.sort_values(ascending=True).plot(kind='barh', figsize=(8,8))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b1e9a133-f331-4445-8042-1e71fa5d02f3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.relplot(x='curb-weight', y='price', data=df)"
]
},
{
"cell_type": "markdown",
"id": "a8504740-0abc-4ca0-b624-0ca582846d55",
"metadata": {},
"source": [
"- MI doesnot take into account interaction effect\n",
"- 'fuel-type' is low on MI but adding it improves the price explaination (Don't reject just based on MI) "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "897a2ec9-68fc-4823-91c2-de3239e1f86b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.lmplot(x=\"horsepower\", y=\"price\", hue=\"fuel-type\", data=df);"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1cbc3e6f-20d7-4ff8-97ef-46cb54d173e0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" symboling | \n",
" normalized-losses | \n",
" wheel-base | \n",
" length | \n",
" width | \n",
" height | \n",
" curb-weight | \n",
" engine-size | \n",
" bore | \n",
" stroke | \n",
" compression-ratio | \n",
" horsepower | \n",
" peak-rpm | \n",
" city-mpg | \n",
" highway-mpg | \n",
" price | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 3 | \n",
" NaN | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" 130 | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
" 13495.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 3 | \n",
" NaN | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" 130 | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
" 16500.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" NaN | \n",
" 94.5 | \n",
" 171.2 | \n",
" 65.5 | \n",
" 52.4 | \n",
" 2823 | \n",
" 152 | \n",
" 2.68 | \n",
" 3.47 | \n",
" 9.0 | \n",
" 154.0 | \n",
" 5000.0 | \n",
" 19 | \n",
" 26 | \n",
" 16500.0 | \n",
"
\n",
" \n",
" 3 | \n",
" 2 | \n",
" 164.0 | \n",
" 99.8 | \n",
" 176.6 | \n",
" 66.2 | \n",
" 54.3 | \n",
" 2337 | \n",
" 109 | \n",
" 3.19 | \n",
" 3.40 | \n",
" 10.0 | \n",
" 102.0 | \n",
" 5500.0 | \n",
" 24 | \n",
" 30 | \n",
" 13950.0 | \n",
"
\n",
" \n",
" 4 | \n",
" 2 | \n",
" 164.0 | \n",
" 99.4 | \n",
" 176.6 | \n",
" 66.4 | \n",
" 54.3 | \n",
" 2824 | \n",
" 136 | \n",
" 3.19 | \n",
" 3.40 | \n",
" 8.0 | \n",
" 115.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 22 | \n",
" 17450.0 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 200 | \n",
" -1 | \n",
" 95.0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 2952 | \n",
" 141 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 23 | \n",
" 28 | \n",
" 16845.0 | \n",
"
\n",
" \n",
" 201 | \n",
" -1 | \n",
" 95.0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.8 | \n",
" 55.5 | \n",
" 3049 | \n",
" 141 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 8.7 | \n",
" 160.0 | \n",
" 5300.0 | \n",
" 19 | \n",
" 25 | \n",
" 19045.0 | \n",
"
\n",
" \n",
" 202 | \n",
" -1 | \n",
" 95.0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3012 | \n",
" 173 | \n",
" 3.58 | \n",
" 2.87 | \n",
" 8.8 | \n",
" 134.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 23 | \n",
" 21485.0 | \n",
"
\n",
" \n",
" 203 | \n",
" -1 | \n",
" 95.0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3217 | \n",
" 145 | \n",
" 3.01 | \n",
" 3.40 | \n",
" 23.0 | \n",
" 106.0 | \n",
" 4800.0 | \n",
" 26 | \n",
" 27 | \n",
" 22470.0 | \n",
"
\n",
" \n",
" 204 | \n",
" -1 | \n",
" 95.0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3062 | \n",
" 141 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 19 | \n",
" 25 | \n",
" 22625.0 | \n",
"
\n",
" \n",
"
\n",
"
205 rows × 16 columns
\n",
"
"
],
"text/plain": [
" symboling normalized-losses wheel-base ... city-mpg highway-mpg price\n",
"0 3 NaN 88.6 ... 21 27 13495.0\n",
"1 3 NaN 88.6 ... 21 27 16500.0\n",
"2 1 NaN 94.5 ... 19 26 16500.0\n",
"3 2 164.0 99.8 ... 24 30 13950.0\n",
"4 2 164.0 99.4 ... 18 22 17450.0\n",
".. ... ... ... ... ... ... ...\n",
"200 -1 95.0 109.1 ... 23 28 16845.0\n",
"201 -1 95.0 109.1 ... 19 25 19045.0\n",
"202 -1 95.0 109.1 ... 18 23 21485.0\n",
"203 -1 95.0 109.1 ... 26 27 22470.0\n",
"204 -1 95.0 109.1 ... 19 25 22625.0\n",
"\n",
"[205 rows x 16 columns]"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.select_dtypes(['float','int'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fe9d6417-215a-4f55-b70b-efc25b70d8aa",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(205, 26)"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9b5be928-604a-4976-b145-5314cd16137c",
"metadata": {},
"outputs": [],
"source": [
"num_cols = df.select_dtypes(['float', 'int']).columns"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0e400990-199c-4632-a637-ab2c502118ab",
"metadata": {},
"outputs": [],
"source": [
"cat_cols = df.select_dtypes('object').columns"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1811dce8-c735-4043-b8af-c03d99e4fcfa",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "28c6db5da1924a7c912b9c8b5e11a1e4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='num_col', options=('symboling', 'normalized-losses', 'wheel-base',…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"@interact(num_col=num_cols, cat_col=cat_cols)\n",
"def plot(num_col, cat_col):\n",
" sns.relplot(x=num_col, y='price', data=df)\n",
" sns.lmplot(x=num_col, y=\"price\", hue=cat_col, data=df)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c35a6760-3b57-46f4-9a8a-2e8e23cf3917",
"metadata": {},
"outputs": [],
"source": [
"X_train, X_holdout, y_train, y_holdout = train_test_split(X, y, test_size=0.2, random_state=42)"
]
},
{
"cell_type": "markdown",
"id": "4be03e96-dd27-4d90-8882-8e40ad57843b",
"metadata": {},
"source": [
"## Baseline Model"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "101041c8-a7c8-47fe-a1f5-90a295a56ae3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestRegressor()"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = RandomForestRegressor(); model"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f7d2ea45-f217-4406-bb46-e87d21b19a4b",
"metadata": {},
"outputs": [],
"source": [
"scores = cross_val_score(model, X_train, y_train, cv=5, scoring='r2')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ab2ad95b-bc4e-495e-afaf-971dd6a58275",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7978904308207849"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scores.mean()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ff57010d-117a-4ee2-8988-07217e173f21",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.85095168, 0.95340487, 0.7862429 , 0.91746912, 0.48138359])"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scores"
]
},
{
"cell_type": "markdown",
"id": "8faf9418-97be-4336-a182-b6d0d2db7b4a",
"metadata": {},
"source": [
"This model is not yet fitted. It basically tracks the capacity / ( over-fitting of raw model on Data).cross_val_score copies the estimator before fitting the same on parts. The model then needs to be trained on complete dataset before predicting on the holdout data "
]
},
{
"cell_type": "markdown",
"id": "5518b5fd-1165-4162-b270-444f146ad4a0",
"metadata": {},
"source": [
"```{note}\n",
"https://stackoverflow.com/questions/42263915/using-sklearn-cross-val-score-and-kfolds-to-fit-and-help-predict-model\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6f2d2fdf-8cc0-409a-bef7-642fbac2acdd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestRegressor()"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "91a8a383-4a31-4794-8a95-b65cfc492c95",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.8505374645526409"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r2_score(y_holdout, model.predict(X_holdout))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5e0a6e5f-9985-464a-b272-2ded91231ea9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.96246216169697"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r2_score(y_train, model.predict(X_train))"
]
},
{
"cell_type": "markdown",
"id": "cf17fa19-1de5-4bad-885d-88885abdcada",
"metadata": {},
"source": [
"## Reduced Feature Model"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "07107cbc-8b48-4198-ab82-8e2f6829cf54",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['curb-weight', 'engine-size', 'highway-mpg', 'horsepower', 'city-mpg',\n",
" 'width', 'length', 'wheel-base', 'make', 'bore', 'fuel-system',\n",
" 'height', 'stroke', 'drive-wheels', 'num-of-cylinders'],\n",
" dtype='object')"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mi_scores[:15].index"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d8a6bbd3-4a5b-42e5-b2dc-b25a73e1f2f6",
"metadata": {},
"outputs": [],
"source": [
"model_reduced = RandomForestRegressor()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6fa8b675-cd0d-4cf4-81b3-8e37c10fe174",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7850512535366945"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scores = cross_val_score(model_reduced, X_train[mi_scores[:15].index], y_train, cv=5, scoring='r2'); scores.mean()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "51097beb-335f-4412-ad61-f537305c82bf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.85217899, 0.93233023, 0.76150246, 0.9104315 , 0.46881309])"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scores"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c70e82e9-efde-4f92-a610-554a43b91d07",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestRegressor()"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_reduced.fit(X_train[mi_scores[:15].index], y_train)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "537d544f-e155-4320-82e1-f25f1e7196a7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.8265900980656524, 0.9694392691698007)"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r2_score(y_holdout, model_reduced.predict(X_holdout[mi_scores[:15].index])), r2_score(y_train, model_reduced.predict(X_train[mi_scores[:15].index]))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "42bdda5a-1877-45eb-85e5-48dd12632e94",
"metadata": {},
"outputs": [],
"source": [
"def feature_model(X_train, y_train, X_holdout, y_holdout, mi_scores, estimator=RandomForestRegressor(), n_cols=10):\n",
" sel_cols = mi_scores[:n_cols].index\n",
" scores = cross_val_score(estimator, X_train[sel_cols], y_train, cv=5, scoring='r2')\n",
" model.fit(X_train[sel_cols], y_train)\n",
" return {\n",
" 'k': n_cols,\n",
" 'cv_mean': scores.mean(), \n",
" 'holdout':r2_score(y_holdout, model.predict(X_holdout[sel_cols])), \n",
" 'train': r2_score(y_train, model.predict(X_train[sel_cols]))\n",
" }\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "63785626-93e3-4dd0-be5a-9507377f1e47",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'cv_mean': 0.787900056041571,\n",
" 'holdout': 0.8268471781204396,\n",
" 'k': 10,\n",
" 'train': 0.9732744993383893}"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"feature_model(X_train, y_train, X_holdout, y_holdout, mi_scores, n_cols=10)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2b2c7063-ba7f-4257-b2c2-7e768ad0ed94",
"metadata": {},
"outputs": [],
"source": [
"df_features = pd.DataFrame([feature_model(X_train, y_train, X_holdout, y_holdout, mi_scores, n_cols=k) for k in range(1,25)])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7273a165-1e09-421d-9ab7-f8420859d2de",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_features.plot(x='k')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "86a170ae-b064-43b7-afe4-bcbecc0c8490",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" k | \n",
" cv_mean | \n",
" holdout | \n",
" train | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 0.681796 | \n",
" 0.332996 | \n",
" 0.953905 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 0.698563 | \n",
" 0.564750 | \n",
" 0.959669 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 0.763651 | \n",
" 0.802725 | \n",
" 0.962008 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" 0.786535 | \n",
" 0.828275 | \n",
" 0.971400 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" 0.786793 | \n",
" 0.836906 | \n",
" 0.965836 | \n",
"
\n",
" \n",
" 5 | \n",
" 6 | \n",
" 0.785895 | \n",
" 0.832797 | \n",
" 0.958112 | \n",
"
\n",
" \n",
" 6 | \n",
" 7 | \n",
" 0.781646 | \n",
" 0.840111 | \n",
" 0.968623 | \n",
"
\n",
" \n",
" 7 | \n",
" 8 | \n",
" 0.796786 | \n",
" 0.834703 | \n",
" 0.960458 | \n",
"
\n",
" \n",
" 8 | \n",
" 9 | \n",
" 0.797306 | \n",
" 0.821109 | \n",
" 0.971560 | \n",
"
\n",
" \n",
" 9 | \n",
" 10 | \n",
" 0.784905 | \n",
" 0.836016 | \n",
" 0.967543 | \n",
"
\n",
" \n",
" 10 | \n",
" 11 | \n",
" 0.791368 | \n",
" 0.835919 | \n",
" 0.968914 | \n",
"
\n",
" \n",
" 11 | \n",
" 12 | \n",
" 0.794696 | \n",
" 0.836563 | \n",
" 0.960086 | \n",
"
\n",
" \n",
" 12 | \n",
" 13 | \n",
" 0.783753 | \n",
" 0.842935 | \n",
" 0.970898 | \n",
"
\n",
" \n",
" 13 | \n",
" 14 | \n",
" 0.787471 | \n",
" 0.833692 | \n",
" 0.958966 | \n",
"
\n",
" \n",
" 14 | \n",
" 15 | \n",
" 0.795940 | \n",
" 0.840154 | \n",
" 0.967076 | \n",
"
\n",
" \n",
" 15 | \n",
" 16 | \n",
" 0.800306 | \n",
" 0.834524 | \n",
" 0.954770 | \n",
"
\n",
" \n",
" 16 | \n",
" 17 | \n",
" 0.797541 | \n",
" 0.835549 | \n",
" 0.967275 | \n",
"
\n",
" \n",
" 17 | \n",
" 18 | \n",
" 0.787937 | \n",
" 0.842294 | \n",
" 0.974459 | \n",
"
\n",
" \n",
" 18 | \n",
" 19 | \n",
" 0.793785 | \n",
" 0.840984 | \n",
" 0.966164 | \n",
"
\n",
" \n",
" 19 | \n",
" 20 | \n",
" 0.792703 | \n",
" 0.845809 | \n",
" 0.967088 | \n",
"
\n",
" \n",
" 20 | \n",
" 21 | \n",
" 0.800757 | \n",
" 0.857779 | \n",
" 0.962757 | \n",
"
\n",
" \n",
" 21 | \n",
" 22 | \n",
" 0.788593 | \n",
" 0.841297 | \n",
" 0.969550 | \n",
"
\n",
" \n",
" 22 | \n",
" 23 | \n",
" 0.799097 | \n",
" 0.849720 | \n",
" 0.968724 | \n",
"
\n",
" \n",
" 23 | \n",
" 24 | \n",
" 0.780353 | \n",
" 0.844495 | \n",
" 0.962705 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" k cv_mean holdout train\n",
"0 1 0.681796 0.332996 0.953905\n",
"1 2 0.698563 0.564750 0.959669\n",
"2 3 0.763651 0.802725 0.962008\n",
"3 4 0.786535 0.828275 0.971400\n",
"4 5 0.786793 0.836906 0.965836\n",
"5 6 0.785895 0.832797 0.958112\n",
"6 7 0.781646 0.840111 0.968623\n",
"7 8 0.796786 0.834703 0.960458\n",
"8 9 0.797306 0.821109 0.971560\n",
"9 10 0.784905 0.836016 0.967543\n",
"10 11 0.791368 0.835919 0.968914\n",
"11 12 0.794696 0.836563 0.960086\n",
"12 13 0.783753 0.842935 0.970898\n",
"13 14 0.787471 0.833692 0.958966\n",
"14 15 0.795940 0.840154 0.967076\n",
"15 16 0.800306 0.834524 0.954770\n",
"16 17 0.797541 0.835549 0.967275\n",
"17 18 0.787937 0.842294 0.974459\n",
"18 19 0.793785 0.840984 0.966164\n",
"19 20 0.792703 0.845809 0.967088\n",
"20 21 0.800757 0.857779 0.962757\n",
"21 22 0.788593 0.841297 0.969550\n",
"22 23 0.799097 0.849720 0.968724\n",
"23 24 0.780353 0.844495 0.962705"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_features"
]
},
{
"cell_type": "markdown",
"id": "3c69419c-1256-4f2e-aa02-2a6e0f4d15f2",
"metadata": {},
"source": [
"## Creating Custom Features"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "37699b25-4ff9-4708-aece-90b46e5976ea",
"metadata": {},
"outputs": [],
"source": [
"def feature_extractors(X, callbacks=None):\n",
" features = X\n",
" if callbacks:\n",
" features = pd.concat([callback(X) for callback in callbacks] + [X], axis=1)\n",
" return features\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1b1bae44-6026-4cfe-871c-73870b33fde6",
"metadata": {},
"outputs": [],
"source": [
"\n",
"def create_custom_features(X):\n",
" features = pd.DataFrame()\n",
" features['stroke_ratio'] = X['stroke']/X['bore']\n",
" features['displacement'] = np.pi*((X['bore']*0.5)**2)*X['stroke']*X['num-of-cylinders']\n",
" return features"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "445af22c-f6a1-4fff-b420-6e89aee76b87",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" stroke_ratio | \n",
" displacement | \n",
" symboling | \n",
" normalized-losses | \n",
" make | \n",
" fuel-type | \n",
" aspiration | \n",
" num-of-doors | \n",
" body-style | \n",
" drive-wheels | \n",
" engine-location | \n",
" wheel-base | \n",
" length | \n",
" width | \n",
" height | \n",
" curb-weight | \n",
" engine-type | \n",
" num-of-cylinders | \n",
" engine-size | \n",
" fuel-system | \n",
" bore | \n",
" stroke | \n",
" compression-ratio | \n",
" horsepower | \n",
" peak-rpm | \n",
" city-mpg | \n",
" highway-mpg | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.772334 | \n",
" 0.000000 | \n",
" 3 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" 0 | \n",
" 0 | \n",
" 130 | \n",
" 0 | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.772334 | \n",
" 0.000000 | \n",
" 3 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 88.6 | \n",
" 168.8 | \n",
" 64.1 | \n",
" 48.8 | \n",
" 2548 | \n",
" 0 | \n",
" 0 | \n",
" 130 | \n",
" 0 | \n",
" 3.47 | \n",
" 2.68 | \n",
" 9.0 | \n",
" 111.0 | \n",
" 5000.0 | \n",
" 21 | \n",
" 27 | \n",
"
\n",
" \n",
" 2 | \n",
" 1.294776 | \n",
" 19.574422 | \n",
" 1 | \n",
" 0.0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 94.5 | \n",
" 171.2 | \n",
" 65.5 | \n",
" 52.4 | \n",
" 2823 | \n",
" 1 | \n",
" 1 | \n",
" 152 | \n",
" 0 | \n",
" 2.68 | \n",
" 3.47 | \n",
" 9.0 | \n",
" 154.0 | \n",
" 5000.0 | \n",
" 19 | \n",
" 26 | \n",
"
\n",
" \n",
" 3 | \n",
" 1.065831 | \n",
" 0.000000 | \n",
" 2 | \n",
" 164.0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
" 99.8 | \n",
" 176.6 | \n",
" 66.2 | \n",
" 54.3 | \n",
" 2337 | \n",
" 2 | \n",
" 0 | \n",
" 109 | \n",
" 0 | \n",
" 3.19 | \n",
" 3.40 | \n",
" 10.0 | \n",
" 102.0 | \n",
" 5500.0 | \n",
" 24 | \n",
" 30 | \n",
"
\n",
" \n",
" 4 | \n",
" 1.065831 | \n",
" 54.347574 | \n",
" 2 | \n",
" 164.0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 2 | \n",
" 0 | \n",
" 99.4 | \n",
" 176.6 | \n",
" 66.4 | \n",
" 54.3 | \n",
" 2824 | \n",
" 2 | \n",
" 2 | \n",
" 136 | \n",
" 0 | \n",
" 3.19 | \n",
" 3.40 | \n",
" 8.0 | \n",
" 115.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 22 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 200 | \n",
" 0.833333 | \n",
" 0.000000 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 2952 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 23 | \n",
" 28 | \n",
"
\n",
" \n",
" 201 | \n",
" 0.833333 | \n",
" 0.000000 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.8 | \n",
" 55.5 | \n",
" 3049 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 8.7 | \n",
" 160.0 | \n",
" 5300.0 | \n",
" 19 | \n",
" 25 | \n",
"
\n",
" \n",
" 202 | \n",
" 0.801676 | \n",
" 28.889354 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3012 | \n",
" 1 | \n",
" 1 | \n",
" 173 | \n",
" 0 | \n",
" 3.58 | \n",
" 2.87 | \n",
" 8.8 | \n",
" 134.0 | \n",
" 5500.0 | \n",
" 18 | \n",
" 23 | \n",
"
\n",
" \n",
" 203 | \n",
" 1.129568 | \n",
" 24.193672 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3217 | \n",
" 2 | \n",
" 1 | \n",
" 145 | \n",
" 6 | \n",
" 3.01 | \n",
" 3.40 | \n",
" 23.0 | \n",
" 106.0 | \n",
" 4800.0 | \n",
" 26 | \n",
" 27 | \n",
"
\n",
" \n",
" 204 | \n",
" 0.833333 | \n",
" 0.000000 | \n",
" -1 | \n",
" 95.0 | \n",
" 21 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 109.1 | \n",
" 188.8 | \n",
" 68.9 | \n",
" 55.5 | \n",
" 3062 | \n",
" 2 | \n",
" 0 | \n",
" 141 | \n",
" 0 | \n",
" 3.78 | \n",
" 3.15 | \n",
" 9.5 | \n",
" 114.0 | \n",
" 5400.0 | \n",
" 19 | \n",
" 25 | \n",
"
\n",
" \n",
"
\n",
"
205 rows × 27 columns
\n",
"
"
],
"text/plain": [
" stroke_ratio displacement symboling ... peak-rpm city-mpg highway-mpg\n",
"0 0.772334 0.000000 3 ... 5000.0 21 27\n",
"1 0.772334 0.000000 3 ... 5000.0 21 27\n",
"2 1.294776 19.574422 1 ... 5000.0 19 26\n",
"3 1.065831 0.000000 2 ... 5500.0 24 30\n",
"4 1.065831 54.347574 2 ... 5500.0 18 22\n",
".. ... ... ... ... ... ... ...\n",
"200 0.833333 0.000000 -1 ... 5400.0 23 28\n",
"201 0.833333 0.000000 -1 ... 5300.0 19 25\n",
"202 0.801676 28.889354 -1 ... 5500.0 18 23\n",
"203 1.129568 24.193672 -1 ... 4800.0 26 27\n",
"204 0.833333 0.000000 -1 ... 5400.0 19 25\n",
"\n",
"[205 rows x 27 columns]"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"feature_extractors(X, callbacks=[create_custom_features]).fillna(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "39416140-a03d-45f7-8dfc-6b7b283860b1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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kZOTQ1xcHFC9seO8efPYvHkzK1asYNKkSaxYsYKf//zn9O7dmw0bNlyydrvdjt1uByAlJeUGfzIi4mtCQ0O9XcJNYzab63W+yzFq9trkrrdNy969e+nevTvBwcEANGrU6JLnmkwm+vTpw5YtW/jpT39KXl4ef/zjHy967j333IPZbCYiIoKqqio6d+4MQEREBCdOnPCc16tXL8+/b775JgB5eXme2ZvevXtfcpYlPj6e+Pj4a0wsIvVVfd6fxqj774Bxs9dm76F627Rcq379+pGamorFYqFHjx74+/uzfv16PvroIwAmT54MVHeIAH5+fvj7+2MymYDqxqeystIz3vm///hnERERuT719ttD7du3Jzs7m++//x6AM2fO1DhutVopKyvz/B4SEkLjxo15++236devHwADBw4kLS2NtLS0a16wu337ds+/0dHRAERHR/Of//ynxnERERG5OvV2pqVly5Y88sgjTJ8+HT8/PyIjI2natKnneL9+/Vi8eDEWi4XZs2djsVi4//77+f777wkPD6/1/c+cOcP48eMJCAhg7NixADz99NO88sorpKen07lzZwIDA69qLKO+o0FTp8Zj1OxGzS1yrept0wLVjcn5WZMf6969O927d6/xt9zcXB588MFLjvfoo4/W+P2Ha1J+fGzw4ME88cQTNf4WEhLC7NmzMZlMbNu2jYKCgquJISIiItTzpuVaTJw4EavVypNPPnnT7pGfn8+yZctwu90EBQXxhz/84abdS0REpL4xud1ut7eLkMsz6oyMUafMjZobjJvdqLlB2Y2YvTbfHqq3C3FFRESkflHTIiIiIj5BTYuIiIj4BDUtIiIi4hP07SEfUDlqsLdL8IoibxfgJUbNDbXLbtT3GYkYiWZarlNycjJnz5694O9r1qwhI6P6f55ZWVkUFxd7jiUmJlJSUnLLahQREalP1LRcp8mTJxMUFHTZc7Kysjh16tQtqkhERKR+0+OhS8jIyMBsNjNo0CBWrFjB119/zbRp09i7dy8bN27k4MGDJCcnExwcTHp6Ops3byY4OJgmTZoQFRVFdnY2X331FS+//LJnqwCA9evX89lnn+FyufjTn/5EixYtvJxURETEN2im5RJiY2PJzc0Fqt9k63Q6cblcHDhwAJvN5jkvPz+fbdu2MXfuXCZPnsxXX30FVG8T0Lp1a8aMGUNaWhoW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G0M/1LRpU8aNG8df/vIXjh49SkxMDAcPHvTMyjidTsPu4CwiInKtNNNSS7/61a9YuHAh6enpdOnS5YLjLVq0YMyYMcyfP5+JEyeSmJjIn//8Z86dOwfA0KFDL9tVioiISDWT2+12e7sIuTyjzsZo6tR4jJrdqLlB2Y2YXY+HREREpN5T0yIiIiI+QU2LiIiI+AQ1LSIiIuIT1LSIiIiIT1DTIiIiIj5BTYuIiIj4BL1c7ho5HA5SU1OZN2/eLbtn5ajBt+xedUmRtwvwkhud239xxg0eUUTEOzTTcgtVVVV5uwQRERGfpZmW61BZWcnLL7/M4cOHCQ8P549//CN5eXmsXLmSyspKWrduzahRowgICCAxMZEePXrwxRdfMHjwYBo1asSaNWtwuVw0a9aMhIQErFartyOJiIjUeZppuQ4FBQUMGDCABQsW0LBhQ9577z1effVVnn/+eebNm0dVVRUbNmzwnH/bbbeRmppKhw4dSE9PZ+rUqaSmphIVFcV7773nxSQiIiK+QzMt16FJkybExsYC0KdPH95++23CwsI8+yX07duXf//73zz00EMA9OzZE4BDhw5x7Ngxpk6dCoDL5SImJuaC8e12O3a7HYCUlJSbnkfqt9DQUG+XcNXMZrNP1XujGDU3KLsRs9cmt5qW62AymWr8HhgYyJkzZy55foMGDQBwu9106NCB559//rLjx8fHEx8fX/tCRcCnNmTTBnLGo+zGy64NE2+xkydPkpeXB8DWrVtp3bo1DoeDwsJCALZs2ULbtm0vuC4mJoaDBw96znM6nYbdwVlERORaaablOjRv3pz169ezaNEiWrRowfDhw4mOjmb+/Pmehbj9+/e/4Lrg4GASExP585//zLlz5wAYOnToZbtKERERqWZyu91ubxchl2fU2RhNnRqPUbMbNTcouxGz6/GQiIiI1HtqWkRERMQnqGkRERERn6CmRURERHyCmhYRERHxCWpaRERExCeoaRERERGfUOdfLrdu3To+/PBDWrVqxZgxY67p2sTERJKTkwkODr6hNZ09e5atW7fys5/97IaOeymVowbfkvvUNUXeLsBLapPbf3HGDatDRKSuqfNNy4YNG5g6dSpNmjTxdikeZ8+eZcOGDbesaREREZE63rS88cYbFBUVMWfOHE6ePMlvfvMbBg+unnUYN24cEydOJCwsjC1btvDB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5SqSHWDdunX86U9/ws7OzgpVPhwVyb5r1y7+8Ic/4OLiAkCdOnWsUWqVqkhujUZj2QU+Pz8fNzc3a5Ra5Zo3b275syzLkSNH6NGjBxqNhqZNm5KXl8fPP//8CCt8eMrL3qxZM8vPfX19uXHjxqMq7aEqLzfAtm3b6NixI66urhUeV5qWaiA7O5u6detavq9bt+5d/zj/+hidToezszO5ubmPtM6qVpHcv7Z7927atGnzKEp76CqSPSUlhaysrBqxPPBrFcmelpZGeno6s2bNYubMmRw7duxRl1nlKpL7+eefZ9++fbzyyissWLCA8ePHP+oyrSI7OxsPDw/L9+X9Lqipdu/ezTPPPGPtMh6J7OxsDh06RP/+/R/oPGlahE3Yu3cvKSkpDB061NqlPBJms5lPPvmEsWPHWrsUqzCbzaSnpzN79mxef/113n//ffLy8qxd1kN34MABevXqxXvvvUdoaChLly7FbDZbuyzxCJw6dYo9e/bwt7/9zdqlPBIfffQRf/vb39BqH6wNkQdxqwF3d/dSU4I3btzA3d29zGPq1q2LyWQiPz+f2rVrP+pSq1RFcgOcOHGCTZs2ERYWVmOWScrLbjQaSU1NZc6cOQD88ssvREVFMX36dJt/GLeif999fX3R6/V4enry5JNPkp6eTpMmTR51uVWmIrl3797NjBkzAGjatClFRUXk5ubWiOWx+3F3dycrK8vy/b1+F9RU//vf/3j//fcJDQ21+d/rFXXhwgWWLFkCQE5ODj/++CNarZbAwMD7niczLdWAj48P6enpZGZmUlxcTEJCAu3bty91TLt27YiPjwdK3k3SokULNBqNFaqtOhXJffHiRT788EOmT59eo35xl5fd2dmZlStXEhMTQ0xMDL6+vjWiYYGK/bkHBgaSlJQElPxCS09Pp169etYot8pUJLeHhwenTp0C4MqVKxQVFT3Qer+tat++PXv37kVRFM6ePYuzs3ONeZ6nPFlZWSxcuJBXX32V+vXrW7ucR+bO77aYmBg6derExIkTy21YQD5crtpITEzk448/xmw207t3b/785z+zbt06fHx8aN++PYWFhSxbtoyLFy/i4uLClClTbP6XOJSfe+7cuVy+fJnHHnsMKPml/uabb1q56qpRXvZfCwsLY8yYMTWiaYHysyuKwieffMKxY8fQarX8+c9/pmvXrtYuu9LKy33lyhXef/99jEYjAKNHj6Z169ZWrrry/vOf/5CcnGyZNfrLX/5CcXExAP3790dRFFauXMnx48ext7cnODi4xvxdLy/7e++9xw8//GB5pken0xEREWHNkqtEebl/LSYmhnbt2lXoLc/StAghhBDCJsjykBBCCCFsgjQtQgghhLAJ0rQIIYQQwiZI0yKEEEIImyBNixBCCCFsgjQtQgghhLAJ0rQIIYQQwiZI0yKEEEIIm/B/VN9joJFDjncAAAAASUVORK5CYII=\n",
"text/plain": [
"