Files
ML-portfolio/housing-price-regression/housing-ml-notebook.ipynb

15921 lines
1.2 MiB
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"execution_count": 4,
"id": "672968e0-d0ba-459a-81dc-27fa86e70a55",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "78a15aa0-1a54-4540-b7c8-7fd8218ed7c7",
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(\"housing.csv\")\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b41a3066-b257-4f6e-a823-3ddaeda970a3",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-122.23</td>\n",
" <td>37.88</td>\n",
" <td>41.0</td>\n",
" <td>880.0</td>\n",
" <td>129.0</td>\n",
" <td>322.0</td>\n",
" <td>126.0</td>\n",
" <td>8.3252</td>\n",
" <td>452600.0</td>\n",
" <td>NEAR BAY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-122.22</td>\n",
" <td>37.86</td>\n",
" <td>21.0</td>\n",
" <td>7099.0</td>\n",
" <td>1106.0</td>\n",
" <td>2401.0</td>\n",
" <td>1138.0</td>\n",
" <td>8.3014</td>\n",
" <td>358500.0</td>\n",
" <td>NEAR BAY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-122.24</td>\n",
" <td>37.85</td>\n",
" <td>52.0</td>\n",
" <td>1467.0</td>\n",
" <td>190.0</td>\n",
" <td>496.0</td>\n",
" <td>177.0</td>\n",
" <td>7.2574</td>\n",
" <td>352100.0</td>\n",
" <td>NEAR BAY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-122.25</td>\n",
" <td>37.85</td>\n",
" <td>52.0</td>\n",
" <td>1274.0</td>\n",
" <td>235.0</td>\n",
" <td>558.0</td>\n",
" <td>219.0</td>\n",
" <td>5.6431</td>\n",
" <td>341300.0</td>\n",
" <td>NEAR BAY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-122.25</td>\n",
" <td>37.85</td>\n",
" <td>52.0</td>\n",
" <td>1627.0</td>\n",
" <td>280.0</td>\n",
" <td>565.0</td>\n",
" <td>259.0</td>\n",
" <td>3.8462</td>\n",
" <td>342200.0</td>\n",
" <td>NEAR BAY</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>20635</th>\n",
" <td>-121.09</td>\n",
" <td>39.48</td>\n",
" <td>25.0</td>\n",
" <td>1665.0</td>\n",
" <td>374.0</td>\n",
" <td>845.0</td>\n",
" <td>330.0</td>\n",
" <td>1.5603</td>\n",
" <td>78100.0</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20636</th>\n",
" <td>-121.21</td>\n",
" <td>39.49</td>\n",
" <td>18.0</td>\n",
" <td>697.0</td>\n",
" <td>150.0</td>\n",
" <td>356.0</td>\n",
" <td>114.0</td>\n",
" <td>2.5568</td>\n",
" <td>77100.0</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20637</th>\n",
" <td>-121.22</td>\n",
" <td>39.43</td>\n",
" <td>17.0</td>\n",
" <td>2254.0</td>\n",
" <td>485.0</td>\n",
" <td>1007.0</td>\n",
" <td>433.0</td>\n",
" <td>1.7000</td>\n",
" <td>92300.0</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20638</th>\n",
" <td>-121.32</td>\n",
" <td>39.43</td>\n",
" <td>18.0</td>\n",
" <td>1860.0</td>\n",
" <td>409.0</td>\n",
" <td>741.0</td>\n",
" <td>349.0</td>\n",
" <td>1.8672</td>\n",
" <td>84700.0</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20639</th>\n",
" <td>-121.24</td>\n",
" <td>39.37</td>\n",
" <td>16.0</td>\n",
" <td>2785.0</td>\n",
" <td>616.0</td>\n",
" <td>1387.0</td>\n",
" <td>530.0</td>\n",
" <td>2.3886</td>\n",
" <td>89400.0</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>20640 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"0 -122.23 37.88 41.0 880.0 129.0 \n",
"1 -122.22 37.86 21.0 7099.0 1106.0 \n",
"2 -122.24 37.85 52.0 1467.0 190.0 \n",
"3 -122.25 37.85 52.0 1274.0 235.0 \n",
"4 -122.25 37.85 52.0 1627.0 280.0 \n",
"... ... ... ... ... ... \n",
"20635 -121.09 39.48 25.0 1665.0 374.0 \n",
"20636 -121.21 39.49 18.0 697.0 150.0 \n",
"20637 -121.22 39.43 17.0 2254.0 485.0 \n",
"20638 -121.32 39.43 18.0 1860.0 409.0 \n",
"20639 -121.24 39.37 16.0 2785.0 616.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"0 322.0 126.0 8.3252 452600.0 \n",
"1 2401.0 1138.0 8.3014 358500.0 \n",
"2 496.0 177.0 7.2574 352100.0 \n",
"3 558.0 219.0 5.6431 341300.0 \n",
"4 565.0 259.0 3.8462 342200.0 \n",
"... ... ... ... ... \n",
"20635 845.0 330.0 1.5603 78100.0 \n",
"20636 356.0 114.0 2.5568 77100.0 \n",
"20637 1007.0 433.0 1.7000 92300.0 \n",
"20638 741.0 349.0 1.8672 84700.0 \n",
"20639 1387.0 530.0 2.3886 89400.0 \n",
"\n",
" ocean_proximity \n",
"0 NEAR BAY \n",
"1 NEAR BAY \n",
"2 NEAR BAY \n",
"3 NEAR BAY \n",
"4 NEAR BAY \n",
"... ... \n",
"20635 INLAND \n",
"20636 INLAND \n",
"20637 INLAND \n",
"20638 INLAND \n",
"20639 INLAND \n",
"\n",
"[20640 rows x 10 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "fa39cc9c-8e33-47e1-9dd7-c726bd694414",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 20640 entries, 0 to 20639\n",
"Data columns (total 10 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 20640 non-null float64\n",
" 1 latitude 20640 non-null float64\n",
" 2 housing_median_age 20640 non-null float64\n",
" 3 total_rooms 20640 non-null float64\n",
" 4 total_bedrooms 20433 non-null float64\n",
" 5 population 20640 non-null float64\n",
" 6 households 20640 non-null float64\n",
" 7 median_income 20640 non-null float64\n",
" 8 median_house_value 20640 non-null float64\n",
" 9 ocean_proximity 20640 non-null object \n",
"dtypes: float64(9), object(1)\n",
"memory usage: 1.6+ MB\n"
]
}
],
"source": [
"df.info()\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "eb85a210-c746-4bc5-946e-29bee08e4719",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ocean_proximity\n",
"<1H OCEAN 9136\n",
"INLAND 6551\n",
"NEAR OCEAN 2658\n",
"NEAR BAY 2290\n",
"ISLAND 5\n",
"Name: count, dtype: int64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.ocean_proximity.value_counts()\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "9264960e-9bb2-4a16-afb8-63375adefba6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.frame.DataFrame"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(df)\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4f891d84-2aa3-4354-911c-f2274dc473f3",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>20640.000000</td>\n",
" <td>20640.000000</td>\n",
" <td>20640.000000</td>\n",
" <td>20640.000000</td>\n",
" <td>20433.000000</td>\n",
" <td>20640.000000</td>\n",
" <td>20640.000000</td>\n",
" <td>20640.000000</td>\n",
" <td>20640.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-119.569704</td>\n",
" <td>35.631861</td>\n",
" <td>28.639486</td>\n",
" <td>2635.763081</td>\n",
" <td>537.870553</td>\n",
" <td>1425.476744</td>\n",
" <td>499.539680</td>\n",
" <td>3.870671</td>\n",
" <td>206855.816909</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.003532</td>\n",
" <td>2.135952</td>\n",
" <td>12.585558</td>\n",
" <td>2181.615252</td>\n",
" <td>421.385070</td>\n",
" <td>1132.462122</td>\n",
" <td>382.329753</td>\n",
" <td>1.899822</td>\n",
" <td>115395.615874</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-124.350000</td>\n",
" <td>32.540000</td>\n",
" <td>1.000000</td>\n",
" <td>2.000000</td>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.499900</td>\n",
" <td>14999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-121.800000</td>\n",
" <td>33.930000</td>\n",
" <td>18.000000</td>\n",
" <td>1447.750000</td>\n",
" <td>296.000000</td>\n",
" <td>787.000000</td>\n",
" <td>280.000000</td>\n",
" <td>2.563400</td>\n",
" <td>119600.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-118.490000</td>\n",
" <td>34.260000</td>\n",
" <td>29.000000</td>\n",
" <td>2127.000000</td>\n",
" <td>435.000000</td>\n",
" <td>1166.000000</td>\n",
" <td>409.000000</td>\n",
" <td>3.534800</td>\n",
" <td>179700.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-118.010000</td>\n",
" <td>37.710000</td>\n",
" <td>37.000000</td>\n",
" <td>3148.000000</td>\n",
" <td>647.000000</td>\n",
" <td>1725.000000</td>\n",
" <td>605.000000</td>\n",
" <td>4.743250</td>\n",
" <td>264725.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-114.310000</td>\n",
" <td>41.950000</td>\n",
" <td>52.000000</td>\n",
" <td>39320.000000</td>\n",
" <td>6445.000000</td>\n",
" <td>35682.000000</td>\n",
" <td>6082.000000</td>\n",
" <td>15.000100</td>\n",
" <td>500001.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms \\\n",
"count 20640.000000 20640.000000 20640.000000 20640.000000 \n",
"mean -119.569704 35.631861 28.639486 2635.763081 \n",
"std 2.003532 2.135952 12.585558 2181.615252 \n",
"min -124.350000 32.540000 1.000000 2.000000 \n",
"25% -121.800000 33.930000 18.000000 1447.750000 \n",
"50% -118.490000 34.260000 29.000000 2127.000000 \n",
"75% -118.010000 37.710000 37.000000 3148.000000 \n",
"max -114.310000 41.950000 52.000000 39320.000000 \n",
"\n",
" total_bedrooms population households median_income \\\n",
"count 20433.000000 20640.000000 20640.000000 20640.000000 \n",
"mean 537.870553 1425.476744 499.539680 3.870671 \n",
"std 421.385070 1132.462122 382.329753 1.899822 \n",
"min 1.000000 3.000000 1.000000 0.499900 \n",
"25% 296.000000 787.000000 280.000000 2.563400 \n",
"50% 435.000000 1166.000000 409.000000 3.534800 \n",
"75% 647.000000 1725.000000 605.000000 4.743250 \n",
"max 6445.000000 35682.000000 6082.000000 15.000100 \n",
"\n",
" median_house_value \n",
"count 20640.000000 \n",
"mean 206855.816909 \n",
"std 115395.615874 \n",
"min 14999.000000 \n",
"25% 119600.000000 \n",
"50% 179700.000000 \n",
"75% 264725.000000 \n",
"max 500001.000000 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "ed19073e-94a3-4b3f-bec5-eb9d1fc78d22",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[<Axes: title={'center': 'longitude'}>,\n",
" <Axes: title={'center': 'latitude'}>,\n",
" <Axes: title={'center': 'housing_median_age'}>],\n",
" [<Axes: title={'center': 'total_rooms'}>,\n",
" <Axes: title={'center': 'total_bedrooms'}>,\n",
" <Axes: title={'center': 'population'}>],\n",
" [<Axes: title={'center': 'households'}>,\n",
" <Axes: title={'center': 'median_income'}>,\n",
" <Axes: title={'center': 'median_house_value'}>]], dtype=object)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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wrZijvbBEXK0V101nvEz0fm4TjsX12frZMLe5rsmIiIiIiKibtNjr6kkIiIiIiKino9FJREREREREVmMRSURERERERFZjEUlERERERERWYxFZTd79dVXMWbMGLi5uZm8+e/XX3+NKVOmICAgAK6urhg2bBjeeustg5gDBw5g0qRJ8PPzg7u7O+666y5s27atzfcePHgwZDKZwd+iRYt6TF4AcOLECURERMDV1RU33XQTXnnlFbQ1l1RVVRUSExOhVCqhVCqRmJiIS5cudUteAPD8889j5MiRUCgUuOuuu4yeV6vVRutdJpPB3d291ffuqu3VGTmdPn3aZE4ajabV9+7KbWVP1q1bh+HDh0s3WA4PD8enn34KANDpdHjxxRcREhICd3d3+Pv746mnnsJPP/3U6jKzs7NNbrOrV692R0omtZYnAEyfPt2ov6NHj25zuR988AFuv/12KBQK3H777di1a1dXptGqtnI0tU1kMhlef/31FpfZE7fljdLT0yGTyZCcnCy1CSGgVqvh7+8PV1dXREZGorS0tM1l9aRtSV1r7dq1CAwMhIuLC0aOHIl//vOf1u6STUhPT8fdd98NDw8P+Pj44JFHHkFZWZlBjKXfP+rc8czesajsZg0NDXjsscfw7LPPmny+uLgYAwYMQE5ODkpLS7F06VIsXrwYWVlZUkxBQQGGDx+ODz74AMePH8fTTz+Np556Cnv27Gnz/fVTgOv/XnrppR6TV01NDaKiouDv74+ioiJkZmbijTfewKpVq1p974SEBJSUlECj0UCj0aCkpASJiYndkhdwfXB5+umn8fjjj5t8fsGCBQbr/Ny5c7j99tvx2GOPtfn+XbG9OiMnvX379hn078EHH2w1viu3lT0ZOHAgXnvtNXz55Zf48ssv8eCDD2LSpEkoLS1FXV0dvvrqKyxbtgxfffUVdu7ciW+//RZxcXFtLtfT09Pos+ji4tINGZnWWp5648ePN+jv3r17W11mYWEhHn/8cSQmJuLrr79GYmIi4uPjceTIka5Ox6S2cmy+Pf7yl79AJpPhd7/7XavL7WnbUq+oqAgbNmzA8OHDDdozMjKwatUqZGVloaioCCqVClFRUaitrW1xWT1tW1LXef/995GcnIylS5fi2LFjuO+++zBhwgT88MMP1u5aj5efn485c+bg8OHDyMvLw7Vr1xAdHY0rV65I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jo4WAwYMEHK5XNx8881i2rRp4ocffjBYRvM8hRDi73//uxg6dKiQy+XitttuEx988EF3pWSktRz11q9fL1xdXcWlS5dMLsMWtmVzzXfCmpqaxPLly4VKpRIKhULcf//94sSJE0av6cnbkrrW22+/LX1XfvOb30i3xKDWtfTvwebNm6UYc75/1DJLxjNHJBPi/8+EQkRERERERNROvE8lERERERERWYxFJREREREREVmMRSURERERERFZjEWlgyooKIBarcalS5csev327duxZs2aDvUhMjISkZGRHVoGEdk+Wx2PIiMjERwc3KH3NdfgwYMxffr0bnkvIqL2UKvVkMlkFr127969UKvVJp/juGdbWFQ6qIKCAqSmplp1J46ICOB4RETkqPbu3YvU1FSTz+3atQvLli3r5h6RpZys3QGijqqrq4Obm5u1u0FEZFX19fVwcXGx+IgBEVFPMmLECGt3gdqBRyodkFqtxh//+EcAQGBgIGQyGWQyGQ4cOICmpiZkZGTgtttug0KhgI+PD5566imcPXtWen1kZCQ++eQTnDlzRnrtjTsxqampCAsLg5eXFzw9PfGb3/wGmzZtQmfcvUZ/utnBgwcxZswYuLm54emnnwYA/PDDD3jyySfh4+MDhUKBYcOG4c0330RTU5PBMn755RfMnj0bN910E5ydnXHLLbdg6dKl0Gq1BnEymQzPPfccNm/ejKFDh8LV1RWhoaE4fPgwhBB4/fXXERgYiD59+uDBBx/E999/b/D6Y8eOITY2VuqPv78/Jk6caLAuiRydLY9Hev/85z8xevRouLq64qabbsKyZcvQ2NhoENPQ0IAVK1ZIuQwYMAC///3vceHCBYM4nU6HhQsXQqVSwc3NDffeey+OHj1q9J7Z2dmQyWTIzc3F008/jQEDBsDNzQ1ardas9ab3l7/8BXfeeSdcXFzg5eWF3/72tzh16pRBzPTp09GnTx/8+9//RkxMDNzd3eHn54fXXnsNAHD48GHce++9cHd3x5AhQ7BlyxaD19fV1WHBggUIDAyU3ic0NBTvvfeeReubyJHoTy09duwYJk+eDE9PTyiVSjz55JMG44e533v9flRb49aBAweksfhGp0+fhkwmQ3Z2dqv9fv/99xEdHQ0/Pz+4urpi2LBhWLRoEa5cuSLFTJ8+HW+//TYAGIzfp0+fBmD69Fdz9vX0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hlwu747udRt7zc1e8wIcN7eamhoEBARI3136Fcczy3BdXMf18KvuWhccz1rG8axlzNf+2WLO5o5ndltU6k+p8PT0NGvQcnNzg6enp81sYHPZa272mhfA3Hg6lDGOZ5bhuriO6+FX3b0uOJ4Z43jWMuZr/2w557bGM57oT0RERERERBZjUUlEREREREQWY1FJREREREREFmNRSURERERERBaz24l6OsPgRZ+YbD/92sRu7gkRUdcwNc5xjCOinozjFlHPwyOVREREREREZDEWlURERERERGQxFpVERERERERkMRaVREREREREZDEWlURERERERGQxFpVERERERERkMRaVREREREREZDEWlURERERERGQxFpVERERERERkMRaVREREREREZDEWlURERERERGQxFpVERERERERkMRaVREREREREZLF2F5X/+9//8OSTT8Lb2xtubm646667UFxcLD0vhIBarYa/vz9cXV0RGRmJ0tJSg2VotVrMnTsX/fv3h7u7O+Li4nD27FmDmKqqKiQmJkKpVEKpVCIxMRGXLl2yLEsiIiIiO3Xt2jW89NJLCAwMhKurK2655Ra88soraGpqkmK4f0ZEXaldRWVVVRXuueceyOVyfPrpp/jmm2/w5ptvom/fvlJMRkYGVq1ahaysLBQVFUGlUiEqKgq1tbVSTHJyMnbt2oUdO3bg0KFDuHz5MmJjY9HY2CjFJCQkoKSkBBqNBhqNBiUlJUhMTOx4xkRERER2ZOXKlXjnnXeQlZWFU6dOISMjA6+//joyMzOlGO6fEVFXcmpP8MqVKxEQEIDNmzdLbYMHD5b+XwiBNWvWYOnSpZg8eTIAYMuWLfD19cX27duRlJSE6upqbNq0CVu3bsW4ceMAADk5OQgICMC+ffsQExODU6dOQaPR4PDhwwgLCwMAbNy4EeHh4SgrK8PQoUM7mjcRERGRXSgsLMSkSZMwceJEANf3zd577z18+eWXALh/RkRdr11F5e7duxETE4PHHnsM+fn5uOmmmzB79mzMnDkTAFBeXo6KigpER0dLr1EoFIiIiEBBQQGSkpJQXFwMnU5nEOPv74/g4GAUFBQgJiYGhYWFUCqV0oAFAKNHj4ZSqURBQQEHLSIiIqL/795778U777yDb7/9FkOGDMHXX3+NQ4cOYc2aNQCsu3+m1Wqh1WqlxzU1NQAAnU4H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sX37dp12GjrOra+httc/IdLS7TInfkVID1R3g3BqaqpO+eeff46bN2/q3EDco0cPnDhxQifum2++wY0bNxrcv6enJ6ZPn44XXngBRUVFuHXrFnr16gU/Pz/8+9//RlBQkMEfFxcXk9rxzDPPGGzH0aNHcfr06UZvhB42bBgAYOvWrTrl27Zta/Q1u3fvjjlz5mDkyJE4duyYSfUlosZFRETg559/hpubm8E+ou5MXFM/vwCkA4n6k5F9/PHHLdCC1jF69Gjs379f7xaB+w0fPhynTp3S65c2b94MmUwm5ay5wsPDYWdnh59//rnBvpyoPWG/c6//uHHjBr744gud8s2bN0uPA/eO7xwcHPSOCx80e6qhY6chQ4bg4YcfxqlTpxrsS+qulDBG586dMW7cOGzevBlfffUVSktL9S59lclksLe31xlQlpaWGjX7a937oH7b75/ErDXaZU48U0kPNHLkSISHh+Ott95CVVUVhgwZIs3+2r9/f51pmaOiovD222/jnXfeQWhoKE6dOoU1a9ZAqVTq7DM4OBgRERHo27cvOnfujNOnT2PLli0ICQmBk5MTgHud5+jRoxEeHo7p06eja9euuHbtGk6fPo1jx47hf/7nf0xqR69evfDaa68hOTkZHTp0wOjRo6XZX729vfHnP/+5weeGhYXh6aefxvz583Hz5k0EBQXhX//6F7Zs2aITV1lZiWHDhmHy5Mno3bs3XFxccPToUaSnpzd4xpWImiY6Ohqff/45nn76afz5z39G3759UVtbi/PnzyMjIwOxsbEIDg42+vNrSO/evfHoo49iwYIFEELA1dUVu3fvRmZmZhu0sGneffddfP3113j66aexaNEiBAQEoKKiAunp6YiJiUHv3r3x5z//GZs3b8aYMWPw7rvvwsfHB3v27MGHH36IN954Az179myRuvTo0QPvvvsuFi9ejF9++QWjRo1C586dcfnyZeTl5UlXrRC1F+x3gKlTp+KDDz7AtGnTcPbsWQQEBODQoUNISEjAs88+ixEjRgC4Nyh78cUX8emnn+LRRx9Fv379kJeXpzewNubY6aGHHkJycjKmTZuGa9eu4Y9//CM8PDxw5coV/Pvf/8aVK1ewdu1ak9rx8ssvY/v27ZgzZw66desm1btOREQEduzYgVmzZuGPf/wjLly4gL/+9a/w8vLCmTNnGt33gAED0KtXL8TFxeHOnTvo3Lkzdu7ciUOHDunEtUa7zIWDSnogmUyGL774AvHx8UhJScHy5cvh7u6OqKgoJCQk6HyT9pe//AVVVVXYuHEj/vu//xsDBw7EP//5T/zhD3/Q2eczzzyDXbt24f3338etW7fQtWtXTJ06FYsXL5Zihg0bhry8PCxfvhzR0dEoLy+Hm5sbHn/8cUycOLFJbVm7di0effRRbNiwAR988AGUSiVGjRqFxMREg/cq1enQoQN27dqFmJgYJCUloaamBkOGDMHevXvRu3dvKc7BwQHBwcHYsmULzp49C61Wi+7du+Ott97C/Pnzm1RnIjLM2dkZ3377LVasWIF169ahuLgYjo6O6N69O0aMGCF9U2zs59cQuVyO3bt3480338TMmTNhZ2eHESNGICsrS2fCHEvStWtX5OXlYcmSJVixYgWuXr2KLl264KmnnpLuIevSpQtycnKwcOFCLFy4EFVVVXjkkUeQlJQkrdHWUhYuXIjHH38cf//73/HZZ59Bo9FApVJhwIABeP3111v0tYhaG/ude8c6+/fvx+LFi/G3v/0NV65cQdeuXREXF4clS5boxL733nsAgKSkJNy4cQPPPPMMvvrqK517uo09dnrxxRfRvXt3JCUlYebMmbh+/To8PDzw5JNP6k3CaIwRI0bA29sbFy5cwOLFi/Xu8X7ppZdQVlaGjz76CJ9++ikeeeQRLFiwABcvXnzgl2EdO3bE7t27MWfOHLz++utQKBT405/+hDVr1uhNcNbS7TIXmRBCmLsSRERERERE1D7xnkoiIiIiIiJqMl7+SkRE1EZqa2tRW1vbaIydHf80E1HLsaV+586dO40+3qFDBy5l1EqYVSIiojby8ssvQy6XN/pDRNSSbKXfOXv27APb+e6775q7mlaL91QSERG1kbNnz+qtU1Yfl9kgopZkK/1OTU2N3hIe9anVaqjV6jaqkW0xeVB56dIlvPXWW/j6669RXV2Nnj17YsOGDQgMDAQACCGwdOlSrFu3DuXl5QgODsYHH3yAJ554QtqHRqNBXFwcPvvsM1RXV2P48OH48MMPdRakLy8vx7x586T1XCIjI5GcnIyHH364BZpNRERERERELcGky1/Ly8sxZMgQyOVyfP311zh16hTee+89nYFeUlISVq1ahTVr1uDo0aNQqVQYOXIkrl+/LsVER0dj586d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",
"text/plain": [
"<Figure size 1100x700 with 9 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.hist(bins=40,figsize=(11,7))"
]
},
{
"cell_type": "markdown",
"id": "39a18e13-0c74-42b4-80c4-c113899bc037",
"metadata": {},
"source": [
"#test"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "f911fdd5-cc05-4052-8d55-6a5a69c46cd6",
"metadata": {},
"outputs": [],
"source": [
"def suffle_and_split_df(df,test_ratio):\n",
" np.random.seed(40)\n",
" random_indices= np.random.permutation(len(df))\n",
" test_set_size = int(len(df) * test_ratio)\n",
" test_random_indices = random_indices[:test_set_size]\n",
" train_random_indices= random_indices[test_set_size:]\n",
" return df.iloc[train_random_indices],df.iloc[test_random_indices]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "fa9920e7-af7a-4484-9fc3-f620f315ad1e",
"metadata": {},
"outputs": [],
"source": [
"train_set,test_set = suffle_and_split_df(df,0.2)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "84bd123a-ffc5-44fc-93e9-c75653129ba4",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>9226</th>\n",
" <td>-120.04</td>\n",
" <td>36.93</td>\n",
" <td>11.0</td>\n",
" <td>3606.0</td>\n",
" <td>699.0</td>\n",
" <td>2074.0</td>\n",
" <td>644.0</td>\n",
" <td>2.6941</td>\n",
" <td>63300.0</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11826</th>\n",
" <td>-121.04</td>\n",
" <td>39.00</td>\n",
" <td>21.0</td>\n",
" <td>4059.0</td>\n",
" <td>730.0</td>\n",
" <td>1874.0</td>\n",
" <td>693.0</td>\n",
" <td>4.8051</td>\n",
" <td>174300.0</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4553</th>\n",
" <td>-118.24</td>\n",
" <td>34.06</td>\n",
" <td>33.0</td>\n",
" <td>390.0</td>\n",
" <td>199.0</td>\n",
" <td>435.0</td>\n",
" <td>193.0</td>\n",
" <td>1.1979</td>\n",
" <td>350000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10787</th>\n",
" <td>-117.92</td>\n",
" <td>33.64</td>\n",
" <td>25.0</td>\n",
" <td>2224.0</td>\n",
" <td>580.0</td>\n",
" <td>985.0</td>\n",
" <td>516.0</td>\n",
" <td>3.1305</td>\n",
" <td>268800.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4104</th>\n",
" <td>-118.35</td>\n",
" <td>34.13</td>\n",
" <td>39.0</td>\n",
" <td>1610.0</td>\n",
" <td>278.0</td>\n",
" <td>511.0</td>\n",
" <td>278.0</td>\n",
" <td>4.3333</td>\n",
" <td>385900.0</td>\n",
" <td>&lt;1H OCEAN</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>11532</th>\n",
" <td>-118.09</td>\n",
" <td>33.77</td>\n",
" <td>26.0</td>\n",
" <td>5359.0</td>\n",
" <td>1508.0</td>\n",
" <td>1829.0</td>\n",
" <td>1393.0</td>\n",
" <td>1.7675</td>\n",
" <td>61300.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16065</th>\n",
" <td>-122.48</td>\n",
" <td>37.75</td>\n",
" <td>49.0</td>\n",
" <td>2203.0</td>\n",
" <td>407.0</td>\n",
" <td>1052.0</td>\n",
" <td>405.0</td>\n",
" <td>4.4375</td>\n",
" <td>329200.0</td>\n",
" <td>NEAR BAY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14501</th>\n",
" <td>-117.23</td>\n",
" <td>32.86</td>\n",
" <td>16.0</td>\n",
" <td>1200.0</td>\n",
" <td>468.0</td>\n",
" <td>648.0</td>\n",
" <td>443.0</td>\n",
" <td>3.0450</td>\n",
" <td>100000.0</td>\n",
" <td>NEAR OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14555</th>\n",
" <td>-117.13</td>\n",
" <td>32.96</td>\n",
" <td>15.0</td>\n",
" <td>2267.0</td>\n",
" <td>292.0</td>\n",
" <td>1180.0</td>\n",
" <td>289.0</td>\n",
" <td>6.7120</td>\n",
" <td>240200.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11590</th>\n",
" <td>-118.01</td>\n",
" <td>33.78</td>\n",
" <td>26.0</td>\n",
" <td>2343.0</td>\n",
" <td>377.0</td>\n",
" <td>1166.0</td>\n",
" <td>373.0</td>\n",
" <td>6.0000</td>\n",
" <td>233100.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"9226 -120.04 36.93 11.0 3606.0 699.0 \n",
"11826 -121.04 39.00 21.0 4059.0 730.0 \n",
"4553 -118.24 34.06 33.0 390.0 199.0 \n",
"10787 -117.92 33.64 25.0 2224.0 580.0 \n",
"4104 -118.35 34.13 39.0 1610.0 278.0 \n",
"... ... ... ... ... ... \n",
"11532 -118.09 33.77 26.0 5359.0 1508.0 \n",
"16065 -122.48 37.75 49.0 2203.0 407.0 \n",
"14501 -117.23 32.86 16.0 1200.0 468.0 \n",
"14555 -117.13 32.96 15.0 2267.0 292.0 \n",
"11590 -118.01 33.78 26.0 2343.0 377.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"9226 2074.0 644.0 2.6941 63300.0 \n",
"11826 1874.0 693.0 4.8051 174300.0 \n",
"4553 435.0 193.0 1.1979 350000.0 \n",
"10787 985.0 516.0 3.1305 268800.0 \n",
"4104 511.0 278.0 4.3333 385900.0 \n",
"... ... ... ... ... \n",
"11532 1829.0 1393.0 1.7675 61300.0 \n",
"16065 1052.0 405.0 4.4375 329200.0 \n",
"14501 648.0 443.0 3.0450 100000.0 \n",
"14555 1180.0 289.0 6.7120 240200.0 \n",
"11590 1166.0 373.0 6.0000 233100.0 \n",
"\n",
" ocean_proximity \n",
"9226 INLAND \n",
"11826 INLAND \n",
"4553 <1H OCEAN \n",
"10787 <1H OCEAN \n",
"4104 <1H OCEAN \n",
"... ... \n",
"11532 <1H OCEAN \n",
"16065 NEAR BAY \n",
"14501 NEAR OCEAN \n",
"14555 <1H OCEAN \n",
"11590 <1H OCEAN \n",
"\n",
"[16512 rows x 10 columns]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_set\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "06692a5e-0d15-4c5f-b4c3-04228f0f9f26",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6607</th>\n",
" <td>-118.14</td>\n",
" <td>34.18</td>\n",
" <td>47.0</td>\n",
" <td>3457.0</td>\n",
" <td>622.0</td>\n",
" <td>1700.0</td>\n",
" <td>579.0</td>\n",
" <td>3.5164</td>\n",
" <td>226500.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>884</th>\n",
" <td>-121.97</td>\n",
" <td>37.54</td>\n",
" <td>31.0</td>\n",
" <td>1949.0</td>\n",
" <td>344.0</td>\n",
" <td>986.0</td>\n",
" <td>322.0</td>\n",
" <td>4.6349</td>\n",
" <td>196200.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9457</th>\n",
" <td>-123.84</td>\n",
" <td>39.83</td>\n",
" <td>19.0</td>\n",
" <td>1461.0</td>\n",
" <td>340.0</td>\n",
" <td>515.0</td>\n",
" <td>227.0</td>\n",
" <td>1.5278</td>\n",
" <td>145800.0</td>\n",
" <td>NEAR OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18681</th>\n",
" <td>-121.82</td>\n",
" <td>36.86</td>\n",
" <td>17.0</td>\n",
" <td>1573.0</td>\n",
" <td>272.0</td>\n",
" <td>142.0</td>\n",
" <td>55.0</td>\n",
" <td>2.1719</td>\n",
" <td>420000.0</td>\n",
" <td>NEAR OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4654</th>\n",
" <td>-118.33</td>\n",
" <td>34.05</td>\n",
" <td>48.0</td>\n",
" <td>2405.0</td>\n",
" <td>527.0</td>\n",
" <td>1868.0</td>\n",
" <td>502.0</td>\n",
" <td>3.3750</td>\n",
" <td>257800.0</td>\n",
" <td>&lt;1H OCEAN</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>19314</th>\n",
" <td>-122.87</td>\n",
" <td>38.43</td>\n",
" <td>36.0</td>\n",
" <td>1987.0</td>\n",
" <td>387.0</td>\n",
" <td>1065.0</td>\n",
" <td>347.0</td>\n",
" <td>4.0446</td>\n",
" <td>172200.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15433</th>\n",
" <td>-117.25</td>\n",
" <td>33.20</td>\n",
" <td>10.0</td>\n",
" <td>2050.0</td>\n",
" <td>473.0</td>\n",
" <td>1302.0</td>\n",
" <td>471.0</td>\n",
" <td>2.7961</td>\n",
" <td>131300.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3631</th>\n",
" <td>-118.43</td>\n",
" <td>34.23</td>\n",
" <td>35.0</td>\n",
" <td>2049.0</td>\n",
" <td>390.0</td>\n",
" <td>1286.0</td>\n",
" <td>385.0</td>\n",
" <td>4.4432</td>\n",
" <td>181500.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3689</th>\n",
" <td>-118.36</td>\n",
" <td>34.23</td>\n",
" <td>15.0</td>\n",
" <td>2485.0</td>\n",
" <td>742.0</td>\n",
" <td>1994.0</td>\n",
" <td>670.0</td>\n",
" <td>2.8333</td>\n",
" <td>183200.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11895</th>\n",
" <td>-117.36</td>\n",
" <td>33.97</td>\n",
" <td>32.0</td>\n",
" <td>1625.0</td>\n",
" <td>335.0</td>\n",
" <td>1212.0</td>\n",
" <td>327.0</td>\n",
" <td>2.7596</td>\n",
" <td>82200.0</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4128 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"6607 -118.14 34.18 47.0 3457.0 622.0 \n",
"884 -121.97 37.54 31.0 1949.0 344.0 \n",
"9457 -123.84 39.83 19.0 1461.0 340.0 \n",
"18681 -121.82 36.86 17.0 1573.0 272.0 \n",
"4654 -118.33 34.05 48.0 2405.0 527.0 \n",
"... ... ... ... ... ... \n",
"19314 -122.87 38.43 36.0 1987.0 387.0 \n",
"15433 -117.25 33.20 10.0 2050.0 473.0 \n",
"3631 -118.43 34.23 35.0 2049.0 390.0 \n",
"3689 -118.36 34.23 15.0 2485.0 742.0 \n",
"11895 -117.36 33.97 32.0 1625.0 335.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"6607 1700.0 579.0 3.5164 226500.0 \n",
"884 986.0 322.0 4.6349 196200.0 \n",
"9457 515.0 227.0 1.5278 145800.0 \n",
"18681 142.0 55.0 2.1719 420000.0 \n",
"4654 1868.0 502.0 3.3750 257800.0 \n",
"... ... ... ... ... \n",
"19314 1065.0 347.0 4.0446 172200.0 \n",
"15433 1302.0 471.0 2.7961 131300.0 \n",
"3631 1286.0 385.0 4.4432 181500.0 \n",
"3689 1994.0 670.0 2.8333 183200.0 \n",
"11895 1212.0 327.0 2.7596 82200.0 \n",
"\n",
" ocean_proximity \n",
"6607 <1H OCEAN \n",
"884 <1H OCEAN \n",
"9457 NEAR OCEAN \n",
"18681 NEAR OCEAN \n",
"4654 <1H OCEAN \n",
"... ... \n",
"19314 <1H OCEAN \n",
"15433 <1H OCEAN \n",
"3631 <1H OCEAN \n",
"3689 <1H OCEAN \n",
"11895 INLAND \n",
"\n",
"[4128 rows x 10 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_set"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "df9d638b-b4fc-4fab-83cf-16c65846a891",
"metadata": {},
"outputs": [],
"source": [
"from zlib import crc32"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "7e301aae-591c-4939-853d-9aa23b350b75",
"metadata": {},
"outputs": [],
"source": [
"def is_identifier_in_test_set(identifier,test_ratio):\n",
" return crc32(np.int64(identifier)) < test_ratio *2 ** 32"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "0a8e8e64-66fb-4ab1-8ddb-d8458c5ba6bb",
"metadata": {},
"outputs": [],
"source": [
"def split_train_test_with_identifier_hash(df,test_ratio,identifier_column):\n",
" identifiers =df[identifier_column]\n",
" in_test_set = identifiers.apply(lambda id_:is_identifier_in_test_set(id_,test_ratio))\n",
" return df.loc[~in_test_set],df.loc[in_test_set]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "df365973-acc7-4545-ac87-77b6c4433ddf",
"metadata": {},
"outputs": [],
"source": [
"train_set,test_set = split_train_test_with_identifier_hash(df.reset_index(),0.2,\"index\")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "6d235b1e-679c-4a1d-ac2a-3a0953f29885",
"metadata": {},
"outputs": [],
"source": [
"df_with_identifier = df\n",
"df_with_identifier[\"identifier\"] = df[\"longitude\"]*1000+ df[\"latitude\"]"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "dc101e16-2262-4af9-9bf5-75b63e75eca8",
"metadata": {},
"outputs": [],
"source": [
"train_set,test_set = split_train_test_with_identifier_hash(df_with_identifier,0.2,\"identifier\")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "0d87f499-a430-4c1a-b958-92edf8010e14",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "e73b385c-5c5a-4d69-af3e-3738e5cf238f",
"metadata": {},
"outputs": [],
"source": [
"train_set,test_set = train_test_split(df,test_size=0.2,random_state=40)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "3502c752-f578-4bf8-a4e8-840b911ac13c",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" <th>identifier</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>9226</th>\n",
" <td>-120.04</td>\n",
" <td>36.93</td>\n",
" <td>11.0</td>\n",
" <td>3606.0</td>\n",
" <td>699.0</td>\n",
" <td>2074.0</td>\n",
" <td>644.0</td>\n",
" <td>2.6941</td>\n",
" <td>63300.0</td>\n",
" <td>INLAND</td>\n",
" <td>-120003.07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11826</th>\n",
" <td>-121.04</td>\n",
" <td>39.00</td>\n",
" <td>21.0</td>\n",
" <td>4059.0</td>\n",
" <td>730.0</td>\n",
" <td>1874.0</td>\n",
" <td>693.0</td>\n",
" <td>4.8051</td>\n",
" <td>174300.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121001.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4553</th>\n",
" <td>-118.24</td>\n",
" <td>34.06</td>\n",
" <td>33.0</td>\n",
" <td>390.0</td>\n",
" <td>199.0</td>\n",
" <td>435.0</td>\n",
" <td>193.0</td>\n",
" <td>1.1979</td>\n",
" <td>350000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118205.94</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10787</th>\n",
" <td>-117.92</td>\n",
" <td>33.64</td>\n",
" <td>25.0</td>\n",
" <td>2224.0</td>\n",
" <td>580.0</td>\n",
" <td>985.0</td>\n",
" <td>516.0</td>\n",
" <td>3.1305</td>\n",
" <td>268800.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-117886.36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4104</th>\n",
" <td>-118.35</td>\n",
" <td>34.13</td>\n",
" <td>39.0</td>\n",
" <td>1610.0</td>\n",
" <td>278.0</td>\n",
" <td>511.0</td>\n",
" <td>278.0</td>\n",
" <td>4.3333</td>\n",
" <td>385900.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118315.87</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",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11532</th>\n",
" <td>-118.09</td>\n",
" <td>33.77</td>\n",
" <td>26.0</td>\n",
" <td>5359.0</td>\n",
" <td>1508.0</td>\n",
" <td>1829.0</td>\n",
" <td>1393.0</td>\n",
" <td>1.7675</td>\n",
" <td>61300.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118056.23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16065</th>\n",
" <td>-122.48</td>\n",
" <td>37.75</td>\n",
" <td>49.0</td>\n",
" <td>2203.0</td>\n",
" <td>407.0</td>\n",
" <td>1052.0</td>\n",
" <td>405.0</td>\n",
" <td>4.4375</td>\n",
" <td>329200.0</td>\n",
" <td>NEAR BAY</td>\n",
" <td>-122442.25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14501</th>\n",
" <td>-117.23</td>\n",
" <td>32.86</td>\n",
" <td>16.0</td>\n",
" <td>1200.0</td>\n",
" <td>468.0</td>\n",
" <td>648.0</td>\n",
" <td>443.0</td>\n",
" <td>3.0450</td>\n",
" <td>100000.0</td>\n",
" <td>NEAR OCEAN</td>\n",
" <td>-117197.14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14555</th>\n",
" <td>-117.13</td>\n",
" <td>32.96</td>\n",
" <td>15.0</td>\n",
" <td>2267.0</td>\n",
" <td>292.0</td>\n",
" <td>1180.0</td>\n",
" <td>289.0</td>\n",
" <td>6.7120</td>\n",
" <td>240200.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-117097.04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11590</th>\n",
" <td>-118.01</td>\n",
" <td>33.78</td>\n",
" <td>26.0</td>\n",
" <td>2343.0</td>\n",
" <td>377.0</td>\n",
" <td>1166.0</td>\n",
" <td>373.0</td>\n",
" <td>6.0000</td>\n",
" <td>233100.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-117976.22</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 11 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"9226 -120.04 36.93 11.0 3606.0 699.0 \n",
"11826 -121.04 39.00 21.0 4059.0 730.0 \n",
"4553 -118.24 34.06 33.0 390.0 199.0 \n",
"10787 -117.92 33.64 25.0 2224.0 580.0 \n",
"4104 -118.35 34.13 39.0 1610.0 278.0 \n",
"... ... ... ... ... ... \n",
"11532 -118.09 33.77 26.0 5359.0 1508.0 \n",
"16065 -122.48 37.75 49.0 2203.0 407.0 \n",
"14501 -117.23 32.86 16.0 1200.0 468.0 \n",
"14555 -117.13 32.96 15.0 2267.0 292.0 \n",
"11590 -118.01 33.78 26.0 2343.0 377.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"9226 2074.0 644.0 2.6941 63300.0 \n",
"11826 1874.0 693.0 4.8051 174300.0 \n",
"4553 435.0 193.0 1.1979 350000.0 \n",
"10787 985.0 516.0 3.1305 268800.0 \n",
"4104 511.0 278.0 4.3333 385900.0 \n",
"... ... ... ... ... \n",
"11532 1829.0 1393.0 1.7675 61300.0 \n",
"16065 1052.0 405.0 4.4375 329200.0 \n",
"14501 648.0 443.0 3.0450 100000.0 \n",
"14555 1180.0 289.0 6.7120 240200.0 \n",
"11590 1166.0 373.0 6.0000 233100.0 \n",
"\n",
" ocean_proximity identifier \n",
"9226 INLAND -120003.07 \n",
"11826 INLAND -121001.00 \n",
"4553 <1H OCEAN -118205.94 \n",
"10787 <1H OCEAN -117886.36 \n",
"4104 <1H OCEAN -118315.87 \n",
"... ... ... \n",
"11532 <1H OCEAN -118056.23 \n",
"16065 NEAR BAY -122442.25 \n",
"14501 NEAR OCEAN -117197.14 \n",
"14555 <1H OCEAN -117097.04 \n",
"11590 <1H OCEAN -117976.22 \n",
"\n",
"[16512 rows x 11 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_set"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "510aed03-e297-4135-a628-ae36ddbebb17",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" <th>identifier</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6607</th>\n",
" <td>-118.14</td>\n",
" <td>34.18</td>\n",
" <td>47.0</td>\n",
" <td>3457.0</td>\n",
" <td>622.0</td>\n",
" <td>1700.0</td>\n",
" <td>579.0</td>\n",
" <td>3.5164</td>\n",
" <td>226500.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118105.82</td>\n",
" </tr>\n",
" <tr>\n",
" <th>884</th>\n",
" <td>-121.97</td>\n",
" <td>37.54</td>\n",
" <td>31.0</td>\n",
" <td>1949.0</td>\n",
" <td>344.0</td>\n",
" <td>986.0</td>\n",
" <td>322.0</td>\n",
" <td>4.6349</td>\n",
" <td>196200.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-121932.46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9457</th>\n",
" <td>-123.84</td>\n",
" <td>39.83</td>\n",
" <td>19.0</td>\n",
" <td>1461.0</td>\n",
" <td>340.0</td>\n",
" <td>515.0</td>\n",
" <td>227.0</td>\n",
" <td>1.5278</td>\n",
" <td>145800.0</td>\n",
" <td>NEAR OCEAN</td>\n",
" <td>-123800.17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18681</th>\n",
" <td>-121.82</td>\n",
" <td>36.86</td>\n",
" <td>17.0</td>\n",
" <td>1573.0</td>\n",
" <td>272.0</td>\n",
" <td>142.0</td>\n",
" <td>55.0</td>\n",
" <td>2.1719</td>\n",
" <td>420000.0</td>\n",
" <td>NEAR OCEAN</td>\n",
" <td>-121783.14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4654</th>\n",
" <td>-118.33</td>\n",
" <td>34.05</td>\n",
" <td>48.0</td>\n",
" <td>2405.0</td>\n",
" <td>527.0</td>\n",
" <td>1868.0</td>\n",
" <td>502.0</td>\n",
" <td>3.3750</td>\n",
" <td>257800.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118295.95</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",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19314</th>\n",
" <td>-122.87</td>\n",
" <td>38.43</td>\n",
" <td>36.0</td>\n",
" <td>1987.0</td>\n",
" <td>387.0</td>\n",
" <td>1065.0</td>\n",
" <td>347.0</td>\n",
" <td>4.0446</td>\n",
" <td>172200.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-122831.57</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15433</th>\n",
" <td>-117.25</td>\n",
" <td>33.20</td>\n",
" <td>10.0</td>\n",
" <td>2050.0</td>\n",
" <td>473.0</td>\n",
" <td>1302.0</td>\n",
" <td>471.0</td>\n",
" <td>2.7961</td>\n",
" <td>131300.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-117216.80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3631</th>\n",
" <td>-118.43</td>\n",
" <td>34.23</td>\n",
" <td>35.0</td>\n",
" <td>2049.0</td>\n",
" <td>390.0</td>\n",
" <td>1286.0</td>\n",
" <td>385.0</td>\n",
" <td>4.4432</td>\n",
" <td>181500.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118395.77</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3689</th>\n",
" <td>-118.36</td>\n",
" <td>34.23</td>\n",
" <td>15.0</td>\n",
" <td>2485.0</td>\n",
" <td>742.0</td>\n",
" <td>1994.0</td>\n",
" <td>670.0</td>\n",
" <td>2.8333</td>\n",
" <td>183200.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118325.77</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11895</th>\n",
" <td>-117.36</td>\n",
" <td>33.97</td>\n",
" <td>32.0</td>\n",
" <td>1625.0</td>\n",
" <td>335.0</td>\n",
" <td>1212.0</td>\n",
" <td>327.0</td>\n",
" <td>2.7596</td>\n",
" <td>82200.0</td>\n",
" <td>INLAND</td>\n",
" <td>-117326.03</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4128 rows × 11 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"6607 -118.14 34.18 47.0 3457.0 622.0 \n",
"884 -121.97 37.54 31.0 1949.0 344.0 \n",
"9457 -123.84 39.83 19.0 1461.0 340.0 \n",
"18681 -121.82 36.86 17.0 1573.0 272.0 \n",
"4654 -118.33 34.05 48.0 2405.0 527.0 \n",
"... ... ... ... ... ... \n",
"19314 -122.87 38.43 36.0 1987.0 387.0 \n",
"15433 -117.25 33.20 10.0 2050.0 473.0 \n",
"3631 -118.43 34.23 35.0 2049.0 390.0 \n",
"3689 -118.36 34.23 15.0 2485.0 742.0 \n",
"11895 -117.36 33.97 32.0 1625.0 335.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"6607 1700.0 579.0 3.5164 226500.0 \n",
"884 986.0 322.0 4.6349 196200.0 \n",
"9457 515.0 227.0 1.5278 145800.0 \n",
"18681 142.0 55.0 2.1719 420000.0 \n",
"4654 1868.0 502.0 3.3750 257800.0 \n",
"... ... ... ... ... \n",
"19314 1065.0 347.0 4.0446 172200.0 \n",
"15433 1302.0 471.0 2.7961 131300.0 \n",
"3631 1286.0 385.0 4.4432 181500.0 \n",
"3689 1994.0 670.0 2.8333 183200.0 \n",
"11895 1212.0 327.0 2.7596 82200.0 \n",
"\n",
" ocean_proximity identifier \n",
"6607 <1H OCEAN -118105.82 \n",
"884 <1H OCEAN -121932.46 \n",
"9457 NEAR OCEAN -123800.17 \n",
"18681 NEAR OCEAN -121783.14 \n",
"4654 <1H OCEAN -118295.95 \n",
"... ... ... \n",
"19314 <1H OCEAN -122831.57 \n",
"15433 <1H OCEAN -117216.80 \n",
"3631 <1H OCEAN -118395.77 \n",
"3689 <1H OCEAN -118325.77 \n",
"11895 INLAND -117326.03 \n",
"\n",
"[4128 rows x 11 columns]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_set"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "9a1b0509-62ad-419f-aa73-b5e6a20445da",
"metadata": {},
"outputs": [],
"source": [
"df[\"median_income_categories\"] = pd.cut(df[\"median_income\"],bins =[0.0,1.5,3.0,4.5,6.0,np.inf],\n",
" labels = [1,2,3,4,5])"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "cf1b3843-9a49-40b9-98aa-0e0295240b3f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='median_income_categories'>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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oe3ixb+9zMOfPE3+ewL1Ok6zw6/Hag/rzFoEltZYD9bi/LSH3w1/r4Uv/X+rfyemd+/eiouL83rro6GhQWVlZVZA6d+/v0JDQ71qqqqqtH37dqsmNTVVtbW12rRpk1WzceNG1dbWWjUAAKBj8/lMzLFjx7R7925re+/evaqoqFBUVJQuueQS5ebmKj8/X4mJiUpMTFR+fr7Cw8OVnZ0tSXK5XBozZowmT56s6OhoRUVFacqUKerXr591tVJSUpKGDRumsWPH6sUXX5QkjRs3TpmZmVyZBAAAJF1AiNmyZYu+//3vW9unPocyatQoLVq0SFOnTlV9fb0mTJigmpoapaSkqKSkRBEREdZ95s6dq5CQEI0cOVL19fUaMmSIFi1apODgYKtm6dKlmjRpknUVU1ZW1ln/Ng0AAOh4fA4xgwcPljFnv3TL4XDI7XbL7XaftSYsLEwFBQUqKCg4a01UVJSWLFni6/AAAEAHwXcnAQAAWyLEAAAAW/LL34npSHr96m9+7d8ZbDT7hv/8bQF/Xpr38VM/9FvfAAD4A2diAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALRFiAACALQV8iPn973+v3r17KywsTP3799fatWvbekgAACAABHSI+dOf/qTc3FxNnz5d//jHP3TLLbfo9ttv1yeffNLWQwMAAG0soEPMnDlzNGbMGP385z9XUlKS5s2bp4SEBD3//PNtPTQAANDGQtp6AGfT0NCgrVu36le/+pVXe3p6usrLy1vUezweeTwea7u2tlaS9MUXX6ixsdFv4ww5edxvfUtSSLPRiRPNCmkMUlOzw2/H+fzzz/3Wd2thLQIHaxFY/LkerIVv2sPvhr/X4ujRo5IkY8zXF5sA9emnnxpJ5t133/Vq/+1vf2suv/zyFvWPP/64kcSNGzdu3Lhxawe3/fv3f21WCNgzMac4HN5J0hjTok2Spk2bpry8PGu7ublZX3zxhaKjo89Ybxd1dXVKSEjQ/v37FRkZ2dbD6dBYi8DBWgQO1iKwtIf1MMbo6NGjio+P/9ragA0xPXr0UHBwsKqrq73aDx06pNjY2Bb1TqdTTqfTq61bt27+HGKrioyMtO0/yPaGtQgcrEXgYC0Ci93Xw+VynVddwH6wt1OnTurfv79KS0u92ktLSzVw4MA2GhUAAAgUAXsmRpLy8vKUk5OjAQMGKDU1VS+99JI++eQTPfDAA209NAAA0MYCOsTcdddd+vzzz/XEE0+oqqpKycnJWrVqlS699NK2HlqrcTqdevzxx1u8VYbWx1oEDtYicLAWgaWjrYfDmPO5hgkAACCwBOxnYgAAAM6FEAMAAGyJEAMAAGyJEAMAAGyJEAMA+Ea4PgRthRADAPhGnE6ndu7c2dbDQAcU0H8nBt7279+vxx9/XC+//HJbD6VDqK+v19atWxUVFaUrr7zSa9+XX36pV155Rffee28bja5j2blzpzZs2KDU1FRdccUV+te//qXnnntOHo9HP/vZz3Tbbbe19RA7hK9+P91XNTU16amnnlJ0dLQkac6cOa05LPz/ampqVFRUpA8//FA9e/bUqFGjlJCQ0NbD8iv+ToyN/POf/9R1112npqamth5Ku7dr1y6lp6frk08+kcPh0C233KI//vGP6tmzpyTp4MGDio+PZy1aQXFxsYYPH66uXbvqxIkTWrlype69915dffXVMsaorKxMq1evJsi0gqCgIF199dUtvpeurKxMAwYMUJcuXeRwOPTWW2+1zQA7mPj4eG3btk3R0dHau3ev9ZU8/fr1086dO3X06FFt2LBBV1xxRRuP1H8IMQHk9ddfP+f+PXv2aPLkybxwtoIf/ehHOnnypBYuXKgjR44oLy9P27dv1zvvvKNLLrmEENOKBg4cqNtuu01PPvmkli9frgkTJujBBx/Ub3/7W0nS9OnTtXnzZpWUlLTxSNu/WbNmaf78+frDH/7gFRpDQ0P1z3/+s8UZS/hXUFCQqqurFRMTo7vvvlvV1dX629/+pvDwcHk8Hv3kJz9RWFiY/vznP7f1UP3HIGA4HA4TFBRkHA7HWW9BQUFtPcwOISYmxrz//vtebRMmTDCXXHKJ+eijj0x1dTVr0UoiIyPNhx9+aIwxpqmpyYSEhJitW7da+7dt22ZiY2PbangdzqZNm8zll19uJk+ebBoaGowxxoSEhJgdO3a08cg6HofDYQ4ePGiMMaZ3797mzTff9Nq/YcMGc/HFF7fF0FoNH+wNID179tSKFSvU3Nx8xtt7773X1kPsMOrr6xUS4v2Rsd/97nfKysrSoEGDtGvXrjYaWccWFBSksLAwr7czIiIiVFtb23aD6mCuv/56bd26VYcPH9aAAQO0bds2ORyOth5Wh3Xqsfd4PIqNjfXaFxsbq8OHD7fFsFoNISaA9O/f/5xBxeFwcCljK7niiiu0ZcuWFu0FBQUaPny4srKy2mBUHVOvXr20e/dua3v9+vW65JJLrO39+/dbn1VC6+jatauKioo0bdo0paWl8bZqGxoyZIiuu+461dXVtfifq08++UQ9evRoo5G1Dq5OCiCPPPKIjh8/ftb9l112md5+++1WHFHH9aMf/Uh//OMflZOT02JfYWGhmpub9cILL7TByDqeBx980OtFMjk52Wv/G2+8wYd628j/+3//TzfffLO2bt2qSy+9tK2H0+E8/vjjXtvh4eFe23/96191yy23tOaQWh0f7AUAALbE20kAAMCWCDEAAMCWCDEAAMCWCDEAAMCWCDGAjQwePFi5ubnWdq9evTRv3rxWO/7o0aN15513ttrx8O1xu9265ppr2noYwLeKq5MAGxk8eLCuueYaK7gcPnxYXbp0aXFppb/U1tbKGNPiu3PgbfTo0Tpy5IheffXVth6K5dixY/J4PNaXNALtAX8nBrCxiy66qFWP53K5WvV4+OaMMWpqalLXrl3VtWvXth4O8K3i7STgWzB48GBNnDhRubm56t69u2JjY/XSSy/p+PHjuu+++xQREaE+ffrojTfesO7zwQcf6Ac/+IG6du2q2NhY5eTk6LPPPrP2Hz9+XPfee6+6du2qnj176tlnn21x3NPfTpozZ4769eunLl26KCEhQRMmTNCxY8es/YsWLVK3bt20evVqJSUlqWvXrho2bJiqqqrOa56nv500ePBgTZo0SVOnTlVUVJTi4uLkdru97nPkyBGNGzdOsbGxCgsLU3Jysv73f//X2r9ixQp973vfk9PpVK9evVrMs1evXnryySetx+LSSy/Va6+9psOHD1vfbt2vX78Wf2G5vLxct956qzp37qyEhARNmjTpnH9M8qs8Ho+mTp2qhIQEOZ1OJSYmasGCBZKkpqYmjRkzRr1791bn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6iodOHBAu3btOuPZmCuvvFLr1q3zaisvL9fll19uvZheiOuuu047duzQZZdd5vN9+/Xrp+bmZpWVlWno0KEt9q9du1YDBw7UhAkTrLaPPvrIq6ZTp05e37x9akx/+tOfFBMTo8jIyDMeOzY2Vps2bbK+ebipqUn/+Mc/rLM8l112mTp16qR169YpOztbktTY2KgtW7Z4/f2grxMbG6vvfOc72rNnj+65556z1kVGRuquu+7SXXfdpZ/85CcaNmyYvvjiC0VFRZ33sQB/4uokoA089NBD+uKLL3T33Xdr06ZN2rNnj0pKSnT//fdbl8OOGTNGjzzyiN58801t375do0ePtsLJmfTp00cnT55UQUGB9uzZo8WLF+uFF15oxVm1NGjQIN1666368Y9/rNLSUuv/7IuLiyVJkydP1ptvvqmZM2dq165dKioqUmFhoaZMmfKNjvvoo49q/fr1euihh1RRUaEPP/xQr7/+uiZOnPi19+3Vq5dGjRql+++/X6+++qr27t2rd955xwqEl112mbZs2aLVq1dr165deuyxx7yuDjrVx/vvv6/Kykp99tlnamxs1D333KMePXpo+PDhWrt2rfbu3auysjI9/PDDOnDggCRp4sSJmjVrll577TVVVlbq4YcfVk1NjXWWpUuXLnrwwQf1yCOPqLi4WB988IHGjh2rEydOaMyYMT49Rm63W7NmzdJzzz2nXbt2adu2bVq4cKHmzJkjSZo7d66WL1+uf/3rX9q1a5f+/Oc/Ky4ujr8RhIBCiAHaQHx8vN599101NTUpIyNDycnJevjhh+Vyuayg8swzz+jWW29VVlaWhg4dqptvvln9+/c/a5/XXHON5syZo6efflrJyclaunRpQFwSu2LFCl1//fW6++67deWVV2rq1KnWWYrrrrtOr7zyipYvX67k5GT95je/0RNPPKHRo0d/o2NeddVVKisr04cffqhbbrlF1157rR577DH17NnzvO7//PPP6yc/+YkmTJigK664QmPHjrUuz37ggQc0YsQI3XXXXUpJSdHnn3/udVZGksaOHau+fftqwIABuuiii/Tuu+8qPDxcf//733XJJZdoxIgRSkpK0v3336/6+nrrzMyjjz6qu+++W/fee69SU1PVtWtXZWRkKCwszOr7qaee0o9//GPl5OTouuuu0+7du7V69Wp1797dp8fo5z//uf7whz9o0aJF6tevnwYNGqRFixapd+/ekqSuXbvq6aef1oABA3T99dfr448/1qpVq84ZpIHWxl/sBYAA1dzcrKSkJI0cOVIzZ85s6+EAAYfPxABAgNi3b59KSko0aNAgeTweFRYWau/evdbnXwB447wgAMupP01/ptvatWvbenjfirVr155znm0pKChIixYt0vXXX6+bbrpJ27Zt05o1a855STjQkfF2EgDL7t27z7rvO9/5ztdefmwH9fX1+vTTT8+6/0KuaALQNggxAADAlng7CQAA2BIhBgAA2BIhBgAA2BIhBgAA2BIhBgAA2BIhBgAA2BIhBgAA2NL/B+Rvsp2xY0v1AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df[\"median_income_categories\"].value_counts().sort_index().plot.bar(grid=True)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "a56f7025-7ebe-412c-81c9-d7214aa86baf",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import StratifiedShuffleSplit\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "4a681c3a-712f-4928-b4a8-c2936a3c7cb8",
"metadata": {},
"outputs": [],
"source": [
"sss = StratifiedShuffleSplit(n_splits=10,test_size=0.2,random_state=40)\n",
"stratified_split = []\n",
"for train_i,test_i in sss.split(df,df[\"median_income_categories\"]):\n",
" stratified_train_set_n = df.iloc[train_i]\n",
" stratified_test_set_n = df.iloc[test_i]\n",
" stratified_split.append([stratified_train_set_n,stratified_test_set_n])\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "d488995a-cd18-4559-b2e7-6d5f2e1578ca",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(stratified_split)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "442596f7-a739-4394-8795-35591aa41e03",
"metadata": {},
"outputs": [],
"source": [
"stratified_train_set,stratified_test_set = stratified_split[0]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "2ce6dc8f-1c91-4b95-b941-c85f3d0400a7",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" <th>identifier</th>\n",
" <th>median_income_categories</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16415</th>\n",
" <td>-121.26</td>\n",
" <td>37.88</td>\n",
" <td>42.0</td>\n",
" <td>465.0</td>\n",
" <td>93.0</td>\n",
" <td>256.0</td>\n",
" <td>93.0</td>\n",
" <td>3.1719</td>\n",
" <td>158300.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121222.12</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1279</th>\n",
" <td>-121.64</td>\n",
" <td>37.85</td>\n",
" <td>22.0</td>\n",
" <td>1999.0</td>\n",
" <td>415.0</td>\n",
" <td>967.0</td>\n",
" <td>320.0</td>\n",
" <td>4.4583</td>\n",
" <td>253900.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121602.15</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7741</th>\n",
" <td>-118.15</td>\n",
" <td>33.95</td>\n",
" <td>35.0</td>\n",
" <td>2753.0</td>\n",
" <td>702.0</td>\n",
" <td>1592.0</td>\n",
" <td>614.0</td>\n",
" <td>2.7875</td>\n",
" <td>209000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118116.05</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4425</th>\n",
" <td>-118.24</td>\n",
" <td>34.07</td>\n",
" <td>27.0</td>\n",
" <td>223.0</td>\n",
" <td>80.0</td>\n",
" <td>249.0</td>\n",
" <td>82.0</td>\n",
" <td>1.6136</td>\n",
" <td>137500.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118205.93</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1283</th>\n",
" <td>-121.82</td>\n",
" <td>38.02</td>\n",
" <td>46.0</td>\n",
" <td>176.0</td>\n",
" <td>43.0</td>\n",
" <td>101.0</td>\n",
" <td>40.0</td>\n",
" <td>2.2361</td>\n",
" <td>93800.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121781.98</td>\n",
" <td>2</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",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1221</th>\n",
" <td>-120.65</td>\n",
" <td>38.28</td>\n",
" <td>21.0</td>\n",
" <td>3095.0</td>\n",
" <td>681.0</td>\n",
" <td>1341.0</td>\n",
" <td>546.0</td>\n",
" <td>2.1382</td>\n",
" <td>104000.0</td>\n",
" <td>INLAND</td>\n",
" <td>-120611.72</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>-121.45</td>\n",
" <td>38.53</td>\n",
" <td>34.0</td>\n",
" <td>1893.0</td>\n",
" <td>415.0</td>\n",
" <td>884.0</td>\n",
" <td>395.0</td>\n",
" <td>2.1679</td>\n",
" <td>75400.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121411.47</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5747</th>\n",
" <td>-118.27</td>\n",
" <td>34.17</td>\n",
" <td>48.0</td>\n",
" <td>1560.0</td>\n",
" <td>280.0</td>\n",
" <td>825.0</td>\n",
" <td>269.0</td>\n",
" <td>5.5118</td>\n",
" <td>354700.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118235.83</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16224</th>\n",
" <td>-121.33</td>\n",
" <td>37.98</td>\n",
" <td>36.0</td>\n",
" <td>3113.0</td>\n",
" <td>576.0</td>\n",
" <td>1746.0</td>\n",
" <td>544.0</td>\n",
" <td>3.4625</td>\n",
" <td>84600.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121292.02</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8967</th>\n",
" <td>-118.40</td>\n",
" <td>34.00</td>\n",
" <td>37.0</td>\n",
" <td>1534.0</td>\n",
" <td>258.0</td>\n",
" <td>751.0</td>\n",
" <td>259.0</td>\n",
" <td>5.4440</td>\n",
" <td>336000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118366.00</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 12 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"16415 -121.26 37.88 42.0 465.0 93.0 \n",
"1279 -121.64 37.85 22.0 1999.0 415.0 \n",
"7741 -118.15 33.95 35.0 2753.0 702.0 \n",
"4425 -118.24 34.07 27.0 223.0 80.0 \n",
"1283 -121.82 38.02 46.0 176.0 43.0 \n",
"... ... ... ... ... ... \n",
"1221 -120.65 38.28 21.0 3095.0 681.0 \n",
"12640 -121.45 38.53 34.0 1893.0 415.0 \n",
"5747 -118.27 34.17 48.0 1560.0 280.0 \n",
"16224 -121.33 37.98 36.0 3113.0 576.0 \n",
"8967 -118.40 34.00 37.0 1534.0 258.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"16415 256.0 93.0 3.1719 158300.0 \n",
"1279 967.0 320.0 4.4583 253900.0 \n",
"7741 1592.0 614.0 2.7875 209000.0 \n",
"4425 249.0 82.0 1.6136 137500.0 \n",
"1283 101.0 40.0 2.2361 93800.0 \n",
"... ... ... ... ... \n",
"1221 1341.0 546.0 2.1382 104000.0 \n",
"12640 884.0 395.0 2.1679 75400.0 \n",
"5747 825.0 269.0 5.5118 354700.0 \n",
"16224 1746.0 544.0 3.4625 84600.0 \n",
"8967 751.0 259.0 5.4440 336000.0 \n",
"\n",
" ocean_proximity identifier median_income_categories \n",
"16415 INLAND -121222.12 3 \n",
"1279 INLAND -121602.15 3 \n",
"7741 <1H OCEAN -118116.05 2 \n",
"4425 <1H OCEAN -118205.93 2 \n",
"1283 INLAND -121781.98 2 \n",
"... ... ... ... \n",
"1221 INLAND -120611.72 2 \n",
"12640 INLAND -121411.47 2 \n",
"5747 <1H OCEAN -118235.83 4 \n",
"16224 INLAND -121292.02 3 \n",
"8967 <1H OCEAN -118366.00 4 \n",
"\n",
"[16512 rows x 12 columns]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stratified_train_set"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "67d629f8-6121-43b0-a61b-0fc0f414b2ad",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" <th>identifier</th>\n",
" <th>median_income_categories</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>5905</th>\n",
" <td>-118.42</td>\n",
" <td>34.29</td>\n",
" <td>34.0</td>\n",
" <td>1489.0</td>\n",
" <td>326.0</td>\n",
" <td>1389.0</td>\n",
" <td>313.0</td>\n",
" <td>3.4821</td>\n",
" <td>160300.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118385.71</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4830</th>\n",
" <td>-118.30</td>\n",
" <td>34.04</td>\n",
" <td>37.0</td>\n",
" <td>1470.0</td>\n",
" <td>399.0</td>\n",
" <td>1579.0</td>\n",
" <td>390.0</td>\n",
" <td>2.0060</td>\n",
" <td>150000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118265.96</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10969</th>\n",
" <td>-117.87</td>\n",
" <td>33.76</td>\n",
" <td>37.0</td>\n",
" <td>4943.0</td>\n",
" <td>851.0</td>\n",
" <td>2164.0</td>\n",
" <td>788.0</td>\n",
" <td>4.1071</td>\n",
" <td>311300.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-117836.24</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7048</th>\n",
" <td>-118.05</td>\n",
" <td>33.94</td>\n",
" <td>34.0</td>\n",
" <td>495.0</td>\n",
" <td>120.0</td>\n",
" <td>527.0</td>\n",
" <td>130.0</td>\n",
" <td>1.9453</td>\n",
" <td>149000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118016.06</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13721</th>\n",
" <td>-117.18</td>\n",
" <td>34.07</td>\n",
" <td>7.0</td>\n",
" <td>1347.0</td>\n",
" <td>301.0</td>\n",
" <td>799.0</td>\n",
" <td>276.0</td>\n",
" <td>2.9485</td>\n",
" <td>112500.0</td>\n",
" <td>INLAND</td>\n",
" <td>-117145.93</td>\n",
" <td>2</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",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3377</th>\n",
" <td>-118.29</td>\n",
" <td>34.25</td>\n",
" <td>19.0</td>\n",
" <td>1988.0</td>\n",
" <td>594.0</td>\n",
" <td>1399.0</td>\n",
" <td>527.0</td>\n",
" <td>2.4727</td>\n",
" <td>175000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118255.75</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19816</th>\n",
" <td>-119.29</td>\n",
" <td>36.54</td>\n",
" <td>18.0</td>\n",
" <td>2581.0</td>\n",
" <td>628.0</td>\n",
" <td>2732.0</td>\n",
" <td>592.0</td>\n",
" <td>1.8429</td>\n",
" <td>58300.0</td>\n",
" <td>INLAND</td>\n",
" <td>-119253.46</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20545</th>\n",
" <td>-121.75</td>\n",
" <td>38.55</td>\n",
" <td>26.0</td>\n",
" <td>4802.0</td>\n",
" <td>950.0</td>\n",
" <td>2199.0</td>\n",
" <td>939.0</td>\n",
" <td>3.7452</td>\n",
" <td>227700.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121711.45</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3330</th>\n",
" <td>-122.48</td>\n",
" <td>38.90</td>\n",
" <td>10.0</td>\n",
" <td>304.0</td>\n",
" <td>63.0</td>\n",
" <td>161.0</td>\n",
" <td>61.0</td>\n",
" <td>2.1964</td>\n",
" <td>112500.0</td>\n",
" <td>INLAND</td>\n",
" <td>-122441.10</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14222</th>\n",
" <td>-117.04</td>\n",
" <td>32.66</td>\n",
" <td>22.0</td>\n",
" <td>3362.0</td>\n",
" <td>630.0</td>\n",
" <td>1471.0</td>\n",
" <td>612.0</td>\n",
" <td>4.1442</td>\n",
" <td>303900.0</td>\n",
" <td>NEAR OCEAN</td>\n",
" <td>-117007.34</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4128 rows × 12 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"5905 -118.42 34.29 34.0 1489.0 326.0 \n",
"4830 -118.30 34.04 37.0 1470.0 399.0 \n",
"10969 -117.87 33.76 37.0 4943.0 851.0 \n",
"7048 -118.05 33.94 34.0 495.0 120.0 \n",
"13721 -117.18 34.07 7.0 1347.0 301.0 \n",
"... ... ... ... ... ... \n",
"3377 -118.29 34.25 19.0 1988.0 594.0 \n",
"19816 -119.29 36.54 18.0 2581.0 628.0 \n",
"20545 -121.75 38.55 26.0 4802.0 950.0 \n",
"3330 -122.48 38.90 10.0 304.0 63.0 \n",
"14222 -117.04 32.66 22.0 3362.0 630.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"5905 1389.0 313.0 3.4821 160300.0 \n",
"4830 1579.0 390.0 2.0060 150000.0 \n",
"10969 2164.0 788.0 4.1071 311300.0 \n",
"7048 527.0 130.0 1.9453 149000.0 \n",
"13721 799.0 276.0 2.9485 112500.0 \n",
"... ... ... ... ... \n",
"3377 1399.0 527.0 2.4727 175000.0 \n",
"19816 2732.0 592.0 1.8429 58300.0 \n",
"20545 2199.0 939.0 3.7452 227700.0 \n",
"3330 161.0 61.0 2.1964 112500.0 \n",
"14222 1471.0 612.0 4.1442 303900.0 \n",
"\n",
" ocean_proximity identifier median_income_categories \n",
"5905 <1H OCEAN -118385.71 3 \n",
"4830 <1H OCEAN -118265.96 2 \n",
"10969 <1H OCEAN -117836.24 3 \n",
"7048 <1H OCEAN -118016.06 2 \n",
"13721 INLAND -117145.93 2 \n",
"... ... ... ... \n",
"3377 <1H OCEAN -118255.75 2 \n",
"19816 INLAND -119253.46 2 \n",
"20545 INLAND -121711.45 3 \n",
"3330 INLAND -122441.10 2 \n",
"14222 NEAR OCEAN -117007.34 3 \n",
"\n",
"[4128 rows x 12 columns]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stratified_test_set"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "d63bab1d-4554-44c6-95f7-fe01f4a1fc50",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"median_income_categories\n",
"3 0.350533\n",
"2 0.318798\n",
"4 0.176357\n",
"5 0.114341\n",
"1 0.039971\n",
"Name: count, dtype: float64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stratified_test_set[\"median_income_categories\"].value_counts()/len(stratified_test_set)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "2011a1a5-c2d0-4ea6-8852-366ff1159b3d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"median_income_categories\n",
"3 0.350594\n",
"2 0.318859\n",
"4 0.176296\n",
"5 0.114462\n",
"1 0.039789\n",
"Name: count, dtype: float64"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stratified_train_set[\"median_income_categories\"].value_counts()/len(stratified_train_set)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "7c47231e-f9ac-40b3-b424-6c636c74448f",
"metadata": {},
"outputs": [],
"source": [
"str_train_set,str_test_set = train_test_split(df,test_size=0.2,stratify=df[\"median_income_categories\"],random_state=40)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "eda0858d-2e66-4a5e-b229-8045f92eaf76",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" <th>identifier</th>\n",
" <th>median_income_categories</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16415</th>\n",
" <td>-121.26</td>\n",
" <td>37.88</td>\n",
" <td>42.0</td>\n",
" <td>465.0</td>\n",
" <td>93.0</td>\n",
" <td>256.0</td>\n",
" <td>93.0</td>\n",
" <td>3.1719</td>\n",
" <td>158300.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121222.12</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1279</th>\n",
" <td>-121.64</td>\n",
" <td>37.85</td>\n",
" <td>22.0</td>\n",
" <td>1999.0</td>\n",
" <td>415.0</td>\n",
" <td>967.0</td>\n",
" <td>320.0</td>\n",
" <td>4.4583</td>\n",
" <td>253900.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121602.15</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7741</th>\n",
" <td>-118.15</td>\n",
" <td>33.95</td>\n",
" <td>35.0</td>\n",
" <td>2753.0</td>\n",
" <td>702.0</td>\n",
" <td>1592.0</td>\n",
" <td>614.0</td>\n",
" <td>2.7875</td>\n",
" <td>209000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118116.05</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4425</th>\n",
" <td>-118.24</td>\n",
" <td>34.07</td>\n",
" <td>27.0</td>\n",
" <td>223.0</td>\n",
" <td>80.0</td>\n",
" <td>249.0</td>\n",
" <td>82.0</td>\n",
" <td>1.6136</td>\n",
" <td>137500.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118205.93</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1283</th>\n",
" <td>-121.82</td>\n",
" <td>38.02</td>\n",
" <td>46.0</td>\n",
" <td>176.0</td>\n",
" <td>43.0</td>\n",
" <td>101.0</td>\n",
" <td>40.0</td>\n",
" <td>2.2361</td>\n",
" <td>93800.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121781.98</td>\n",
" <td>2</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",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1221</th>\n",
" <td>-120.65</td>\n",
" <td>38.28</td>\n",
" <td>21.0</td>\n",
" <td>3095.0</td>\n",
" <td>681.0</td>\n",
" <td>1341.0</td>\n",
" <td>546.0</td>\n",
" <td>2.1382</td>\n",
" <td>104000.0</td>\n",
" <td>INLAND</td>\n",
" <td>-120611.72</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>-121.45</td>\n",
" <td>38.53</td>\n",
" <td>34.0</td>\n",
" <td>1893.0</td>\n",
" <td>415.0</td>\n",
" <td>884.0</td>\n",
" <td>395.0</td>\n",
" <td>2.1679</td>\n",
" <td>75400.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121411.47</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5747</th>\n",
" <td>-118.27</td>\n",
" <td>34.17</td>\n",
" <td>48.0</td>\n",
" <td>1560.0</td>\n",
" <td>280.0</td>\n",
" <td>825.0</td>\n",
" <td>269.0</td>\n",
" <td>5.5118</td>\n",
" <td>354700.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118235.83</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16224</th>\n",
" <td>-121.33</td>\n",
" <td>37.98</td>\n",
" <td>36.0</td>\n",
" <td>3113.0</td>\n",
" <td>576.0</td>\n",
" <td>1746.0</td>\n",
" <td>544.0</td>\n",
" <td>3.4625</td>\n",
" <td>84600.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121292.02</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8967</th>\n",
" <td>-118.40</td>\n",
" <td>34.00</td>\n",
" <td>37.0</td>\n",
" <td>1534.0</td>\n",
" <td>258.0</td>\n",
" <td>751.0</td>\n",
" <td>259.0</td>\n",
" <td>5.4440</td>\n",
" <td>336000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118366.00</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 12 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"16415 -121.26 37.88 42.0 465.0 93.0 \n",
"1279 -121.64 37.85 22.0 1999.0 415.0 \n",
"7741 -118.15 33.95 35.0 2753.0 702.0 \n",
"4425 -118.24 34.07 27.0 223.0 80.0 \n",
"1283 -121.82 38.02 46.0 176.0 43.0 \n",
"... ... ... ... ... ... \n",
"1221 -120.65 38.28 21.0 3095.0 681.0 \n",
"12640 -121.45 38.53 34.0 1893.0 415.0 \n",
"5747 -118.27 34.17 48.0 1560.0 280.0 \n",
"16224 -121.33 37.98 36.0 3113.0 576.0 \n",
"8967 -118.40 34.00 37.0 1534.0 258.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"16415 256.0 93.0 3.1719 158300.0 \n",
"1279 967.0 320.0 4.4583 253900.0 \n",
"7741 1592.0 614.0 2.7875 209000.0 \n",
"4425 249.0 82.0 1.6136 137500.0 \n",
"1283 101.0 40.0 2.2361 93800.0 \n",
"... ... ... ... ... \n",
"1221 1341.0 546.0 2.1382 104000.0 \n",
"12640 884.0 395.0 2.1679 75400.0 \n",
"5747 825.0 269.0 5.5118 354700.0 \n",
"16224 1746.0 544.0 3.4625 84600.0 \n",
"8967 751.0 259.0 5.4440 336000.0 \n",
"\n",
" ocean_proximity identifier median_income_categories \n",
"16415 INLAND -121222.12 3 \n",
"1279 INLAND -121602.15 3 \n",
"7741 <1H OCEAN -118116.05 2 \n",
"4425 <1H OCEAN -118205.93 2 \n",
"1283 INLAND -121781.98 2 \n",
"... ... ... ... \n",
"1221 INLAND -120611.72 2 \n",
"12640 INLAND -121411.47 2 \n",
"5747 <1H OCEAN -118235.83 4 \n",
"16224 INLAND -121292.02 3 \n",
"8967 <1H OCEAN -118366.00 4 \n",
"\n",
"[16512 rows x 12 columns]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"str_train_set"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "0daf16c2-8c9d-48ab-976b-7671897e9335",
"metadata": {},
"outputs": [],
"source": [
"str_train_set =str_train_set.drop(\"median_income_categories\",axis=1)\n",
"str_test_set=str_test_set.drop(\"median_income_categories\",axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "0c6802d3-6558-4315-ab6b-4c6eecbb1afa",
"metadata": {},
"outputs": [],
"source": [
"#visualize\n"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "61b7f67d-9eef-4cdd-a8ed-a91f1046afd3",
"metadata": {},
"outputs": [],
"source": [
"train = str_train_set"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "ccd4c936-96b4-4561-8806-0ee7111086f8",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Ufh4CQQCJzZ5ljM7O0+Rl0Sxpt2eID7KSYxf/MVf5O/+7u+GP6tF0tMPfvCD3Hbbbdxxxx38wi/8Au973/u45JJLePTRR5mYmADghhtu4Atf+AI7d+5kw4YN3HTTTVx++eXs3r17eK7t27fz1FNPcffddwPwlre8hR07dvCFL3wBAGMMr33taznllFO47777eP7553nTm96Ec47bb78dgLm5OS655BJ+7dd+jQceeIDHHnuMq666imazyU033XRU71Hg6BC+lV9EOFNZPmrlG18Zi+n1MbmXmwgpsVUhqYo08USTQoBQEk0d27TYPEVKL2eRunLLKQqE8kF1nNQwjTp55fmuNAi8RaTJc6SSlfVlQtmZRThwtsTmOSrWlJ0uMlJkkSau1xEI7zmvNVIqXJ5DFbAKKYlaTWyl95daj9QqACOafzkIygE3Rj5k0hTdavkGXUuwxvjnCEEy0URpTVpZlebdLuAQsuYXILbEFsYvIKzFOYcT4Cp9i8lyRFkihPIqqTxH12LKwgfxBoFMEmKhqGmNKQ8AFlWPKYvS7y5EGicE1ixk7V1Rkuc5SXtioTmXc75wONaoWlIVQ79waQ9Uu0wTjepfHZN5x6R+mqPrNUxpQAikhGxujn2PPo7LM4pej3iixcT0FlqbN67JXAKBQGCtmT0wx9NPPeOtnyue27ef6Zdspr1u8qhdV2s9kt0f4JzjIx/5CO9+97v5rd/6LQA+/elPs3nzZj73uc/x1re+ldnZWf79v//3fOYzn+Hiiy8G4LOf/Synn346f/d3f8dll13GI488wt13383999/PeeedB8AnP/lJLrjgAh599FHOOussdu3axfe//32efPJJpqenAfiLv/gLrrrqKv7sz/6MyclJ7rzzTtI05Y477iBJErZu3cpjjz3Gbbfdxo033riqnjqBE4sg7znJcMYsNHFaRN7p0X9uhnRmjv7zM94j3lRWmkIgqqZSUauBriXeM18K4skW0UQDEWnAevtMa3FZjqksKaWQC/p6JUEqolYdoQQijnFaopoNn92tijpx+KLaOMJmGVEzoez3KDsdirl58mefJZ05gExidLOJrtUQSmLtqMxnIMPRjcaygN/fkPHbjHZMPYBzbux4k+deGpTnmCyj6HRQtZik1aQ21WbiJdPU160jmWyjG03i9hTR5BRCx8MuxEJpXCVRMtaA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7nPOO/3zsWPHLuv4drJDhw7x4Q9/mDe96U0kScJwOOThhx/mt3/7t6/00HaU++67jwcffJD3ve99/Pqv/zrvfe97+au/+iu+8zu/80oPbUcJ34FB8PSFoP8p+smf/EmEEI/551Of+tSTft177rmHO++8kze/+c287GUv2zr+ute9jle96lX8w3/4D7fzY1zVLvccn+2jH/0od999N//lv/wXnvOc5zzdj3JVuxLzLIQ452e/uYn30cd3kks1zxdz7Ngxvu/7vo+77rqLT37yk3zsYx8jjmO+8zu/c0dvmr7c8+yco6oqfv3Xf50Xv/jFvOQlL+HXfu3X+OM//mP+/u//ftve52pzuef5mfgdGATbTV/pAVyrXv/61/Pd3/3dj3nOoUOHntRrfvazn+WlL30pr3vd6/jxH//xcx77yEc+wgc+8AHe+c53Am2Q5JxDa81//s//mde+9rVP6r2uBZd7jk/72Mc+xrd/+7fzrne9i9e85jVP6vWvRZd7nvfs2XPeiv6JEycAzrsDsJNcinl+LL/4i79Iv9/nHe94x9ax3/zN3+TgwYP8xV/8BV/7tV+7be91Nbnc87x371601txyyy1bx2677TYADh8+zK233rpt73U1udzz/Ez8DgyC7RaC/qdoeXmZ5eXlbXu9e+65h5e+9KXcddddvPWtbz3v8U984hNYa7d+/l//63/x9re/nY9//OPs379/28ZxNbnccwztCv+3fdu38fa3v51/8S/+xba999Xscs/z7bffzpve9CbquiaOYwA+/OEPs2/fvm0NEq422z3Pj2c+n6OUOufY6Z+dc5dtHJfb5Z7nr//6r8cYw7333stNN90EwBe+8AUArr/++ss2jsvtcs/zM/E7MAi2Wwj6L4PDhw+ztrbG4cOHsdby6U9/GoCbb76ZbrfLPffcwzd8wzfwTd/0TbzhDW/YWgVVSrGysgKcWTk67VOf+hRSSr78y7/8sn6Wq9V2zPFHP/pRvvVbv5Uf/MEf5BWveMXWOXEch828m7Zjnl/1qlfxUz/1U9x999286U1v4otf/CI/8zM/w5vf/OYdnd7zZDzePENbq3w6nXLs2DGKotg659nPfjZxHPOt3/qt/Kf/9J94y1vewitf+UomkwlvetObuP7663nBC15whT7Z1WU75vkbv/Eb+cqv/Epe+9rX8u53vxvnHP/6X/9r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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = sns.scatterplot(data=train,x=\"longitude\",y=\"latitude\",size=\"population\",alpha=0.2,hue=\"median_house_value\")\n",
"sns.move_legend(ax,\"upper left\",bbox_to_anchor=(1,1))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "0c8add65-fd8b-4fe8-bc76-d8aa573421ae",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"longitude -0.051167\n",
"latitude -0.137691\n",
"housing_median_age 0.105329\n",
"total_rooms 0.138007\n",
"total_bedrooms 0.052814\n",
"population -0.021544\n",
"households 0.070014\n",
"median_income 0.686865\n",
"median_house_value 1.000000\n",
"identifier -0.051364\n",
"Name: median_house_value, dtype: float64"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.corr(numeric_only=True)[\"median_house_value\"]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "2e09207d-464b-412c-8540-8addf0193055",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='median_income', ylabel='median_house_value'>"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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n/gEd999N3/wB39Ao9HY6aU9qbz3ve/lz/7sz/jQhz7EPffcw/ve9z5+7/d+jw9+8IM7vbQzymg04ulPfzof+tCHTnn/+973Pt7//vfzoQ99iK9+9avMzMzw4he/eGvM17nM6fYeBAG33nor73znO7n11lv5+7//e+677z5e/vKX78BKzyyP954f5x//8R/58pe/zNzc3Fla2Q4jFTvOd3zHd8jXv/7122572tOeJn/5l395h1Z09lldXZWA/MxnPrPTSzkrDAYDefDgQXnzzTfL6667Tr75zW/e6SU96bzjHe+QL3jBC3Z6GWedl770pfKnfuqntt32Qz/0Q/LVr371Dq3oyQeQ//AP/7D1e1EUcmZmRv7u7/7u1m1RFMl6vS7/7M/+bAdW+OTx6L2fiq985SsSkIcPHz47izoLPNa+FxYW5K5du+Sdd94p9+7dKz/wgQ+c9bWdbVTEaodJkoRbbrmF66+/ftvt119/PV/4whd2aFVnn16vB0Cr1drhlZwd3vCGN/DSl76U7/me79nppZw1/vmf/5lrr72WH/3RH2VqaopnPvOZ/K//9b92ellPOi94wQv4j//4D+677z4A/uu//ovPf/7zfP/3f/8Or+zscejQIZaXl7d9ztm2zXXXXXdBfc4dp9froWnaeR+tLYqCG264gbe97W1cccUVO72cs4aaFbjDrK+vk+c509PT226fnp5meXl5h1Z1dpFS8pa3vIUXvOAFXHnllTu9nCedj33sY9x666189atf3emlnFUeeughPvzhD/OWt7yFX/3VX+UrX/kKb3rTm7Btm9e85jU7vbwnjXe84x30ej2e9rSnIYQgz3N+53d+h5/4iZ/Y6aWdNY5/lp3qc+7w4cM7saQdI4oifvmXf5lXvepV590cvUfz3ve+F8MweNOb3rTTSzmrKGH1FEHTtG2/SylPuu185Rd+4Re4/fbb+fznP7/TS3nSOXr0KG9+85v51Kc+heM4O72cs0pRFFx77bXcdNNNADzzmc/krrvu4sMf/vB5Law+/vGP81d/9Vf8zd/8DVdccQW33XYbN954I3Nzc7z2ta/d6eWdVS7kzzkoC9l//Md/nKIo+NM//dOdXs6Tyi233MIf/dEfceutt15Q7zGo4vUdZ2JiAiHESdGp1dXVk77dnY+88Y1v5J//+Z/59Kc/zfz8/E4v50nnlltuYXV1lWuuuQbDMDAMg8985jP88R//MYZhkOf5Ti/xSWN2dpbLL798222XXXbZed2kAfC2t72NX/7lX+bHf/zHueqqq7jhhhv4xV/8Rd7znvfs9NLOGjMzMwAX7OcclKLqla98JYcOHeLmm28+76NVn/vc51hdXWXPnj1bn3WHDx/mrW99K/v27dvp5T2pKGG1w1iWxTXXXMPNN9+87fabb76Z5z3veTu0qicfKSW/8Au/wN///d/zn//5n+zfv3+nl3RW+O7v/m7uuOMObrvttq2fa6+9lv/+3/87t912G0KInV7ik8bzn//8kyw17rvvPvbu3btDKzo7BEGArm//qBVCnHd2C6dj//79zMzMbPucS5KEz3zmM+f159xxjouq+++/n//zf/4P7XZ7p5f0pHPDDTdw++23b/usm5ub421vexuf/OQnd3p5TyoqFfgU4C1veQs33HAD1157Lc997nP5yEc+wpEjR3j961+/00t70njDG97A3/zN3/BP//RPVKvVrW+y9Xod13V3eHVPHtVq9aQ6skqlQrvdPu/ry37xF3+R5z3vedx000288pWv5Ctf+Qof+chH+MhHPrLTS3tSednLXsbv/M7vsGfPHq644gq+/vWv8/73v5+f+qmf2umlnVGGwyEPPPDA1u+HDh3itttuo9VqsWfPHm688UZuuukmDh48yMGDB7npppvwPI9XvepVO7jqM8Pp9j43N8eP/MiPcOutt/Kv//qv5Hm+9XnXarWwLGunlv1t83jv+aMFpGmazMzMcOmll57tpZ5ddrYpUXGcP/mTP5F79+6VlmXJZz3rWee97QBwyp8///M/3+mlnXUuFLsFKaX8l3/5F3nllVdK27bl0572NPmRj3xkp5f0pNPv9+Wb3/xmuWfPHuk4jjxw4ID8tV/7NRnH8U4v7Yzy6U9/+pT/pl/72tdKKUvLhd/4jd+QMzMz0rZt+cIXvlDecccdO7voM8Tp9n7o0KHH/Lz79Kc/vdNL/7Z4vPf80VwodgualFKeJQ2nUCgUCoVCcV6jaqwUCoVCoVAozhBKWCkUCoVCoVCcIZSwUigUCoVCoThDKGGlUCgUCoVCcYZQwkqhUCgUCoXiDKGElUKhUCgUCsUZQgkrhUKhUCgUijOEElYKhUKhUCgUZwglrBQKxXnNi170Im688cat3/ft28cf/uEfnrXXf93rXscrXvGKs/Z6CoViZ1GzAhUKxQXFV7/6VSqVyll7vT/6oz9CDbhQKC4clLBSKBQXFJOTk2f19er1+ll9PYVCsbOoVKBCodgRXvSiF/HGN76RG2+8kWazyfT0NB/5yEcYjUb85E/+JNVqlYsuuohPfOITW4+5++67+f7v/35832d6epobbriB9fX1rftHoxGvec1r8H2f2dlZ/uAP/uCk1310KvD9738/V111FZVKhd27d/PzP//zDIfDrfs/+tGP0mg0+OQnP8lll12G7/t87/d+L0tLS09on49OBb7oRS/iTW96E29/+9tptVrMzMzwrne9a9tjut0uP/uzP8v09DSO43DllVfyr//6r1v3/93f/R1XXHEFtm2zb9++k/a5b98+fvu3f3vrXOzdu5d/+qd/Ym1tjR/8wR/E932uuuoqvva1r2173Be+8AVe+MIX4rouu3fv5k1vehOj0egJ7VOhUJQoYaVQKHaMv/iLv2BiYoKvfOUrvPGNb+R//I//wY/+6I/yvOc9j1tvvZWXvOQl3HDDDQRBwNLSEtdddx3PeMYz+NrXvsa///u/s7Kywitf+cqt53vb297Gpz/9af7hH/6BT33qU/zf//t/ueWWW067Bl3X+eM//mPuvPNO/uIv/oL//M//5O1vf/u2Y4Ig4Pd///f5y7/8Sz772c9y5MgRfumXfunb2nelUuHLX/4y73vf+3j3u9/NzTffDEBRFHzf930fX/jCF/irv/or7r77bn73d38XIQQAt9xyC6985Sv58R//ce644w7e9a538c53vpOPfvSj217jAx/4AM9//vP5+te/zktf+lJuuOEGXvOa1/DqV7+aW2+9lYsvvpjXvOY1W2nKO+64g5e85CX80A/9ELfffjsf//jH+fznP88v/MIvfMv7VCguSKRCoVDsANddd518wQtesPV7lmWyUqnIG264Yeu2paUlCcgvfvGL8p3vfKe8/vrrtz3H0aNHJSDvvfdeORgMpGVZ8mMf+9jW/RsbG9J1XfnmN79567a9e/fKD3zgA4+5rr/927+V7XZ76/c///M/l4B84IEHtm77kz/5Ezk9Pf2E9vna175W/uAP/uBj7ltKKZ/97GfLd7zjHVJKKT/5yU9KXdflvffee8rne9WrXiVf/OIXb7vtbW97m7z88su3ft+7d6989atfvfX78fP4zne+c+u2L37xixKQS0tLUkopb7jhBvmzP/uz2573c5/7nNR1XYZh+IT2qlAopFQ1VgqFYse4+uqrt/5fCEG73eaqq67aum16ehqA1dVVbrnlFj796U/j+/5Jz/Pggw8ShiFJkvDc5z536/ZWq8Wll1562jV8+tOf5qabbuLuu++m3++TZRlRFDEajbaK3D3P46KLLtp6zOzsLKurq9/aptm+70c/32233cb8/DyXXHLJKR97zz338IM/+IPbbnv+85/PH/7hH5Ln+VZk68TXOH4eH+vczszMcMstt/DAAw/w13/911vHSCkpioJDhw5x2WWXfavbVSguKJSwUigUO4Zpmtt+1zRt222apgFleqwoCl72spfx3ve+96TnmZ2d5f777/+mX//w4cN8//d/P69//ev5rd/6LVqtFp///Of56Z/+adI0Pe065bfR6Xeq5yuKAgDXdU/7WCnl1nk58bbTvcbx4x/r3B7/78/93M/xpje96aTn2rNnz2nXpFAoHkEJK4VCcU7wrGc9i7/7u79j3759GMbJH10XX3wxpmnypS99aUsIdDod7rvvPq677rpTPufXvvY1sizjD/7gD9D1suT0b//2b5+8TTwBrr76ahYWFrjvvvtOGbW6/PLL+fznP7/tti984QtccsklW9Gqb4VnPetZ3HXXXVx88cXf8nMoFApVvK5QKM4R3vCGN7C5uclP/MRP8JWvfIWHHnqIT33qU/zUT/0UeZ7j+z4//dM/zdve9jb+4z/+gzvvvJPXve51W4LpVFx00UVkWcYHP/hBHnroIf7yL/+SP/uzPzuLuzqZ6667jhe+8IX88A//MDfffDOHDh3iE5/4BP/+7/8OwFvf+lb+4z/+g9/6rd/ivvvu4y/+4i/40Ic+9G0V0wO84x3v4Itf/CJveMMbuO2227j//vv553/+Z974xjeeiW0pFBcMSlgpFIpzgrm5Of7f//t/5HnOS17yEq688kre/OY3U6/Xt8TT7/3e7/HCF76Ql7/85XzP93wPL3jBC7jmmmse8zmf8Yxn8P73v5/3vve9XHnllfz1X/8173nPe87Wlh6Tv/u7v+PZz342P/ETP8Hll1/O29/+dvI8B8rI0t/+7d/ysY99jCuvvJJf//Vf593vfjeve93rvq3XvPrqq/nMZz7D/fffz3d+53fyzGc+k3e+853Mzs6egR0pFBcOmvx2CgUUCoVCoVAoFFuoiJVCoVAoFArFGUIJK4VCofg28H3/MX8+97nP7fTyFArFWUalAhUKheLb4IEHHnjM+3bt2vW49gkKheL8QgkrhUKhUCgUijOESgUqFAqFQqFQnCGUsFIoFAqFQqE4QyhhpVAoFAqFQnGGUMJKoVAoFAqF4gyhhJVCoVAoFArFGUIJK4VCoVAoFIozhBJWCoVCoVAoFGcIJawUCoVCoVAozhD/P+zxNOXds827AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.scatterplot(data=train,x=\"median_income\",y=\"median_house_value\",alpha=0.2,)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "845e7288-4ac1-4ea2-a916-78e23fd37e62",
"metadata": {},
"outputs": [],
"source": [
"# attribute combinations"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "77e367b1-d89b-41f4-9122-c8b481f4166c",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" <th>ocean_proximity</th>\n",
" <th>identifier</th>\n",
" <th>rooms_per_house</th>\n",
" <th>bedrooms_ratio</th>\n",
" <th>people_per_house</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16415</th>\n",
" <td>-121.26</td>\n",
" <td>37.88</td>\n",
" <td>42.0</td>\n",
" <td>465.0</td>\n",
" <td>93.0</td>\n",
" <td>256.0</td>\n",
" <td>93.0</td>\n",
" <td>3.1719</td>\n",
" <td>158300.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121222.12</td>\n",
" <td>5.000000</td>\n",
" <td>0.200000</td>\n",
" <td>2.752688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1279</th>\n",
" <td>-121.64</td>\n",
" <td>37.85</td>\n",
" <td>22.0</td>\n",
" <td>1999.0</td>\n",
" <td>415.0</td>\n",
" <td>967.0</td>\n",
" <td>320.0</td>\n",
" <td>4.4583</td>\n",
" <td>253900.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121602.15</td>\n",
" <td>6.246875</td>\n",
" <td>0.207604</td>\n",
" <td>3.021875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7741</th>\n",
" <td>-118.15</td>\n",
" <td>33.95</td>\n",
" <td>35.0</td>\n",
" <td>2753.0</td>\n",
" <td>702.0</td>\n",
" <td>1592.0</td>\n",
" <td>614.0</td>\n",
" <td>2.7875</td>\n",
" <td>209000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118116.05</td>\n",
" <td>4.483713</td>\n",
" <td>0.254995</td>\n",
" <td>2.592834</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4425</th>\n",
" <td>-118.24</td>\n",
" <td>34.07</td>\n",
" <td>27.0</td>\n",
" <td>223.0</td>\n",
" <td>80.0</td>\n",
" <td>249.0</td>\n",
" <td>82.0</td>\n",
" <td>1.6136</td>\n",
" <td>137500.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118205.93</td>\n",
" <td>2.719512</td>\n",
" <td>0.358744</td>\n",
" <td>3.036585</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1283</th>\n",
" <td>-121.82</td>\n",
" <td>38.02</td>\n",
" <td>46.0</td>\n",
" <td>176.0</td>\n",
" <td>43.0</td>\n",
" <td>101.0</td>\n",
" <td>40.0</td>\n",
" <td>2.2361</td>\n",
" <td>93800.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121781.98</td>\n",
" <td>4.400000</td>\n",
" <td>0.244318</td>\n",
" <td>2.525000</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",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1221</th>\n",
" <td>-120.65</td>\n",
" <td>38.28</td>\n",
" <td>21.0</td>\n",
" <td>3095.0</td>\n",
" <td>681.0</td>\n",
" <td>1341.0</td>\n",
" <td>546.0</td>\n",
" <td>2.1382</td>\n",
" <td>104000.0</td>\n",
" <td>INLAND</td>\n",
" <td>-120611.72</td>\n",
" <td>5.668498</td>\n",
" <td>0.220032</td>\n",
" <td>2.456044</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>-121.45</td>\n",
" <td>38.53</td>\n",
" <td>34.0</td>\n",
" <td>1893.0</td>\n",
" <td>415.0</td>\n",
" <td>884.0</td>\n",
" <td>395.0</td>\n",
" <td>2.1679</td>\n",
" <td>75400.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121411.47</td>\n",
" <td>4.792405</td>\n",
" <td>0.219229</td>\n",
" <td>2.237975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5747</th>\n",
" <td>-118.27</td>\n",
" <td>34.17</td>\n",
" <td>48.0</td>\n",
" <td>1560.0</td>\n",
" <td>280.0</td>\n",
" <td>825.0</td>\n",
" <td>269.0</td>\n",
" <td>5.5118</td>\n",
" <td>354700.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118235.83</td>\n",
" <td>5.799257</td>\n",
" <td>0.179487</td>\n",
" <td>3.066914</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16224</th>\n",
" <td>-121.33</td>\n",
" <td>37.98</td>\n",
" <td>36.0</td>\n",
" <td>3113.0</td>\n",
" <td>576.0</td>\n",
" <td>1746.0</td>\n",
" <td>544.0</td>\n",
" <td>3.4625</td>\n",
" <td>84600.0</td>\n",
" <td>INLAND</td>\n",
" <td>-121292.02</td>\n",
" <td>5.722426</td>\n",
" <td>0.185031</td>\n",
" <td>3.209559</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8967</th>\n",
" <td>-118.40</td>\n",
" <td>34.00</td>\n",
" <td>37.0</td>\n",
" <td>1534.0</td>\n",
" <td>258.0</td>\n",
" <td>751.0</td>\n",
" <td>259.0</td>\n",
" <td>5.4440</td>\n",
" <td>336000.0</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" <td>-118366.00</td>\n",
" <td>5.922780</td>\n",
" <td>0.168188</td>\n",
" <td>2.899614</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"16415 -121.26 37.88 42.0 465.0 93.0 \n",
"1279 -121.64 37.85 22.0 1999.0 415.0 \n",
"7741 -118.15 33.95 35.0 2753.0 702.0 \n",
"4425 -118.24 34.07 27.0 223.0 80.0 \n",
"1283 -121.82 38.02 46.0 176.0 43.0 \n",
"... ... ... ... ... ... \n",
"1221 -120.65 38.28 21.0 3095.0 681.0 \n",
"12640 -121.45 38.53 34.0 1893.0 415.0 \n",
"5747 -118.27 34.17 48.0 1560.0 280.0 \n",
"16224 -121.33 37.98 36.0 3113.0 576.0 \n",
"8967 -118.40 34.00 37.0 1534.0 258.0 \n",
"\n",
" population households median_income median_house_value \\\n",
"16415 256.0 93.0 3.1719 158300.0 \n",
"1279 967.0 320.0 4.4583 253900.0 \n",
"7741 1592.0 614.0 2.7875 209000.0 \n",
"4425 249.0 82.0 1.6136 137500.0 \n",
"1283 101.0 40.0 2.2361 93800.0 \n",
"... ... ... ... ... \n",
"1221 1341.0 546.0 2.1382 104000.0 \n",
"12640 884.0 395.0 2.1679 75400.0 \n",
"5747 825.0 269.0 5.5118 354700.0 \n",
"16224 1746.0 544.0 3.4625 84600.0 \n",
"8967 751.0 259.0 5.4440 336000.0 \n",
"\n",
" ocean_proximity identifier rooms_per_house bedrooms_ratio \\\n",
"16415 INLAND -121222.12 5.000000 0.200000 \n",
"1279 INLAND -121602.15 6.246875 0.207604 \n",
"7741 <1H OCEAN -118116.05 4.483713 0.254995 \n",
"4425 <1H OCEAN -118205.93 2.719512 0.358744 \n",
"1283 INLAND -121781.98 4.400000 0.244318 \n",
"... ... ... ... ... \n",
"1221 INLAND -120611.72 5.668498 0.220032 \n",
"12640 INLAND -121411.47 4.792405 0.219229 \n",
"5747 <1H OCEAN -118235.83 5.799257 0.179487 \n",
"16224 INLAND -121292.02 5.722426 0.185031 \n",
"8967 <1H OCEAN -118366.00 5.922780 0.168188 \n",
"\n",
" people_per_house \n",
"16415 2.752688 \n",
"1279 3.021875 \n",
"7741 2.592834 \n",
"4425 3.036585 \n",
"1283 2.525000 \n",
"... ... \n",
"1221 2.456044 \n",
"12640 2.237975 \n",
"5747 3.066914 \n",
"16224 3.209559 \n",
"8967 2.899614 \n",
"\n",
"[16512 rows x 14 columns]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train[\"rooms_per_house\"] = train[\"total_rooms\"]/train[\"households\"]\n",
"train[\"bedrooms_ratio\"] =train[\"total_bedrooms\"]/train[\"total_rooms\"]\n",
"train[\"people_per_house\"] = train[\"population\"]/train[\"households\"]\n",
"train"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "8ce5f436-fea5-457c-a8fa-a945dba8c61e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"longitude -0.051167\n",
"latitude -0.137691\n",
"housing_median_age 0.105329\n",
"total_rooms 0.138007\n",
"total_bedrooms 0.052814\n",
"population -0.021544\n",
"households 0.070014\n",
"median_income 0.686865\n",
"median_house_value 1.000000\n",
"identifier -0.051364\n",
"rooms_per_house 0.159500\n",
"bedrooms_ratio -0.255178\n",
"people_per_house -0.027110\n",
"Name: median_house_value, dtype: float64"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.corr(numeric_only=True)[\"median_house_value\"]\n"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "f80d8843-0cf3-4b27-9044-5dda62998b8d",
"metadata": {},
"outputs": [],
"source": [
"#prepare data \n"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "ef08898f-f031-4c46-9d00-073f15145e32",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"16415 158300.0\n",
"1279 253900.0\n",
"7741 209000.0\n",
"4425 137500.0\n",
"1283 93800.0\n",
" ... \n",
"1221 104000.0\n",
"12640 75400.0\n",
"5747 354700.0\n",
"16224 84600.0\n",
"8967 336000.0\n",
"Name: median_house_value, Length: 16512, dtype: float64"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_features=train.drop(\"median_house_value\",axis=1 ,)\n",
"train_target = train[\"median_house_value\"]\n",
"train_target"
]
},
{
"cell_type": "raw",
"id": "0107439c-3847-48e6-afd5-4ce0318ef760",
"metadata": {},
"source": [
"##data cleaning"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "87f82346-c612-45e2-9010-644ef19e3d73",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 16512 entries, 16415 to 8967\n",
"Data columns (total 13 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 16512 non-null float64\n",
" 1 latitude 16512 non-null float64\n",
" 2 housing_median_age 16512 non-null float64\n",
" 3 total_rooms 16512 non-null float64\n",
" 4 total_bedrooms 16344 non-null float64\n",
" 5 population 16512 non-null float64\n",
" 6 households 16512 non-null float64\n",
" 7 median_income 16512 non-null float64\n",
" 8 ocean_proximity 16512 non-null object \n",
" 9 identifier 16512 non-null float64\n",
" 10 rooms_per_house 16512 non-null float64\n",
" 11 bedrooms_ratio 16344 non-null float64\n",
" 12 people_per_house 16512 non-null float64\n",
"dtypes: float64(12), object(1)\n",
"memory usage: 1.8+ MB\n"
]
}
],
"source": [
"train_features.info()"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "9ece43d8-5c4c-42f9-999c-e695edafb662",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 16344 entries, 16415 to 8967\n",
"Data columns (total 13 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 16344 non-null float64\n",
" 1 latitude 16344 non-null float64\n",
" 2 housing_median_age 16344 non-null float64\n",
" 3 total_rooms 16344 non-null float64\n",
" 4 total_bedrooms 16344 non-null float64\n",
" 5 population 16344 non-null float64\n",
" 6 households 16344 non-null float64\n",
" 7 median_income 16344 non-null float64\n",
" 8 ocean_proximity 16344 non-null object \n",
" 9 identifier 16344 non-null float64\n",
" 10 rooms_per_house 16344 non-null float64\n",
" 11 bedrooms_ratio 16344 non-null float64\n",
" 12 people_per_house 16344 non-null float64\n",
"dtypes: float64(12), object(1)\n",
"memory usage: 1.7+ MB\n"
]
}
],
"source": [
"#remove na rows values\n",
"train_features.dropna(subset=[\"total_bedrooms\"]).info()"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "21f9bb0e-3a8b-4164-b478-efecea604e4d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 16512 entries, 16415 to 8967\n",
"Data columns (total 12 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 16512 non-null float64\n",
" 1 latitude 16512 non-null float64\n",
" 2 housing_median_age 16512 non-null float64\n",
" 3 total_rooms 16512 non-null float64\n",
" 4 population 16512 non-null float64\n",
" 5 households 16512 non-null float64\n",
" 6 median_income 16512 non-null float64\n",
" 7 ocean_proximity 16512 non-null object \n",
" 8 identifier 16512 non-null float64\n",
" 9 rooms_per_house 16512 non-null float64\n",
" 10 bedrooms_ratio 16344 non-null float64\n",
" 11 people_per_house 16512 non-null float64\n",
"dtypes: float64(11), object(1)\n",
"memory usage: 1.6+ MB\n"
]
}
],
"source": [
"# reomove the na column\n",
"train_features.drop([\"total_bedrooms\"],axis=1).info()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "5198f677-d321-4e29-8ead-8c9713f1a1ef",
"metadata": {},
"outputs": [],
"source": [
"#imputed na values\n",
"total_bedrooms_median= train_features[\"total_bedrooms\"].median()\n",
"train_features[\"total_bedrooms\"] =train_features[\"total_bedrooms\"].fillna(total_bedrooms_median)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "c09755d9-3fd8-4b66-a8f3-2786110c1e24",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 16512 entries, 16415 to 8967\n",
"Data columns (total 13 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 16512 non-null float64\n",
" 1 latitude 16512 non-null float64\n",
" 2 housing_median_age 16512 non-null float64\n",
" 3 total_rooms 16512 non-null float64\n",
" 4 total_bedrooms 16512 non-null float64\n",
" 5 population 16512 non-null float64\n",
" 6 households 16512 non-null float64\n",
" 7 median_income 16512 non-null float64\n",
" 8 ocean_proximity 16512 non-null object \n",
" 9 identifier 16512 non-null float64\n",
" 10 rooms_per_house 16512 non-null float64\n",
" 11 bedrooms_ratio 16344 non-null float64\n",
" 12 people_per_house 16512 non-null float64\n",
"dtypes: float64(12), object(1)\n",
"memory usage: 1.8+ MB\n"
]
}
],
"source": [
"train_features.info()"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "5cbafb0f-f251-4b48-8e4a-313bdbdb119e",
"metadata": {},
"outputs": [],
"source": [
"train_features[\"bedrooms_ratio\"] =train_features[\"total_bedrooms\"]/train_features[\"total_rooms\"]\n"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "b258118c-fa8c-483d-a126-71b740d5a27a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 16512 entries, 16415 to 8967\n",
"Data columns (total 13 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 16512 non-null float64\n",
" 1 latitude 16512 non-null float64\n",
" 2 housing_median_age 16512 non-null float64\n",
" 3 total_rooms 16512 non-null float64\n",
" 4 total_bedrooms 16512 non-null float64\n",
" 5 population 16512 non-null float64\n",
" 6 households 16512 non-null float64\n",
" 7 median_income 16512 non-null float64\n",
" 8 ocean_proximity 16512 non-null object \n",
" 9 identifier 16512 non-null float64\n",
" 10 rooms_per_house 16512 non-null float64\n",
" 11 bedrooms_ratio 16512 non-null float64\n",
" 12 people_per_house 16512 non-null float64\n",
"dtypes: float64(12), object(1)\n",
"memory usage: 1.8+ MB\n"
]
}
],
"source": [
"train_features.info()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "9a0d9072-56fb-4cc2-9426-50b04db3f348",
"metadata": {},
"outputs": [],
"source": [
"#sklearn impute\n",
"\n",
"from sklearn.impute import SimpleImputer"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "c853730b-e3ee-49c1-80a2-6ac1a38d6a60",
"metadata": {},
"outputs": [],
"source": [
"simple_imputer=SimpleImputer(strategy=\"median\")"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "674c93e7-c449-4fcd-94cb-2473e3d8692d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 16512 entries, 16415 to 8967\n",
"Data columns (total 13 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 16512 non-null float64\n",
" 1 latitude 16512 non-null float64\n",
" 2 housing_median_age 16512 non-null float64\n",
" 3 total_rooms 16512 non-null float64\n",
" 4 total_bedrooms 16512 non-null float64\n",
" 5 population 16512 non-null float64\n",
" 6 households 16512 non-null float64\n",
" 7 median_income 16512 non-null float64\n",
" 8 ocean_proximity 16512 non-null object \n",
" 9 identifier 16512 non-null float64\n",
" 10 rooms_per_house 16512 non-null float64\n",
" 11 bedrooms_ratio 16512 non-null float64\n",
" 12 people_per_house 16512 non-null float64\n",
"dtypes: float64(12), object(1)\n",
"memory usage: 1.8+ MB\n"
]
}
],
"source": [
"train_features.info()"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "0cc7adae-e855-467f-b6cc-bfa666483ce8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 16512 entries, 16415 to 8967\n",
"Data columns (total 12 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 16512 non-null float64\n",
" 1 latitude 16512 non-null float64\n",
" 2 housing_median_age 16512 non-null float64\n",
" 3 total_rooms 16512 non-null float64\n",
" 4 total_bedrooms 16512 non-null float64\n",
" 5 population 16512 non-null float64\n",
" 6 households 16512 non-null float64\n",
" 7 median_income 16512 non-null float64\n",
" 8 identifier 16512 non-null float64\n",
" 9 rooms_per_house 16512 non-null float64\n",
" 10 bedrooms_ratio 16512 non-null float64\n",
" 11 people_per_house 16512 non-null float64\n",
"dtypes: float64(12)\n",
"memory usage: 1.6 MB\n"
]
}
],
"source": [
"train_features_numeric = train_features.select_dtypes(include=[np.number])\n",
"train_features_numeric.info()"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "201dee2a-88fb-4743-878f-741b9abd2396",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-1 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-1 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-1 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-1 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-1 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-1 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content {\n",
" display: none;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" display: block;\n",
" width: 100%;\n",
" overflow: visible;\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-1 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-1 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-1 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-1 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-1 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".estimator-table summary {\n",
" padding: .5rem;\n",
" font-family: monospace;\n",
" cursor: pointer;\n",
"}\n",
"\n",
".estimator-table details[open] {\n",
" padding-left: 0.1rem;\n",
" padding-right: 0.1rem;\n",
" padding-bottom: 0.3rem;\n",
"}\n",
"\n",
".estimator-table .parameters-table {\n",
" margin-left: auto !important;\n",
" margin-right: auto !important;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(odd) {\n",
" background-color: #fff;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(even) {\n",
" background-color: #f6f6f6;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:hover {\n",
" background-color: #e0e0e0;\n",
"}\n",
"\n",
".estimator-table table td {\n",
" border: 1px solid rgba(106, 105, 104, 0.232);\n",
"}\n",
"\n",
".user-set td {\n",
" color:rgb(255, 94, 0);\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td.value pre {\n",
" color:rgb(255, 94, 0) !important;\n",
" background-color: transparent !important;\n",
"}\n",
"\n",
".default td {\n",
" color: black;\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td i,\n",
".default td i {\n",
" color: black;\n",
"}\n",
"\n",
".copy-paste-icon {\n",
" background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
" background-repeat: no-repeat;\n",
" background-size: 14px 14px;\n",
" background-position: 0;\n",
" display: inline-block;\n",
" width: 14px;\n",
" height: 14px;\n",
" cursor: pointer;\n",
"}\n",
"</style><body><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>SimpleImputer(strategy=&#x27;median&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
" // Get the parameter prefix from the closest toggleable content\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
"\n",
" const originalStyle = element.style;\n",
" const computedStyle = window.getComputedStyle(element);\n",
" const originalWidth = computedStyle.width;\n",
" const originalHTML = element.innerHTML.replace('Copied!', '');\n",
"\n",
" navigator.clipboard.writeText(fullParamName)\n",
" .then(() => {\n",
" element.style.width = originalWidth;\n",
" element.style.color = 'green';\n",
" element.innerHTML = \"Copied!\";\n",
"\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" })\n",
" .catch(err => {\n",
" console.error('Failed to copy:', err);\n",
" element.style.color = 'red';\n",
" element.innerHTML = \"Failed!\";\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" });\n",
" return false;\n",
"}\n",
"\n",
"document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
"\n",
" element.setAttribute('title', fullParamName);\n",
"});\n",
"</script></body>"
],
"text/plain": [
"SimpleImputer(strategy='median')"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simple_imputer.fit(train_features_numeric)"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "76197fd5-27cf-4e3a-814a-6f1fba1853a8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.18480000e+02, 3.42500000e+01, 2.90000000e+01, 2.12900000e+03,\n",
" 4.36000000e+02, 1.16800000e+03, 4.11000000e+02, 3.53410000e+00,\n",
" -1.18445990e+05, 5.22483203e+00, 2.03413719e-01, 2.82065903e+00])"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simple_imputer.statistics_\n"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "38f3b792-0d3c-45c6-89ba-ac58291a4b09",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(16512, 12)"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simple_imputer.transform(train_features_numeric).shape\n"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "ce34233e-17af-4caa-ab14-7c8442143e5a",
"metadata": {},
"outputs": [],
"source": [
"train_features_numeric = pd.DataFrame(simple_imputer.transform(train_features_numeric),columns=train_features_numeric.columns,index=train_features_numeric.index)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "efa46450-ffd6-4b29-8c22-005beef95612",
"metadata": {},
"outputs": [],
"source": [
"#consistency\n",
"##estimator\n",
"##transformer\n",
"##predictors\n",
"\n",
"#inspection\n",
"\n",
"#composition"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "00180e0b-4453-4359-9c3b-45ef057e5c9e",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>identifier</th>\n",
" <th>rooms_per_house</th>\n",
" <th>bedrooms_ratio</th>\n",
" <th>people_per_house</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16415</th>\n",
" <td>-121.26</td>\n",
" <td>37.88</td>\n",
" <td>42.0</td>\n",
" <td>465.0</td>\n",
" <td>93.0</td>\n",
" <td>256.0</td>\n",
" <td>93.0</td>\n",
" <td>3.1719</td>\n",
" <td>-121222.12</td>\n",
" <td>5.000000</td>\n",
" <td>0.200000</td>\n",
" <td>2.752688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1279</th>\n",
" <td>-121.64</td>\n",
" <td>37.85</td>\n",
" <td>22.0</td>\n",
" <td>1999.0</td>\n",
" <td>415.0</td>\n",
" <td>967.0</td>\n",
" <td>320.0</td>\n",
" <td>4.4583</td>\n",
" <td>-121602.15</td>\n",
" <td>6.246875</td>\n",
" <td>0.207604</td>\n",
" <td>3.021875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7741</th>\n",
" <td>-118.15</td>\n",
" <td>33.95</td>\n",
" <td>35.0</td>\n",
" <td>2753.0</td>\n",
" <td>702.0</td>\n",
" <td>1592.0</td>\n",
" <td>614.0</td>\n",
" <td>2.7875</td>\n",
" <td>-118116.05</td>\n",
" <td>4.483713</td>\n",
" <td>0.254995</td>\n",
" <td>2.592834</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4425</th>\n",
" <td>-118.24</td>\n",
" <td>34.07</td>\n",
" <td>27.0</td>\n",
" <td>223.0</td>\n",
" <td>80.0</td>\n",
" <td>249.0</td>\n",
" <td>82.0</td>\n",
" <td>1.6136</td>\n",
" <td>-118205.93</td>\n",
" <td>2.719512</td>\n",
" <td>0.358744</td>\n",
" <td>3.036585</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1283</th>\n",
" <td>-121.82</td>\n",
" <td>38.02</td>\n",
" <td>46.0</td>\n",
" <td>176.0</td>\n",
" <td>43.0</td>\n",
" <td>101.0</td>\n",
" <td>40.0</td>\n",
" <td>2.2361</td>\n",
" <td>-121781.98</td>\n",
" <td>4.400000</td>\n",
" <td>0.244318</td>\n",
" <td>2.525000</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",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1221</th>\n",
" <td>-120.65</td>\n",
" <td>38.28</td>\n",
" <td>21.0</td>\n",
" <td>3095.0</td>\n",
" <td>681.0</td>\n",
" <td>1341.0</td>\n",
" <td>546.0</td>\n",
" <td>2.1382</td>\n",
" <td>-120611.72</td>\n",
" <td>5.668498</td>\n",
" <td>0.220032</td>\n",
" <td>2.456044</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>-121.45</td>\n",
" <td>38.53</td>\n",
" <td>34.0</td>\n",
" <td>1893.0</td>\n",
" <td>415.0</td>\n",
" <td>884.0</td>\n",
" <td>395.0</td>\n",
" <td>2.1679</td>\n",
" <td>-121411.47</td>\n",
" <td>4.792405</td>\n",
" <td>0.219229</td>\n",
" <td>2.237975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5747</th>\n",
" <td>-118.27</td>\n",
" <td>34.17</td>\n",
" <td>48.0</td>\n",
" <td>1560.0</td>\n",
" <td>280.0</td>\n",
" <td>825.0</td>\n",
" <td>269.0</td>\n",
" <td>5.5118</td>\n",
" <td>-118235.83</td>\n",
" <td>5.799257</td>\n",
" <td>0.179487</td>\n",
" <td>3.066914</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16224</th>\n",
" <td>-121.33</td>\n",
" <td>37.98</td>\n",
" <td>36.0</td>\n",
" <td>3113.0</td>\n",
" <td>576.0</td>\n",
" <td>1746.0</td>\n",
" <td>544.0</td>\n",
" <td>3.4625</td>\n",
" <td>-121292.02</td>\n",
" <td>5.722426</td>\n",
" <td>0.185031</td>\n",
" <td>3.209559</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8967</th>\n",
" <td>-118.40</td>\n",
" <td>34.00</td>\n",
" <td>37.0</td>\n",
" <td>1534.0</td>\n",
" <td>258.0</td>\n",
" <td>751.0</td>\n",
" <td>259.0</td>\n",
" <td>5.4440</td>\n",
" <td>-118366.00</td>\n",
" <td>5.922780</td>\n",
" <td>0.168188</td>\n",
" <td>2.899614</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 12 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"16415 -121.26 37.88 42.0 465.0 93.0 \n",
"1279 -121.64 37.85 22.0 1999.0 415.0 \n",
"7741 -118.15 33.95 35.0 2753.0 702.0 \n",
"4425 -118.24 34.07 27.0 223.0 80.0 \n",
"1283 -121.82 38.02 46.0 176.0 43.0 \n",
"... ... ... ... ... ... \n",
"1221 -120.65 38.28 21.0 3095.0 681.0 \n",
"12640 -121.45 38.53 34.0 1893.0 415.0 \n",
"5747 -118.27 34.17 48.0 1560.0 280.0 \n",
"16224 -121.33 37.98 36.0 3113.0 576.0 \n",
"8967 -118.40 34.00 37.0 1534.0 258.0 \n",
"\n",
" population households median_income identifier rooms_per_house \\\n",
"16415 256.0 93.0 3.1719 -121222.12 5.000000 \n",
"1279 967.0 320.0 4.4583 -121602.15 6.246875 \n",
"7741 1592.0 614.0 2.7875 -118116.05 4.483713 \n",
"4425 249.0 82.0 1.6136 -118205.93 2.719512 \n",
"1283 101.0 40.0 2.2361 -121781.98 4.400000 \n",
"... ... ... ... ... ... \n",
"1221 1341.0 546.0 2.1382 -120611.72 5.668498 \n",
"12640 884.0 395.0 2.1679 -121411.47 4.792405 \n",
"5747 825.0 269.0 5.5118 -118235.83 5.799257 \n",
"16224 1746.0 544.0 3.4625 -121292.02 5.722426 \n",
"8967 751.0 259.0 5.4440 -118366.00 5.922780 \n",
"\n",
" bedrooms_ratio people_per_house \n",
"16415 0.200000 2.752688 \n",
"1279 0.207604 3.021875 \n",
"7741 0.254995 2.592834 \n",
"4425 0.358744 3.036585 \n",
"1283 0.244318 2.525000 \n",
"... ... ... \n",
"1221 0.220032 2.456044 \n",
"12640 0.219229 2.237975 \n",
"5747 0.179487 3.066914 \n",
"16224 0.185031 3.209559 \n",
"8967 0.168188 2.899614 \n",
"\n",
"[16512 rows x 12 columns]"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#this is my numerical data \n",
"train_features_numeric"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "de11d63e-413e-4558-852c-068485f0d449",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<bound method DataFrame.value_counts of ocean_proximity\n",
"16415 INLAND\n",
"1279 INLAND\n",
"7741 <1H OCEAN\n",
"4425 <1H OCEAN\n",
"1283 INLAND\n",
"... ...\n",
"1221 INLAND\n",
"12640 INLAND\n",
"5747 <1H OCEAN\n",
"16224 INLAND\n",
"8967 <1H OCEAN\n",
"\n",
"[16512 rows x 1 columns]>"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# now what to do with catagories like ocean proximity\n",
"train_features[[\"ocean_proximity\"]].value_counts\n"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "4353f67b-9cd4-4d6d-8542-4910bb4b1520",
"metadata": {},
"outputs": [],
"source": [
"train_features_categorical = train_features[[\"ocean_proximity\"]]\n"
]
},
{
"cell_type": "code",
"execution_count": 68,
"id": "05ab56d3-257e-4479-9d95-49db1db56817",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import OrdinalEncoder"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "83d575e4-c48b-40a4-9a21-a0bfaddc2cc8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1.],\n",
" [1.],\n",
" [0.],\n",
" ...,\n",
" [0.],\n",
" [1.],\n",
" [0.]], shape=(16512, 1))"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"oe = OrdinalEncoder()\n",
"ocean_proximity_index= oe.fit_transform(train_features_categorical)\n",
"ocean_proximity_index"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "bfa4db35-e823-4f90-8979-2a63db139068",
"metadata": {},
"outputs": [
{
"data": {
"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>ocean_proximity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16415</th>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1279</th>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7741</th>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4425</th>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1283</th>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1221</th>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5747</th>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16224</th>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8967</th>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" ocean_proximity\n",
"16415 INLAND\n",
"1279 INLAND\n",
"7741 <1H OCEAN\n",
"4425 <1H OCEAN\n",
"1283 INLAND\n",
"... ...\n",
"1221 INLAND\n",
"12640 INLAND\n",
"5747 <1H OCEAN\n",
"16224 INLAND\n",
"8967 <1H OCEAN\n",
"\n",
"[16512 rows x 1 columns]"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_features_categorical"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "cbe182ac-c5d5-440e-9cf4-eac984d35ff0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[array(['<1H OCEAN', 'INLAND', 'ISLAND', 'NEAR BAY', 'NEAR OCEAN'],\n",
" dtype=object)]"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"oe.categories_"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "f184c906-71c9-4477-b800-aff5ac69c619",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import OneHotEncoder"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "fe21ab89-6342-44db-85cb-87e0a6c546ad",
"metadata": {},
"outputs": [],
"source": [
"ohe =OneHotEncoder()\n",
"ocean_proximity_ohe= ohe.fit_transform(train_features_categorical)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "f160c0ed-fbff-4564-b01a-c00c98cd0e04",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0., 1., 0., 0., 0.],\n",
" [0., 1., 0., 0., 0.],\n",
" [1., 0., 0., 0., 0.],\n",
" ...,\n",
" [1., 0., 0., 0., 0.],\n",
" [0., 1., 0., 0., 0.],\n",
" [1., 0., 0., 0., 0.]], shape=(16512, 5))"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ocean_proximity_ohe.toarray()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "310a33fc-50b1-4aff-b7d8-6a6ddf56b1e1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[array(['<1H OCEAN', 'INLAND', 'ISLAND', 'NEAR BAY', 'NEAR OCEAN'],\n",
" dtype=object)]"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ohe.categories_"
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "92e8521b-3cbe-4ba6-98b3-7a5a82229cb2",
"metadata": {},
"outputs": [],
"source": [
"train_features_categorical_ohe = pd.DataFrame(ocean_proximity_ohe.toarray(),columns=ohe.get_feature_names_out())"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "2248526c-5858-4385-bbe9-75e016e27da0",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import MinMaxScaler"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "9fedd8d3-ecda-449d-8eea-7ea0483c746c",
"metadata": {},
"outputs": [],
"source": [
"mms = MinMaxScaler(feature_range=(-1,1))"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "33073173-49d1-4844-bedb-197d600adef7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-0.38446215, 0.13496281, 0.60784314, ..., -0.93691343,\n",
" -0.88348775, -0.99668387],\n",
" [-0.46015936, 0.12858661, -0.17647059, ..., -0.91797651,\n",
" -0.87804467, -0.99625062],\n",
" [ 0.23505976, -0.70031881, 0.33333333, ..., -0.94475454,\n",
" -0.84412062, -0.99694115],\n",
" ...,\n",
" [ 0.21115538, -0.65356004, 0.84313725, ..., -0.92477472,\n",
" -0.89817158, -0.99617813],\n",
" [-0.39840637, 0.15621679, 0.37254902, ..., -0.92594157,\n",
" -0.89420346, -0.99594855],\n",
" [ 0.18525896, -0.68969182, 0.41176471, ..., -0.9228987 ,\n",
" -0.90626013, -0.9964474 ]], shape=(16512, 12))"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mms.fit_transform(train_features_numeric)\n"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "9f4473c1-dec5-44e3-a409-6589b8e96858",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler"
]
},
{
"cell_type": "code",
"execution_count": 81,
"id": "2cb9c779-599d-4619-b932-f05bf655b26a",
"metadata": {},
"outputs": [],
"source": [
"ss = StandardScaler()"
]
},
{
"cell_type": "code",
"execution_count": 82,
"id": "6b4f48d4-abf0-44b2-b066-2e34d7145c15",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-8.47903024e-01, 1.06069020e+00, 1.06500612e+00, ...,\n",
" -1.79381511e-01, -2.10670105e-01, -2.84533255e-02],\n",
" [-1.03770326e+00, 1.04660645e+00, -5.26863260e-01, ...,\n",
" 3.65121948e-01, -9.60951107e-02, -3.75641043e-03],\n",
" [ 7.05462097e-01, -7.84281723e-01, 5.07851836e-01, ...,\n",
" -4.04841051e-01, 6.17994355e-01, -4.31193773e-02],\n",
" ...,\n",
" [ 6.45525179e-01, -6.81000852e-01, 1.54256693e+00, ...,\n",
" 1.69649412e-01, -5.19759731e-01, 3.75800155e-04],\n",
" [-8.82866226e-01, 1.10763605e+00, 5.87445305e-01, ...,\n",
" 1.36098158e-01, -4.36232057e-01, 1.34628996e-02],\n",
" [ 5.80593518e-01, -7.60808797e-01, 6.67038774e-01, ...,\n",
" 2.23591409e-01, -6.90020966e-01, -1.49734229e-02]],\n",
" shape=(16512, 12))"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ss.fit_transform(train_features_numeric)"
]
},
{
"cell_type": "code",
"execution_count": 83,
"id": "104773af-d5af-4c79-a1a2-83f793b4ab89",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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11VXVyeXy9XnMlqWpUWLFumrX/2qMjMz7ffuOObLM/TFa9lVRil2ruXBgweVk5Ojjz/+WH/3d3+nbdu26Y477rD/oxYL17G7jFLsXMeKigodOHBA+/fv77SuL/4zSQmKAofDEfbasqxOy3qDKVOm2H8fNWqUcnJy9Pd///fauHGj/YG968ly+UxX8zf7nHxWuW5W9m9961v23zMzMzV69GjddtttevXVVzV9+vRut+utGefPn6+3335bu3fv7rQuVq5ldxlj5VpmZGSovr5e586d09atWzVz5kzt3Lmz2/fui9exu4x33HFHTFzHkydP6pFHHlFVVZUGDBjQ7VxfupZ8OyyCUlJSFBcX16mFNjU1dWqsvVFiYqJGjRqld999135K7EpZPB6PWltb5ff7rzhz5syZTu919uzZm3JOPstcHo+n0/v4/X6FQqHPPPvQoUN122236d1337WPra9kXLBggV5++WW9/vrruvXWW+3lsXQtu8vYlb56LePj4/UP//APGj16tEpKSnT33Xfrl7/8ZUxdx+4ydqUvXse6ujo1NTUpKytL/fv3V//+/bVz5079+7//u/r372/vv09dy2v+9BCuyb333mv98Ic/DFs2cuTIXvnB6Mt9/PHH1i233GItX77c/oDbM888Y68PBoNdfsDtd7/7nT3zwQcfdPkBt71799oze/bsuekfjP4scnV8cO+DDz6wZyoqKj6TD0Zf7q9//avlcrmsjRs3WpbVNzK2t7dbDz/8sOX1eq133nmny/V9/VpeLWNX+uK17MrXv/51a+bMmTFxHa+WsSt98To2NzdbBw8eDPszevRo67vf/a518ODBPnktKUER1vGI/Pr1663Dhw9bRUVFVmJiovXee+/d7EPrZPHixdYbb7xh/eUvf7H27Nlj5efnW0lJSfaxPv3005bb7bZ+//vfWwcPHrS+853vdPmo46233mrt2LHDOnDggPX1r3+9y0cd77rrLqu2ttaqra21Ro0aFdVH5M+fP2+99dZb1ltvvWVJslatWmW99dZb9o8p+KxydTzCOWHCBOvAgQPWjh07rFtvvTUij6peKeP58+etxYsXWzU1NdaxY8es119/3crJybFuueWWPpXxhz/8oeV2u6033ngj7LHilpYWe6avX8urZYyVa7l06VJr165d1rFjx6y3337b+slPfmL169fPqqqqsiyr71/Hq2WMlevYlb99Osyy+t61pARFwX/8x39Yt912mxUfH2/94z/+Y9jjrr1Jx89vcDqdltfrtaZPn24dOnTIXt/e3m498cQTlsfjsVwul/W1r33NOnjwYNg+Ll26ZM2fP99KTk62Bg4caOXn51snTpwIm/nwww+tBx980EpKSrKSkpKsBx980PL7/VHL9frrr1uSOv3p+D+yzzLX8ePHralTp1oDBw60kpOTrfnz51sff/xxVDO2tLRYubm51uc//3nL6XRaw4YNs2bOnNnp+Ht7xq7ySbJefPFFe6avX8urZYyVa/n973/f/nfi5z//eWvChAl2AbKsvn8dr5YxVq5jVy4vQX3tWjosy7Ku/ZtnAAAAsYEPRgMAACNRggAAgJEoQQAAwEiUIAAAYCRKEAAAMBIlCAAAGIkSBAAAjEQJAgAARqIEAQAAI1GCAACAkShBAADASJQgAABgpP8fVNrv3QyQr7IAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"train_features_numeric[\"total_rooms\"].hist()\n"
]
},
{
"cell_type": "code",
"execution_count": 84,
"id": "066c7c07-0e92-4bb4-8da3-7a998c610d2b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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/exnnV6qQ99g3uHDrMOHWYfPQJu1w+rOOUwAAAD9TL99TwwAAMCtEGIAAICRCDEAAMBIhBgAAGAkQgy6VFJSovvvv19xcXFKTEzU448/rtOnT0e6rQGhpKREDodDBQUFkW4lKv3f//2f/vqv/1ojR45UbGysfvzjH6u2tjbSbUWlr7/+Wv/0T/+kcePGadiwYbrzzjv185//XB0dHZFuzXgHDhzQnDlzlJKSIofDoQ8++CDocsuyVFRUpJSUFA0bNkzTp0/XyZMnI9NsHyLEoEv79+/X0qVLVVNTo6qqKn399dfKzs7W1atXI91aVDt69KjefPNN3XPPPZFuJSo1NTXpwQcflNPp1CeffKJf//rX+uUvf8mne/eR119/Xf/8z/+ssrIynTp1SuvXr9cvfvELlZaWRro14129elX33nuvysrKurx8/fr12rBhg8rKynT06FF5PB5lZWXZv1wxWnCKNbrl4sWLSkxM1P79+/Xwww9Hup2o1NLSoj/7sz/TG2+8oVdffVU//vGPtWnTpki3FVVefPFF/cd//If+/d//PdKtDAi5ublKSkrStm3b7H1PPvmkYmNjtWPHjgh2Fl0cDod2796txx9/XNI3qzApKSkqKCjQCy+8IEny+/1KSkrS66+/riVLlkSw297FSgy6xefzSZISEhIi3En0Wrp0qR577DHNnDkz0q1ErY8++kjp6el66qmnlJiYqPvuu09bt26NdFtR66GHHtK//uu/6je/+Y0k6b//+7918OBB/cVf/EWEO4tuZ86cUUNDg7Kzs+19LpdL06ZNU3V1dQQ76339+hN70T9YlqXCwkI99NBDSktLi3Q7UamiokL/+Z//qaNHj0a6laj2P//zP9q8ebMKCwu1Zs0aHTlyRCtWrJDL5dLf/M3fRLq9qPPCCy/I5/PpRz/6kWJiYtTe3q5169bppz/9aaRbi2rXf3Hyjb8sOSkpSWfPno1ES32GEIPvtGzZMn3++ec6ePBgpFuJSufOndNzzz2nyspKDR06NNLtRLWOjg6lp6eruLhYknTffffp5MmT2rx5MyGmD7z77rsqLy/Xrl27dPfdd6uurk4FBQVKSUnRggULIt1e1HM4HEHblmV12mc6Qgxuafny5froo4904MABjR49OtLtRKXa2lo1NjZq8uTJ9r729nYdOHBAZWVl8vv9iomJiWCH0SM5OVl33XVX0L6JEyfqvffei1BH0e0f//Ef9eKLL+ov//IvJUmTJk3S2bNnVVJSQojpQx6PR9I3KzLJycn2/sbGxk6rM6bjPTHokmVZWrZsmd5//319+umnGjduXKRbilozZszQ8ePHVVdXZ3+lp6frr/7qr1RXV0eA6UUPPvhgp48K+M1vfsMvle0j165d06BBwT9mYmJiOMW6j40bN04ej0dVVVX2vra2Nu3fv19Tp06NYGe9j5UYdGnp0qXatWuXPvzwQ8XFxdmvsbrdbg0bNizC3UWXuLi4Tu81Gj58uEaOHMl7kHrZP/zDP2jq1KkqLi7WvHnzdOTIEb355pt68803I91aVJozZ47WrVunMWPG6O6779Z//dd/acOGDfrbv/3bSLdmvJaWFn355Zf29pkzZ1RXV6eEhASNGTNGBQUFKi4u1vjx4zV+/HgVFxcrNjZW8+fPj2DXfcACuiCpy6+33nor0q0NCNOmTbOee+65SLcRlf7lX/7FSktLs1wul/WjH/3IevPNNyPdUtRqbm62nnvuOWvMmDHW0KFDrTvvvNN66aWXLL/fH+nWjPdv//ZvXX6PXrBggWVZltXR0WH97Gc/szwej+VyuayHH37YOn78eGSb7gN8TgwAADAS74kBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEj/D+LB743UGGYSAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"train_features_numeric[\"total_rooms\"].apply(np.log).hist(bins=30)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"id": "4f0a5eac-8e75-40a1-8fe0-08be95ec3c1d",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics.pairwise import rbf_kernel"
]
},
{
"cell_type": "code",
"execution_count": 86,
"id": "a055027b-460b-4ae3-920e-2fe936a80b2a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[7.44658307e-03],\n",
" [4.57533877e-08],\n",
" [1.00000000e+00],\n",
" ...,\n",
" [4.57533877e-08],\n",
" [9.04837418e-01],\n",
" [6.70320046e-01]], shape=(16512, 1))"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rbf_kernel(train_features_numeric[[\"housing_median_age\"]],[[35]],gamma=0.1)"
]
},
{
"cell_type": "code",
"execution_count": 87,
"id": "56d6bcbf-2741-4590-99db-13e67449e367",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x20ee254b250>]"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax =plt.subplots()\n",
"ax.hist(train_features_numeric[\"housing_median_age\"],bins =30)\n",
"\n",
"housing_ages= np.linspace(train_features_numeric[\"housing_median_age\"].min(),train_features_numeric[\"housing_median_age\"].max(),1000).reshape(-1,1)\n",
"\n",
"rbf1 = rbf_kernel(housing_ages,[[35]],gamma=0.1)\n",
"rbf2 = rbf_kernel(housing_ages,[[35]],gamma=0.2)\n",
"\n",
"\n",
"ax2=ax.twinx()\n",
"ax2.plot(housing_ages,rbf1,color=\"black\",lw=2)\n",
"ax2.plot(housing_ages,rbf2,color=\"black\",lw=2,ls=\"--\")"
]
},
{
"cell_type": "code",
"execution_count": 88,
"id": "8e0bd526-02f6-4589-b18b-d92de7bb86fe",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "code",
"execution_count": 89,
"id": "dd9f70ec-5a71-4085-b71e-fc9bf6630a4d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-0.41979429],\n",
" [ 0.41090161],\n",
" [ 0.02075259],\n",
" ...,\n",
" [ 1.28678181],\n",
" [-1.0601948 ],\n",
" [ 1.12429213]], shape=(16512, 1))"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"target_values = ss.fit_transform(train_target.to_frame())\n",
"target_values"
]
},
{
"cell_type": "code",
"execution_count": 90,
"id": "61055e4c-44d8-48e2-baa3-d856b7c5840c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-2 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-2 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-2 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-2 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-2 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-2 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-2 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-2 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-2 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-2 div.sk-toggleable__content {\n",
" display: none;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" display: block;\n",
" width: 100%;\n",
" overflow: visible;\n",
"}\n",
"\n",
"#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-2 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-2 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-2 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-2 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-2 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-2 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-2 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".estimator-table summary {\n",
" padding: .5rem;\n",
" font-family: monospace;\n",
" cursor: pointer;\n",
"}\n",
"\n",
".estimator-table details[open] {\n",
" padding-left: 0.1rem;\n",
" padding-right: 0.1rem;\n",
" padding-bottom: 0.3rem;\n",
"}\n",
"\n",
".estimator-table .parameters-table {\n",
" margin-left: auto !important;\n",
" margin-right: auto !important;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(odd) {\n",
" background-color: #fff;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(even) {\n",
" background-color: #f6f6f6;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:hover {\n",
" background-color: #e0e0e0;\n",
"}\n",
"\n",
".estimator-table table td {\n",
" border: 1px solid rgba(106, 105, 104, 0.232);\n",
"}\n",
"\n",
".user-set td {\n",
" color:rgb(255, 94, 0);\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td.value pre {\n",
" color:rgb(255, 94, 0) !important;\n",
" background-color: transparent !important;\n",
"}\n",
"\n",
".default td {\n",
" color: black;\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td i,\n",
".default td i {\n",
" color: black;\n",
"}\n",
"\n",
".copy-paste-icon {\n",
" background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
" background-repeat: no-repeat;\n",
" background-size: 14px 14px;\n",
" background-position: 0;\n",
" display: inline-block;\n",
" width: 14px;\n",
" height: 14px;\n",
" cursor: pointer;\n",
"}\n",
"</style><body><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fit_intercept',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fit_intercept&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy_X',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy_X&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('tol',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">tol&nbsp;</td>\n",
" <td class=\"value\">1e-06</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('n_jobs',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">n_jobs&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('positive',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">positive&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
" // Get the parameter prefix from the closest toggleable content\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
"\n",
" const originalStyle = element.style;\n",
" const computedStyle = window.getComputedStyle(element);\n",
" const originalWidth = computedStyle.width;\n",
" const originalHTML = element.innerHTML.replace('Copied!', '');\n",
"\n",
" navigator.clipboard.writeText(fullParamName)\n",
" .then(() => {\n",
" element.style.width = originalWidth;\n",
" element.style.color = 'green';\n",
" element.innerHTML = \"Copied!\";\n",
"\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" })\n",
" .catch(err => {\n",
" console.error('Failed to copy:', err);\n",
" element.style.color = 'red';\n",
" element.innerHTML = \"Failed!\";\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" });\n",
" return false;\n",
"}\n",
"\n",
"document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
"\n",
" element.setAttribute('title', fullParamName);\n",
"});\n",
"</script></body>"
],
"text/plain": [
"LinearRegression()"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = LinearRegression()\n",
"model.fit(train_features_numeric[[\"median_income\"]],target_values)"
]
},
{
"cell_type": "code",
"execution_count": 91,
"id": "a3e8491a-5663-4056-a841-5660c49ebb28",
"metadata": {},
"outputs": [],
"source": [
"predictions= model.predict(train_features_numeric[[\"median_income\"]].iloc[:5])"
]
},
{
"cell_type": "code",
"execution_count": 92,
"id": "006e3d7b-03fc-4de0-82bd-833a62b8ee52",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[177436.32912486],\n",
" [231100.4887263 ],\n",
" [161400.49038824],\n",
" [112429.4417594 ],\n",
" [138397.98914116]])"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ss.inverse_transform(predictions)"
]
},
{
"cell_type": "code",
"execution_count": 93,
"id": "ea5a4bea-bec2-4232-a5c3-016e04340436",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.compose import TransformedTargetRegressor"
]
},
{
"cell_type": "code",
"execution_count": 94,
"id": "4724c6cb-a00b-4ca0-91a6-a720295e8268",
"metadata": {},
"outputs": [],
"source": [
"model = TransformedTargetRegressor(LinearRegression(),transformer=StandardScaler())"
]
},
{
"cell_type": "code",
"execution_count": 95,
"id": "b3c16296-2c91-47aa-bd76-f32576db8768",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-3 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-3 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-3 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-3 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-3 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-3 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-3 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-3 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-3 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-3 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-3 div.sk-toggleable__content {\n",
" display: none;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" display: block;\n",
" width: 100%;\n",
" overflow: visible;\n",
"}\n",
"\n",
"#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-3 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-3 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-3 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-3 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-3 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-3 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-3 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-3 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-3 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-3 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".estimator-table summary {\n",
" padding: .5rem;\n",
" font-family: monospace;\n",
" cursor: pointer;\n",
"}\n",
"\n",
".estimator-table details[open] {\n",
" padding-left: 0.1rem;\n",
" padding-right: 0.1rem;\n",
" padding-bottom: 0.3rem;\n",
"}\n",
"\n",
".estimator-table .parameters-table {\n",
" margin-left: auto !important;\n",
" margin-right: auto !important;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(odd) {\n",
" background-color: #fff;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(even) {\n",
" background-color: #f6f6f6;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:hover {\n",
" background-color: #e0e0e0;\n",
"}\n",
"\n",
".estimator-table table td {\n",
" border: 1px solid rgba(106, 105, 104, 0.232);\n",
"}\n",
"\n",
".user-set td {\n",
" color:rgb(255, 94, 0);\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td.value pre {\n",
" color:rgb(255, 94, 0) !important;\n",
" background-color: transparent !important;\n",
"}\n",
"\n",
".default td {\n",
" color: black;\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td i,\n",
".default td i {\n",
" color: black;\n",
"}\n",
"\n",
".copy-paste-icon {\n",
" background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
" background-repeat: no-repeat;\n",
" background-size: 14px 14px;\n",
" background-position: 0;\n",
" display: inline-block;\n",
" width: 14px;\n",
" height: 14px;\n",
" cursor: pointer;\n",
"}\n",
"</style><body><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>TransformedTargetRegressor(regressor=LinearRegression(),\n",
" transformer=StandardScaler())</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>TransformedTargetRegressor</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.compose.TransformedTargetRegressor.html\">?<span>Documentation for TransformedTargetRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('regressor',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">regressor&nbsp;</td>\n",
" <td class=\"value\">LinearRegression()</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transformer',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transformer&nbsp;</td>\n",
" <td class=\"value\">StandardScaler()</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>regressor: LinearRegression</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"regressor__\"><pre>LinearRegression()</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"regressor__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fit_intercept',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fit_intercept&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy_X',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy_X&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('tol',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">tol&nbsp;</td>\n",
" <td class=\"value\">1e-06</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('n_jobs',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">n_jobs&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('positive',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">positive&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>transformer: StandardScaler</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"transformer__\"><pre>StandardScaler()</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" ><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"transformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
" // Get the parameter prefix from the closest toggleable content\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
"\n",
" const originalStyle = element.style;\n",
" const computedStyle = window.getComputedStyle(element);\n",
" const originalWidth = computedStyle.width;\n",
" const originalHTML = element.innerHTML.replace('Copied!', '');\n",
"\n",
" navigator.clipboard.writeText(fullParamName)\n",
" .then(() => {\n",
" element.style.width = originalWidth;\n",
" element.style.color = 'green';\n",
" element.innerHTML = \"Copied!\";\n",
"\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" })\n",
" .catch(err => {\n",
" console.error('Failed to copy:', err);\n",
" element.style.color = 'red';\n",
" element.innerHTML = \"Failed!\";\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" });\n",
" return false;\n",
"}\n",
"\n",
"document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
"\n",
" element.setAttribute('title', fullParamName);\n",
"});\n",
"</script></body>"
],
"text/plain": [
"TransformedTargetRegressor(regressor=LinearRegression(),\n",
" transformer=StandardScaler())"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(train_features_numeric[[\"median_income\"]],train_target.to_frame())"
]
},
{
"cell_type": "code",
"execution_count": 96,
"id": "06fe6b6c-a0b5-4e52-98ca-cf8d45157854",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[177436.32912486],\n",
" [231100.4887263 ],\n",
" [161400.49038824],\n",
" [112429.4417594 ],\n",
" [138397.98914116]])"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.predict(train_features_numeric[[\"median_income\"]].iloc[:5])\n"
]
},
{
"cell_type": "code",
"execution_count": 97,
"id": "507e8580-cabe-48f0-943d-86aeff963983",
"metadata": {},
"outputs": [],
"source": [
" from sklearn.preprocessing import FunctionTransformer"
]
},
{
"cell_type": "code",
"execution_count": 98,
"id": "3366b648-1ed0-4bda-bc85-72aa56725743",
"metadata": {},
"outputs": [
{
"data": {
"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>population</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16415</th>\n",
" <td>5.545177</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1279</th>\n",
" <td>6.874198</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7741</th>\n",
" <td>7.372746</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4425</th>\n",
" <td>5.517453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1283</th>\n",
" <td>4.615121</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1221</th>\n",
" <td>7.201171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>6.784457</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5747</th>\n",
" <td>6.715383</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16224</th>\n",
" <td>7.465083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8967</th>\n",
" <td>6.621406</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" population\n",
"16415 5.545177\n",
"1279 6.874198\n",
"7741 7.372746\n",
"4425 5.517453\n",
"1283 4.615121\n",
"... ...\n",
"1221 7.201171\n",
"12640 6.784457\n",
"5747 6.715383\n",
"16224 7.465083\n",
"8967 6.621406\n",
"\n",
"[16512 rows x 1 columns]"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"logaritmic_transformer = FunctionTransformer(np.log,inverse_func=np.exp)\n",
"logaritmic_transformer.transform(train_features_numeric[[\"population\"]])"
]
},
{
"cell_type": "code",
"execution_count": 99,
"id": "e3bfbdc2-29f5-47ff-b155-4f4d5ab1b7d9",
"metadata": {},
"outputs": [],
"source": [
"rbf_transformer =FunctionTransformer(rbf_kernel,kw_args={\"Y\":[[35.0]],\"gamma\":0.1})"
]
},
{
"cell_type": "code",
"execution_count": 100,
"id": "d38c7bbf-6940-4d78-8698-869441d1403d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[7.44658307e-03],\n",
" [4.57533877e-08],\n",
" [1.00000000e+00],\n",
" ...,\n",
" [4.57533877e-08],\n",
" [9.04837418e-01],\n",
" [6.70320046e-01]], shape=(16512, 1))"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rbf_transformer.transform(train_features_numeric[[\"housing_median_age\"]])"
]
},
{
"cell_type": "code",
"execution_count": 101,
"id": "d345a61e-6611-46ae-800b-67f274d6db73",
"metadata": {},
"outputs": [],
"source": [
"#duck typing preproccessing\n"
]
},
{
"cell_type": "code",
"execution_count": 102,
"id": "8c261919-e1df-45e6-abe8-d8322ce62689",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.utils.validation import check_array ,check_is_fitted\n",
"from sklearn.base import BaseEstimator,TransformerMixin"
]
},
{
"cell_type": "code",
"execution_count": 103,
"id": "75ce256c-67dd-4f33-988c-986350eca3a3",
"metadata": {},
"outputs": [],
"source": [
"class CustomStandardScaler(BaseEstimator,TransformerMixin):\n",
" def __init__(self,hp=0):\n",
" self.hp = hp\n",
" \n",
" \n",
" def fit(self,X,Y=None):\n",
" X = check_array(X)\n",
" self.mean_of_X=X.mean(axis = 0)\n",
" self.std_of_X = X.std(axis = 0)\n",
" self.n_features_in_=X.shape[1]\n",
" return self\n",
" def transform(self,X):\n",
" check_is_fitted(self)\n",
" assert self.n_features_in_ ==X.shape[1] \n",
" X = X -self.mean_of_X\n",
" return X/self.std_of_X"
]
},
{
"cell_type": "code",
"execution_count": 104,
"id": "21c6e2c0-f48e-4323-a98a-d493e1b35210",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>identifier</th>\n",
" <th>rooms_per_house</th>\n",
" <th>bedrooms_ratio</th>\n",
" <th>people_per_house</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16415</th>\n",
" <td>-0.847903</td>\n",
" <td>1.060690</td>\n",
" <td>1.065006</td>\n",
" <td>-1.003811</td>\n",
" <td>-1.068653</td>\n",
" <td>-1.039117</td>\n",
" <td>-1.076980</td>\n",
" <td>-0.369087</td>\n",
" <td>-0.847609</td>\n",
" <td>-0.179382</td>\n",
" <td>-0.210670</td>\n",
" <td>-0.028453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1279</th>\n",
" <td>-1.037703</td>\n",
" <td>1.046606</td>\n",
" <td>-0.526863</td>\n",
" <td>-0.292922</td>\n",
" <td>-0.292301</td>\n",
" <td>-0.406831</td>\n",
" <td>-0.475183</td>\n",
" <td>0.309799</td>\n",
" <td>-1.037612</td>\n",
" <td>0.365122</td>\n",
" <td>-0.096095</td>\n",
" <td>-0.003756</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7741</th>\n",
" <td>0.705462</td>\n",
" <td>-0.784282</td>\n",
" <td>0.507852</td>\n",
" <td>0.056499</td>\n",
" <td>0.399665</td>\n",
" <td>0.148977</td>\n",
" <td>0.304237</td>\n",
" <td>-0.571951</td>\n",
" <td>0.705322</td>\n",
" <td>-0.404841</td>\n",
" <td>0.617994</td>\n",
" <td>-0.043119</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4425</th>\n",
" <td>0.660509</td>\n",
" <td>-0.727947</td>\n",
" <td>-0.128896</td>\n",
" <td>-1.115959</td>\n",
" <td>-1.099996</td>\n",
" <td>-1.045343</td>\n",
" <td>-1.106142</td>\n",
" <td>-1.191467</td>\n",
" <td>0.660385</td>\n",
" <td>-1.175258</td>\n",
" <td>2.181309</td>\n",
" <td>-0.002407</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1283</th>\n",
" <td>-1.127609</td>\n",
" <td>1.126414</td>\n",
" <td>1.383380</td>\n",
" <td>-1.137740</td>\n",
" <td>-1.189204</td>\n",
" <td>-1.176958</td>\n",
" <td>-1.217487</td>\n",
" <td>-0.862948</td>\n",
" <td>-1.127521</td>\n",
" <td>-0.441398</td>\n",
" <td>0.457122</td>\n",
" <td>-0.049343</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",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1221</th>\n",
" <td>-0.543224</td>\n",
" <td>1.248474</td>\n",
" <td>-0.606457</td>\n",
" <td>0.214989</td>\n",
" <td>0.349033</td>\n",
" <td>-0.074235</td>\n",
" <td>0.123963</td>\n",
" <td>-0.914614</td>\n",
" <td>-0.542430</td>\n",
" <td>0.112548</td>\n",
" <td>0.091179</td>\n",
" <td>-0.055669</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>-0.942803</td>\n",
" <td>1.365838</td>\n",
" <td>0.428258</td>\n",
" <td>-0.342044</td>\n",
" <td>-0.292301</td>\n",
" <td>-0.480642</td>\n",
" <td>-0.276351</td>\n",
" <td>-0.898940</td>\n",
" <td>-0.942278</td>\n",
" <td>-0.270037</td>\n",
" <td>0.079071</td>\n",
" <td>-0.075676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5747</th>\n",
" <td>0.645525</td>\n",
" <td>-0.681001</td>\n",
" <td>1.542567</td>\n",
" <td>-0.496364</td>\n",
" <td>-0.617790</td>\n",
" <td>-0.533110</td>\n",
" <td>-0.610388</td>\n",
" <td>0.865775</td>\n",
" <td>0.645436</td>\n",
" <td>0.169649</td>\n",
" <td>-0.519760</td>\n",
" <td>0.000376</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16224</th>\n",
" <td>-0.882866</td>\n",
" <td>1.107636</td>\n",
" <td>0.587445</td>\n",
" <td>0.223331</td>\n",
" <td>0.095875</td>\n",
" <td>0.285928</td>\n",
" <td>0.118661</td>\n",
" <td>-0.215726</td>\n",
" <td>-0.882557</td>\n",
" <td>0.136098</td>\n",
" <td>-0.436232</td>\n",
" <td>0.013463</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8967</th>\n",
" <td>0.580594</td>\n",
" <td>-0.760809</td>\n",
" <td>0.667039</td>\n",
" <td>-0.508413</td>\n",
" <td>-0.670833</td>\n",
" <td>-0.598918</td>\n",
" <td>-0.636899</td>\n",
" <td>0.829994</td>\n",
" <td>0.580356</td>\n",
" <td>0.223591</td>\n",
" <td>-0.690021</td>\n",
" <td>-0.014973</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 12 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"16415 -0.847903 1.060690 1.065006 -1.003811 -1.068653 \n",
"1279 -1.037703 1.046606 -0.526863 -0.292922 -0.292301 \n",
"7741 0.705462 -0.784282 0.507852 0.056499 0.399665 \n",
"4425 0.660509 -0.727947 -0.128896 -1.115959 -1.099996 \n",
"1283 -1.127609 1.126414 1.383380 -1.137740 -1.189204 \n",
"... ... ... ... ... ... \n",
"1221 -0.543224 1.248474 -0.606457 0.214989 0.349033 \n",
"12640 -0.942803 1.365838 0.428258 -0.342044 -0.292301 \n",
"5747 0.645525 -0.681001 1.542567 -0.496364 -0.617790 \n",
"16224 -0.882866 1.107636 0.587445 0.223331 0.095875 \n",
"8967 0.580594 -0.760809 0.667039 -0.508413 -0.670833 \n",
"\n",
" population households median_income identifier rooms_per_house \\\n",
"16415 -1.039117 -1.076980 -0.369087 -0.847609 -0.179382 \n",
"1279 -0.406831 -0.475183 0.309799 -1.037612 0.365122 \n",
"7741 0.148977 0.304237 -0.571951 0.705322 -0.404841 \n",
"4425 -1.045343 -1.106142 -1.191467 0.660385 -1.175258 \n",
"1283 -1.176958 -1.217487 -0.862948 -1.127521 -0.441398 \n",
"... ... ... ... ... ... \n",
"1221 -0.074235 0.123963 -0.914614 -0.542430 0.112548 \n",
"12640 -0.480642 -0.276351 -0.898940 -0.942278 -0.270037 \n",
"5747 -0.533110 -0.610388 0.865775 0.645436 0.169649 \n",
"16224 0.285928 0.118661 -0.215726 -0.882557 0.136098 \n",
"8967 -0.598918 -0.636899 0.829994 0.580356 0.223591 \n",
"\n",
" bedrooms_ratio people_per_house \n",
"16415 -0.210670 -0.028453 \n",
"1279 -0.096095 -0.003756 \n",
"7741 0.617994 -0.043119 \n",
"4425 2.181309 -0.002407 \n",
"1283 0.457122 -0.049343 \n",
"... ... ... \n",
"1221 0.091179 -0.055669 \n",
"12640 0.079071 -0.075676 \n",
"5747 -0.519760 0.000376 \n",
"16224 -0.436232 0.013463 \n",
"8967 -0.690021 -0.014973 \n",
"\n",
"[16512 rows x 12 columns]"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"css = CustomStandardScaler()\n",
"css.fit_transform(train_features_numeric)"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "858ceaf2-bad3-40c1-9c48-834b965e4cae",
"metadata": {},
"outputs": [],
"source": [
"#pipeline\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 106,
"id": "1fb42846-aa17-47e1-bf00-60256bb30058",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.pipeline import Pipeline,make_pipeline"
]
},
{
"cell_type": "code",
"execution_count": 107,
"id": "2eacf7d2-eb58-4c1d-a181-4dfe03c1c8d6",
"metadata": {},
"outputs": [],
"source": [
"numerical_features_pipeline = Pipeline([\n",
" (\"medianImputer\", SimpleImputer(strategy=\"median\")),\n",
" (\"minMaxScaler\", MinMaxScaler())\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "3bc55444-d30a-4fb1-b4f0-265a3b41efa5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-4 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-4 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-4 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-4 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-4 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-4 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-4 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-4 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-4 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-4 div.sk-toggleable__content {\n",
" display: none;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" display: block;\n",
" width: 100%;\n",
" overflow: visible;\n",
"}\n",
"\n",
"#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-4 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-4 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-4 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-4 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-4 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-4 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-4 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".estimator-table summary {\n",
" padding: .5rem;\n",
" font-family: monospace;\n",
" cursor: pointer;\n",
"}\n",
"\n",
".estimator-table details[open] {\n",
" padding-left: 0.1rem;\n",
" padding-right: 0.1rem;\n",
" padding-bottom: 0.3rem;\n",
"}\n",
"\n",
".estimator-table .parameters-table {\n",
" margin-left: auto !important;\n",
" margin-right: auto !important;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(odd) {\n",
" background-color: #fff;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(even) {\n",
" background-color: #f6f6f6;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:hover {\n",
" background-color: #e0e0e0;\n",
"}\n",
"\n",
".estimator-table table td {\n",
" border: 1px solid rgba(106, 105, 104, 0.232);\n",
"}\n",
"\n",
".user-set td {\n",
" color:rgb(255, 94, 0);\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td.value pre {\n",
" color:rgb(255, 94, 0) !important;\n",
" background-color: transparent !important;\n",
"}\n",
"\n",
".default td {\n",
" color: black;\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td i,\n",
".default td i {\n",
" color: black;\n",
"}\n",
"\n",
".copy-paste-icon {\n",
" background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
" background-repeat: no-repeat;\n",
" background-size: 14px 14px;\n",
" background-position: 0;\n",
" display: inline-block;\n",
" width: 14px;\n",
" height: 14px;\n",
" cursor: pointer;\n",
"}\n",
"</style><body><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;simpleimputer&#x27;, SimpleImputer(strategy=&#x27;median&#x27;)),\n",
" (&#x27;minmaxscaler&#x27;, MinMaxScaler())])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-8\" type=\"checkbox\" ><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label sk-toggleable__label-arrow\"><div><div>Pipeline</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></div></label><div class=\"sk-toggleable__content \" data-param-prefix=\"\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('steps',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">steps&nbsp;</td>\n",
" <td class=\"value\">[(&#x27;simpleimputer&#x27;, ...), (&#x27;minmaxscaler&#x27;, ...)]</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transform_input',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transform_input&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('memory',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">memory&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-9\" type=\"checkbox\" ><label for=\"sk-estimator-id-9\" class=\"sk-toggleable__label sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content \" data-param-prefix=\"simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-10\" type=\"checkbox\" ><label for=\"sk-estimator-id-10\" class=\"sk-toggleable__label sk-toggleable__label-arrow\"><div><div>MinMaxScaler</div></div><div><a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.MinMaxScaler.html\">?<span>Documentation for MinMaxScaler</span></a></div></label><div class=\"sk-toggleable__content \" data-param-prefix=\"minmaxscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_range',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_range&nbsp;</td>\n",
" <td class=\"value\">(0, ...)</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('clip',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">clip&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
" // Get the parameter prefix from the closest toggleable content\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
"\n",
" const originalStyle = element.style;\n",
" const computedStyle = window.getComputedStyle(element);\n",
" const originalWidth = computedStyle.width;\n",
" const originalHTML = element.innerHTML.replace('Copied!', '');\n",
"\n",
" navigator.clipboard.writeText(fullParamName)\n",
" .then(() => {\n",
" element.style.width = originalWidth;\n",
" element.style.color = 'green';\n",
" element.innerHTML = \"Copied!\";\n",
"\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" })\n",
" .catch(err => {\n",
" console.error('Failed to copy:', err);\n",
" element.style.color = 'red';\n",
" element.innerHTML = \"Failed!\";\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" });\n",
" return false;\n",
"}\n",
"\n",
"document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
"\n",
" element.setAttribute('title', fullParamName);\n",
"});\n",
"</script></body>"
],
"text/plain": [
"Pipeline(steps=[('simpleimputer', SimpleImputer(strategy='median')),\n",
" ('minmaxscaler', MinMaxScaler())])"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"make_pipeline(SimpleImputer(strategy=\"median\"),\n",
" MinMaxScaler())"
]
},
{
"cell_type": "code",
"execution_count": 109,
"id": "9ca8bdd6-c206-4e23-ab5e-e86dc9708bea",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.30776892, 0.5674814 , 0.80392157, ..., 0.03154328, 0.05825613,\n",
" 0.00165807],\n",
" [0.26992032, 0.5642933 , 0.41176471, ..., 0.04101175, 0.06097767,\n",
" 0.00187469],\n",
" [0.61752988, 0.1498406 , 0.66666667, ..., 0.02762273, 0.07793969,\n",
" 0.00152942],\n",
" ...,\n",
" [0.60557769, 0.17321998, 0.92156863, ..., 0.03761264, 0.05091421,\n",
" 0.00191094],\n",
" [0.30079681, 0.5781084 , 0.68627451, ..., 0.03702921, 0.05289827,\n",
" 0.00202573],\n",
" [0.59262948, 0.15515409, 0.70588235, ..., 0.03855065, 0.04686993,\n",
" 0.0017763 ]], shape=(16512, 12))"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numerical_features_pipeline.fit_transform(train_features_numeric)"
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "1622d313-11af-4dc9-aa7a-1d710752c227",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.compose import ColumnTransformer"
]
},
{
"cell_type": "code",
"execution_count": 111,
"id": "255387eb-6576-43fa-a653-9a506823191a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['longitude', 'latitude', 'housing_median_age', 'total_rooms',\n",
" 'total_bedrooms', 'population', 'households', 'median_income',\n",
" 'ocean_proximity', 'identifier', 'rooms_per_house', 'bedrooms_ratio',\n",
" 'people_per_house'],\n",
" dtype='object')"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_features.columns"
]
},
{
"cell_type": "code",
"execution_count": 112,
"id": "940ba306-9fe9-4f5e-9ad6-a54d2aa495c5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['longitude',\n",
" 'latitude',\n",
" 'housing_median_age',\n",
" 'total_rooms',\n",
" 'total_bedrooms',\n",
" 'population',\n",
" 'households',\n",
" 'median_income',\n",
" 'identifier',\n",
" 'rooms_per_house',\n",
" 'bedrooms_ratio',\n",
" 'people_per_house']"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numerical_features = list(train_features.columns)\n",
"numerical_features.remove(\"ocean_proximity\")\n",
"numerical_features"
]
},
{
"cell_type": "code",
"execution_count": 113,
"id": "14a63bb8-8ccd-4277-be13-95ae6bad7f11",
"metadata": {},
"outputs": [],
"source": [
"categorical_features = [\"ocean_proximity\"]"
]
},
{
"cell_type": "code",
"execution_count": 114,
"id": "d256da31-0f14-4f9f-a4fc-3a1ea079e2f3",
"metadata": {},
"outputs": [],
"source": [
"numerical_features_pipeline = Pipeline([\n",
" (\"medianImputer\", SimpleImputer(strategy=\"median\")),\n",
" (\"minMaxScaler\", MinMaxScaler())\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 115,
"id": "a39ad0de-780c-4604-827e-4f41d44d4d67",
"metadata": {},
"outputs": [],
"source": [
"categorical_features_pipeline = Pipeline([(\"mfImputer\",SimpleImputer(strategy=\"most_frequent\" )),(\"ohe\",OneHotEncoder())])"
]
},
{
"cell_type": "code",
"execution_count": 116,
"id": "4a0c6e5e-70d2-47a9-800f-43626b345fba",
"metadata": {},
"outputs": [],
"source": [
"total_transfromation = ColumnTransformer([(\"numerical\",numerical_features_pipeline,numerical_features),\n",
" (\"categorical\",categorical_features_pipeline,categorical_features)])"
]
},
{
"cell_type": "code",
"execution_count": 117,
"id": "18f7e583-50ec-4292-bdda-e0cffafb4f55",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.30776892, 0.5674814 , 0.80392157, ..., 0. , 0. ,\n",
" 0. ],\n",
" [0.26992032, 0.5642933 , 0.41176471, ..., 0. , 0. ,\n",
" 0. ],\n",
" [0.61752988, 0.1498406 , 0.66666667, ..., 0. , 0. ,\n",
" 0. ],\n",
" ...,\n",
" [0.60557769, 0.17321998, 0.92156863, ..., 0. , 0. ,\n",
" 0. ],\n",
" [0.30079681, 0.5781084 , 0.68627451, ..., 0. , 0. ,\n",
" 0. ],\n",
" [0.59262948, 0.15515409, 0.70588235, ..., 0. , 0. ,\n",
" 0. ]], shape=(16512, 17))"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total_transfromation.fit_transform(train_features)"
]
},
{
"cell_type": "code",
"execution_count": 118,
"id": "16411b8c-aa48-4d1a-a966-3d319accd33d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['numerical__longitude', 'numerical__latitude',\n",
" 'numerical__housing_median_age', 'numerical__total_rooms',\n",
" 'numerical__total_bedrooms', 'numerical__population',\n",
" 'numerical__households', 'numerical__median_income',\n",
" 'numerical__identifier', 'numerical__rooms_per_house',\n",
" 'numerical__bedrooms_ratio', 'numerical__people_per_house',\n",
" 'categorical__ocean_proximity_<1H OCEAN',\n",
" 'categorical__ocean_proximity_INLAND',\n",
" 'categorical__ocean_proximity_ISLAND',\n",
" 'categorical__ocean_proximity_NEAR BAY',\n",
" 'categorical__ocean_proximity_NEAR OCEAN'], dtype=object)"
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total_transfromation.get_feature_names_out()\n",
"#\"drop\",\"passthough\""
]
},
{
"cell_type": "code",
"execution_count": 119,
"id": "9ac27757-0b78-47a3-838e-5b47bd9a1cfa",
"metadata": {},
"outputs": [],
"source": [
"#!pip uinstall scikit-learn\n",
"#!pip install scikit-learn==1.2.0"
]
},
{
"cell_type": "code",
"execution_count": 120,
"id": "a3e95b20-5fe1-47fe-9819-3fbd3ab096a6",
"metadata": {},
"outputs": [],
"source": [
"#all of the transfromations "
]
},
{
"cell_type": "code",
"execution_count": 121,
"id": "d926427c-e499-4e79-b72b-abe26e4eb2ee",
"metadata": {},
"outputs": [],
"source": [
"train_data,test_data =train_test_split(df,test_size=0.2,stratify=df[\"median_income_categories\"],random_state=40)"
]
},
{
"cell_type": "code",
"execution_count": 122,
"id": "56d2d19a-0796-4a97-a087-0138aca27561",
"metadata": {},
"outputs": [],
"source": [
"train_data = train_data.drop(columns=[\"median_income_categories\"])\n",
"test_data = test_data.drop(columns=[\"median_income_categories\"])\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 123,
"id": "d4c2f649-ce1c-4a5d-a50b-5b0c2617eae4",
"metadata": {},
"outputs": [],
"source": [
"train_features= train_data.drop(columns=\"median_house_value\")\n",
"train_target= train_data[\"median_house_value\"]\n",
"test_features = test_data.drop(columns=\"median_house_value\")\n",
"test_target=test_data[\"median_house_value\"]\n",
"train_features = train_features.drop(columns=\"identifier\")\n",
"test_features = test_features.drop(columns=\"identifier\")"
]
},
{
"cell_type": "code",
"execution_count": 124,
"id": "2f60e541-d2a8-48a9-b68e-c41b9e056c62",
"metadata": {},
"outputs": [
{
"data": {
"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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>ocean_proximity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16415</th>\n",
" <td>-121.26</td>\n",
" <td>37.88</td>\n",
" <td>42.0</td>\n",
" <td>465.0</td>\n",
" <td>93.0</td>\n",
" <td>256.0</td>\n",
" <td>93.0</td>\n",
" <td>3.1719</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1279</th>\n",
" <td>-121.64</td>\n",
" <td>37.85</td>\n",
" <td>22.0</td>\n",
" <td>1999.0</td>\n",
" <td>415.0</td>\n",
" <td>967.0</td>\n",
" <td>320.0</td>\n",
" <td>4.4583</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7741</th>\n",
" <td>-118.15</td>\n",
" <td>33.95</td>\n",
" <td>35.0</td>\n",
" <td>2753.0</td>\n",
" <td>702.0</td>\n",
" <td>1592.0</td>\n",
" <td>614.0</td>\n",
" <td>2.7875</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4425</th>\n",
" <td>-118.24</td>\n",
" <td>34.07</td>\n",
" <td>27.0</td>\n",
" <td>223.0</td>\n",
" <td>80.0</td>\n",
" <td>249.0</td>\n",
" <td>82.0</td>\n",
" <td>1.6136</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1283</th>\n",
" <td>-121.82</td>\n",
" <td>38.02</td>\n",
" <td>46.0</td>\n",
" <td>176.0</td>\n",
" <td>43.0</td>\n",
" <td>101.0</td>\n",
" <td>40.0</td>\n",
" <td>2.2361</td>\n",
" <td>INLAND</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",
" </tr>\n",
" <tr>\n",
" <th>1221</th>\n",
" <td>-120.65</td>\n",
" <td>38.28</td>\n",
" <td>21.0</td>\n",
" <td>3095.0</td>\n",
" <td>681.0</td>\n",
" <td>1341.0</td>\n",
" <td>546.0</td>\n",
" <td>2.1382</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>-121.45</td>\n",
" <td>38.53</td>\n",
" <td>34.0</td>\n",
" <td>1893.0</td>\n",
" <td>415.0</td>\n",
" <td>884.0</td>\n",
" <td>395.0</td>\n",
" <td>2.1679</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5747</th>\n",
" <td>-118.27</td>\n",
" <td>34.17</td>\n",
" <td>48.0</td>\n",
" <td>1560.0</td>\n",
" <td>280.0</td>\n",
" <td>825.0</td>\n",
" <td>269.0</td>\n",
" <td>5.5118</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16224</th>\n",
" <td>-121.33</td>\n",
" <td>37.98</td>\n",
" <td>36.0</td>\n",
" <td>3113.0</td>\n",
" <td>576.0</td>\n",
" <td>1746.0</td>\n",
" <td>544.0</td>\n",
" <td>3.4625</td>\n",
" <td>INLAND</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8967</th>\n",
" <td>-118.40</td>\n",
" <td>34.00</td>\n",
" <td>37.0</td>\n",
" <td>1534.0</td>\n",
" <td>258.0</td>\n",
" <td>751.0</td>\n",
" <td>259.0</td>\n",
" <td>5.4440</td>\n",
" <td>&lt;1H OCEAN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16512 rows × 9 columns</p>\n",
"</div>"
],
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"16415 -121.26 37.88 42.0 465.0 93.0 \n",
"1279 -121.64 37.85 22.0 1999.0 415.0 \n",
"7741 -118.15 33.95 35.0 2753.0 702.0 \n",
"4425 -118.24 34.07 27.0 223.0 80.0 \n",
"1283 -121.82 38.02 46.0 176.0 43.0 \n",
"... ... ... ... ... ... \n",
"1221 -120.65 38.28 21.0 3095.0 681.0 \n",
"12640 -121.45 38.53 34.0 1893.0 415.0 \n",
"5747 -118.27 34.17 48.0 1560.0 280.0 \n",
"16224 -121.33 37.98 36.0 3113.0 576.0 \n",
"8967 -118.40 34.00 37.0 1534.0 258.0 \n",
"\n",
" population households median_income ocean_proximity \n",
"16415 256.0 93.0 3.1719 INLAND \n",
"1279 967.0 320.0 4.4583 INLAND \n",
"7741 1592.0 614.0 2.7875 <1H OCEAN \n",
"4425 249.0 82.0 1.6136 <1H OCEAN \n",
"1283 101.0 40.0 2.2361 INLAND \n",
"... ... ... ... ... \n",
"1221 1341.0 546.0 2.1382 INLAND \n",
"12640 884.0 395.0 2.1679 INLAND \n",
"5747 825.0 269.0 5.5118 <1H OCEAN \n",
"16224 1746.0 544.0 3.4625 INLAND \n",
"8967 751.0 259.0 5.4440 <1H OCEAN \n",
"\n",
"[16512 rows x 9 columns]"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_features"
]
},
{
"cell_type": "code",
"execution_count": 125,
"id": "e68c1108-b4b4-4036-8a50-f95fc01d3e1c",
"metadata": {},
"outputs": [],
"source": [
"heavy_tail_pipeline = make_pipeline(\n",
" SimpleImputer(strategy=\"median\"),\n",
" FunctionTransformer(np.log,feature_names_out=\"one-to-one\"),\n",
" StandardScaler()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 126,
"id": "bfa59e21-9fe5-4c64-812c-77e3c0c1c8c4",
"metadata": {},
"outputs": [],
"source": [
"categorical_features_pipeline = Pipeline([(\"mfImputer\",SimpleImputer(strategy=\"most_frequent\" )),(\"ohe\",OneHotEncoder())])"
]
},
{
"cell_type": "code",
"execution_count": 127,
"id": "6df3b712-7c84-47ba-a3a3-96c30b7ab49a",
"metadata": {},
"outputs": [],
"source": [
"housing_median_age_rbf_transformer =FunctionTransformer(rbf_kernel,feature_names_out=\"one-to-one\",kw_args={\"Y\":[[35.0]],\"gamma\":0.1})"
]
},
{
"cell_type": "code",
"execution_count": 128,
"id": "c92ffe98-87db-4516-8db4-6da655f450a2",
"metadata": {},
"outputs": [],
"source": [
"default_numerical_pipeline = make_pipeline(SimpleImputer(strategy=\"median\"),\n",
" StandardScaler())"
]
},
{
"cell_type": "code",
"execution_count": 129,
"id": "f83125b5-ceb3-4568-ae7a-f4b9622be394",
"metadata": {},
"outputs": [],
"source": [
"def ratio_of_columns(X):\n",
" return X[:,[0]] / X[:,[1]]\n",
"\n",
"def ratio_of_columns_name(function_transformer,features_names_in):\n",
" return[\"ratio\"]\n",
"\n",
"def ratio_of_columns_pipeline():\n",
" return make_pipeline(\n",
" SimpleImputer(strategy=\"median\"),\n",
" FunctionTransformer(ratio_of_columns,feature_names_out=ratio_of_columns_name),\n",
" StandardScaler()\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 130,
"id": "c99b8b38-a4b5-4479-bcb9-8606f161965e",
"metadata": {},
"outputs": [],
"source": [
"all_transformations = ColumnTransformer([(\"bedrooms\",ratio_of_columns_pipeline(),[\"total_bedrooms\",\"total_rooms\"]),\n",
" (\"rooms_per_house\",ratio_of_columns_pipeline(),[\"total_rooms\",\"households\"]),\n",
" (\"people_per_house\",ratio_of_columns_pipeline(),[\"population\",\"households\"]),\n",
" (\"log\",heavy_tail_pipeline,[\"total_bedrooms\",\"total_rooms\",\"population\",\"households\",\"median_income\"]),\n",
" (\"rbf\",housing_median_age_rbf_transformer,[\"housing_median_age\"]),\n",
" (\"cat\",categorical_features_pipeline,[\"ocean_proximity\"]),\n",
" ],remainder=default_numerical_pipeline)"
]
},
{
"cell_type": "code",
"execution_count": 131,
"id": "dd5b6f0b-03b0-423d-9657-8aec3e20ab10",
"metadata": {},
"outputs": [],
"source": [
"train_features_transformed=all_transformations.fit_transform(train_features)"
]
},
{
"cell_type": "code",
"execution_count": 132,
"id": "ded16497-d6cb-46a3-acd7-b2bdbbfe95f9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(16512, 16)"
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_features_transformed.shape"
]
},
{
"cell_type": "code",
"execution_count": 133,
"id": "2388325a-5105-4643-b411-ba300f54957c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['bedrooms__ratio', 'rooms_per_house__ratio',\n",
" 'people_per_house__ratio', 'log__total_bedrooms',\n",
" 'log__total_rooms', 'log__population', 'log__households',\n",
" 'log__median_income', 'rbf__housing_median_age',\n",
" 'cat__ocean_proximity_<1H OCEAN', 'cat__ocean_proximity_INLAND',\n",
" 'cat__ocean_proximity_ISLAND', 'cat__ocean_proximity_NEAR BAY',\n",
" 'cat__ocean_proximity_NEAR OCEAN', 'remainder__longitude',\n",
" 'remainder__latitude'], dtype=object)"
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_transformations.get_feature_names_out()"
]
},
{
"cell_type": "code",
"execution_count": 134,
"id": "90113f60-1c2d-4a1e-8417-4342e66344fa",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-2.10670105e-01, -1.79381511e-01, -2.84533255e-02, ...,\n",
" 0.00000000e+00, -8.47903024e-01, 1.06069020e+00],\n",
" [-9.60951107e-02, 3.65121948e-01, -3.75641043e-03, ...,\n",
" 0.00000000e+00, -1.03770326e+00, 1.04660645e+00],\n",
" [ 6.17994355e-01, -4.04841051e-01, -4.31193773e-02, ...,\n",
" 0.00000000e+00, 7.05462097e-01, -7.84281723e-01],\n",
" ...,\n",
" [-5.19759731e-01, 1.69649412e-01, 3.75800155e-04, ...,\n",
" 0.00000000e+00, 6.45525179e-01, -6.81000852e-01],\n",
" [-4.36232057e-01, 1.36098158e-01, 1.34628996e-02, ...,\n",
" 0.00000000e+00, -8.82866226e-01, 1.10763605e+00],\n",
" [-6.90020966e-01, 2.23591409e-01, -1.49734229e-02, ...,\n",
" 0.00000000e+00, 5.80593518e-01, -7.60808797e-01]],\n",
" shape=(16512, 16))"
]
},
"execution_count": 134,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_features_transformed"
]
},
{
"cell_type": "code",
"execution_count": 135,
"id": "b8cd1cea-b0e4-4b12-be24-dcd81a7022d5",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "code",
"execution_count": 136,
"id": "ca912536-0fe2-419f-9a53-d396a067d611",
"metadata": {},
"outputs": [],
"source": [
"linear_regression_pipeline= make_pipeline(all_transformations,LinearRegression())"
]
},
{
"cell_type": "code",
"execution_count": 137,
"id": "5b57a494-8526-40ef-b1a5-609f9c5d7777",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-5 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-5 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-5 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-5 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-5 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-5 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-5 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-5 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-5 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-5 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-5 div.sk-toggleable__content {\n",
" display: none;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" display: block;\n",
" width: 100%;\n",
" overflow: visible;\n",
"}\n",
"\n",
"#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-5 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-5 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-5 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-5 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-5 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-5 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-5 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-5 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-5 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-5 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".estimator-table summary {\n",
" padding: .5rem;\n",
" font-family: monospace;\n",
" cursor: pointer;\n",
"}\n",
"\n",
".estimator-table details[open] {\n",
" padding-left: 0.1rem;\n",
" padding-right: 0.1rem;\n",
" padding-bottom: 0.3rem;\n",
"}\n",
"\n",
".estimator-table .parameters-table {\n",
" margin-left: auto !important;\n",
" margin-right: auto !important;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(odd) {\n",
" background-color: #fff;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(even) {\n",
" background-color: #f6f6f6;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:hover {\n",
" background-color: #e0e0e0;\n",
"}\n",
"\n",
".estimator-table table td {\n",
" border: 1px solid rgba(106, 105, 104, 0.232);\n",
"}\n",
"\n",
".user-set td {\n",
" color:rgb(255, 94, 0);\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td.value pre {\n",
" color:rgb(255, 94, 0) !important;\n",
" background-color: transparent !important;\n",
"}\n",
"\n",
".default td {\n",
" color: black;\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td i,\n",
".default td i {\n",
" color: black;\n",
"}\n",
"\n",
".copy-paste-icon {\n",
" background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
" background-repeat: no-repeat;\n",
" background-size: 14px 14px;\n",
" background-position: 0;\n",
" display: inline-block;\n",
" width: 14px;\n",
" height: 14px;\n",
" cursor: pointer;\n",
"}\n",
"</style><body><div id=\"sk-container-id-5\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;columntransformer&#x27;,\n",
" ColumnTransformer(remainder=Pipeline(steps=[(&#x27;simpleimputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;median&#x27;)),\n",
" (&#x27;standardscaler&#x27;,\n",
" StandardScaler())]),\n",
" transformers=[(&#x27;bedrooms&#x27;,\n",
" Pipeline(steps=[(&#x27;simpleimputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;median&#x27;)),\n",
" (&#x27;functiontransformer&#x27;,\n",
" FunctionTransformer(feature_names_out=&lt;function ratio_of_columns_...\n",
" &#x27;median_income&#x27;]),\n",
" (&#x27;rbf&#x27;,\n",
" FunctionTransformer(feature_names_out=&#x27;one-to-one&#x27;,\n",
" func=&lt;function rbf_kernel at 0x0000020EDECC1300&gt;,\n",
" kw_args={&#x27;Y&#x27;: [[35.0]],\n",
" &#x27;gamma&#x27;: 0.1}),\n",
" [&#x27;housing_median_age&#x27;]),\n",
" (&#x27;cat&#x27;,\n",
" Pipeline(steps=[(&#x27;mfImputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;most_frequent&#x27;)),\n",
" (&#x27;ohe&#x27;,\n",
" OneHotEncoder())]),\n",
" [&#x27;ocean_proximity&#x27;])])),\n",
" (&#x27;linearregression&#x27;, LinearRegression())])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-11\" type=\"checkbox\" ><label for=\"sk-estimator-id-11\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>Pipeline</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('steps',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">steps&nbsp;</td>\n",
" <td class=\"value\">[(&#x27;columntransformer&#x27;, ...), (&#x27;linearregression&#x27;, ...)]</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transform_input',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transform_input&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('memory',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">memory&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-12\" type=\"checkbox\" ><label for=\"sk-estimator-id-12\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>columntransformer: ColumnTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for columntransformer: ColumnTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transformers',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transformers&nbsp;</td>\n",
" <td class=\"value\">[(&#x27;bedrooms&#x27;, ...), (&#x27;rooms_per_house&#x27;, ...), ...]</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('remainder',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">remainder&nbsp;</td>\n",
" <td class=\"value\">Pipeline(step...ardScaler())])</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('sparse_threshold',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">sparse_threshold&nbsp;</td>\n",
" <td class=\"value\">0.3</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('n_jobs',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">n_jobs&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transformer_weights',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transformer_weights&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose_feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose_feature_names_out&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('force_int_remainder_cols',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">force_int_remainder_cols&nbsp;</td>\n",
" <td class=\"value\">&#x27;deprecated&#x27;</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-13\" type=\"checkbox\" ><label for=\"sk-estimator-id-13\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>bedrooms</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__bedrooms__\"><pre>[&#x27;total_bedrooms&#x27;, &#x27;total_rooms&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-14\" type=\"checkbox\" ><label for=\"sk-estimator-id-14\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__bedrooms__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-15\" type=\"checkbox\" ><label for=\"sk-estimator-id-15\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__bedrooms__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-16\" type=\"checkbox\" ><label for=\"sk-estimator-id-16\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__bedrooms__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-17\" type=\"checkbox\" ><label for=\"sk-estimator-id-17\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rooms_per_house</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rooms_per_house__\"><pre>[&#x27;total_rooms&#x27;, &#x27;households&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-18\" type=\"checkbox\" ><label for=\"sk-estimator-id-18\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rooms_per_house__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-19\" type=\"checkbox\" ><label for=\"sk-estimator-id-19\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rooms_per_house__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-20\" type=\"checkbox\" ><label for=\"sk-estimator-id-20\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rooms_per_house__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-21\" type=\"checkbox\" ><label for=\"sk-estimator-id-21\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>people_per_house</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__people_per_house__\"><pre>[&#x27;population&#x27;, &#x27;households&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-22\" type=\"checkbox\" ><label for=\"sk-estimator-id-22\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__people_per_house__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-23\" type=\"checkbox\" ><label for=\"sk-estimator-id-23\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__people_per_house__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-24\" type=\"checkbox\" ><label for=\"sk-estimator-id-24\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__people_per_house__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-25\" type=\"checkbox\" ><label for=\"sk-estimator-id-25\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>log</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__log__\"><pre>[&#x27;total_bedrooms&#x27;, &#x27;total_rooms&#x27;, &#x27;population&#x27;, &#x27;households&#x27;, &#x27;median_income&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-26\" type=\"checkbox\" ><label for=\"sk-estimator-id-26\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__log__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-27\" type=\"checkbox\" ><label for=\"sk-estimator-id-27\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>log</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__log__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;ufunc &#x27;log&#x27;&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&#x27;one-to-one&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-28\" type=\"checkbox\" ><label for=\"sk-estimator-id-28\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__log__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-29\" type=\"checkbox\" ><label for=\"sk-estimator-id-29\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rbf</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rbf__\"><pre>[&#x27;housing_median_age&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-30\" type=\"checkbox\" ><label for=\"sk-estimator-id-30\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rbf_kernel</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rbf__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rbf...0020EDECC1300&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&#x27;one-to-one&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">{&#x27;Y&#x27;: [[35.0]], &#x27;gamma&#x27;: 0.1}</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-31\" type=\"checkbox\" ><label for=\"sk-estimator-id-31\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>cat</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__cat__\"><pre>[&#x27;ocean_proximity&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-32\" type=\"checkbox\" ><label for=\"sk-estimator-id-32\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__cat__mfImputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;most_frequent&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-33\" type=\"checkbox\" ><label for=\"sk-estimator-id-33\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>OneHotEncoder</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__cat__ohe__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('categories',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">categories&nbsp;</td>\n",
" <td class=\"value\">&#x27;auto&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('drop',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">drop&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('sparse_output',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">sparse_output&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('dtype',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">dtype&nbsp;</td>\n",
" <td class=\"value\">&lt;class &#x27;numpy.float64&#x27;&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('handle_unknown',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">handle_unknown&nbsp;</td>\n",
" <td class=\"value\">&#x27;error&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_frequency',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_frequency&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_categories',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_categories&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_name_combiner',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_name_combiner&nbsp;</td>\n",
" <td class=\"value\">&#x27;concat&#x27;</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-34\" type=\"checkbox\" ><label for=\"sk-estimator-id-34\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>remainder</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__remainder__\"><pre>[&#x27;longitude&#x27;, &#x27;latitude&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-35\" type=\"checkbox\" ><label for=\"sk-estimator-id-35\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__remainder__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-36\" type=\"checkbox\" ><label for=\"sk-estimator-id-36\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__remainder__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-37\" type=\"checkbox\" ><label for=\"sk-estimator-id-37\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"linearregression__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fit_intercept',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fit_intercept&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy_X',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy_X&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('tol',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">tol&nbsp;</td>\n",
" <td class=\"value\">1e-06</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('n_jobs',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">n_jobs&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('positive',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">positive&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
" // Get the parameter prefix from the closest toggleable content\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
"\n",
" const originalStyle = element.style;\n",
" const computedStyle = window.getComputedStyle(element);\n",
" const originalWidth = computedStyle.width;\n",
" const originalHTML = element.innerHTML.replace('Copied!', '');\n",
"\n",
" navigator.clipboard.writeText(fullParamName)\n",
" .then(() => {\n",
" element.style.width = originalWidth;\n",
" element.style.color = 'green';\n",
" element.innerHTML = \"Copied!\";\n",
"\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" })\n",
" .catch(err => {\n",
" console.error('Failed to copy:', err);\n",
" element.style.color = 'red';\n",
" element.innerHTML = \"Failed!\";\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" });\n",
" return false;\n",
"}\n",
"\n",
"document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
"\n",
" element.setAttribute('title', fullParamName);\n",
"});\n",
"</script></body>"
],
"text/plain": [
"Pipeline(steps=[('columntransformer',\n",
" ColumnTransformer(remainder=Pipeline(steps=[('simpleimputer',\n",
" SimpleImputer(strategy='median')),\n",
" ('standardscaler',\n",
" StandardScaler())]),\n",
" transformers=[('bedrooms',\n",
" Pipeline(steps=[('simpleimputer',\n",
" SimpleImputer(strategy='median')),\n",
" ('functiontransformer',\n",
" FunctionTransformer(feature_names_out=<function ratio_of_columns_...\n",
" 'median_income']),\n",
" ('rbf',\n",
" FunctionTransformer(feature_names_out='one-to-one',\n",
" func=<function rbf_kernel at 0x0000020EDECC1300>,\n",
" kw_args={'Y': [[35.0]],\n",
" 'gamma': 0.1}),\n",
" ['housing_median_age']),\n",
" ('cat',\n",
" Pipeline(steps=[('mfImputer',\n",
" SimpleImputer(strategy='most_frequent')),\n",
" ('ohe',\n",
" OneHotEncoder())]),\n",
" ['ocean_proximity'])])),\n",
" ('linearregression', LinearRegression())])"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"linear_regression_pipeline.fit(train_features,train_target)"
]
},
{
"cell_type": "code",
"execution_count": 138,
"id": "9af39050-b4b7-400a-a9b8-d76fe0a49519",
"metadata": {},
"outputs": [],
"source": [
"house_value_prediction = linear_regression_pipeline.predict(train_features)"
]
},
{
"cell_type": "code",
"execution_count": 139,
"id": "84cde9e7-adb7-43b9-80a1-95c70ced91d2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([158300., 253900., 209000., ..., 354700., 84600., 336000.],\n",
" shape=(16512,))"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_target.values"
]
},
{
"cell_type": "code",
"execution_count": 140,
"id": "71b3f93d-3ec5-4ea0-9703-87d138135b41",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([151110.09075875, 201490.43908191, 203196.66863746, ...,\n",
" 277963.22776272, 140863.66957838, 289470.80942827], shape=(16512,))"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"house_value_prediction"
]
},
{
"cell_type": "code",
"execution_count": 141,
"id": "0834ef77-ef54-4417-8702-77c3dfcc3ede",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import mean_absolute_error,mean_squared_error,root_mean_squared_error,r2_score"
]
},
{
"cell_type": "code",
"execution_count": 142,
"id": "90d439f0-6c9f-4df0-9911-a8fb173b1032",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"53721.057075531244"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_absolute_error(train_target.values,house_value_prediction)"
]
},
{
"cell_type": "code",
"execution_count": 143,
"id": "ef1b6980-f0c7-434b-8d8b-74e644f1d20c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5169319861.141138"
]
},
"execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_squared_error(train_target.values,house_value_prediction,)"
]
},
{
"cell_type": "code",
"execution_count": 144,
"id": "2bc388a4-395b-48d6-a011-92e00306a026",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"71897.98231620369"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"root_mean_squared_error(train_target,house_value_prediction)"
]
},
{
"cell_type": "code",
"execution_count": 145,
"id": "f4d2a47c-483a-434c-9920-b7ce13c95637",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.609697114427217"
]
},
"execution_count": 145,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r2_score(train_target,house_value_prediction)"
]
},
{
"cell_type": "code",
"execution_count": 146,
"id": "339af2aa-b1aa-4ce8-8b6b-3e5353be9552",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.tree import DecisionTreeRegressor"
]
},
{
"cell_type": "code",
"execution_count": 147,
"id": "0785ef76-47cc-469b-8d08-37e27a0f70b6",
"metadata": {},
"outputs": [],
"source": [
"dt_regression_pipeline= make_pipeline(all_transformations,DecisionTreeRegressor())"
]
},
{
"cell_type": "code",
"execution_count": 148,
"id": "71c11a4b-89ce-4d01-9bf4-f442b5a0493f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-6 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-6 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-6 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-6 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-6 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-6 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-6 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-6 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-6 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-6 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-6 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-6 div.sk-toggleable__content {\n",
" display: none;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-6 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" display: block;\n",
" width: 100%;\n",
" overflow: visible;\n",
"}\n",
"\n",
"#sk-container-id-6 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-6 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-6 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-6 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-6 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-6 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-6 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-6 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-6 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-6 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-6 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-6 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-6 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-6 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".estimator-table summary {\n",
" padding: .5rem;\n",
" font-family: monospace;\n",
" cursor: pointer;\n",
"}\n",
"\n",
".estimator-table details[open] {\n",
" padding-left: 0.1rem;\n",
" padding-right: 0.1rem;\n",
" padding-bottom: 0.3rem;\n",
"}\n",
"\n",
".estimator-table .parameters-table {\n",
" margin-left: auto !important;\n",
" margin-right: auto !important;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(odd) {\n",
" background-color: #fff;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(even) {\n",
" background-color: #f6f6f6;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:hover {\n",
" background-color: #e0e0e0;\n",
"}\n",
"\n",
".estimator-table table td {\n",
" border: 1px solid rgba(106, 105, 104, 0.232);\n",
"}\n",
"\n",
".user-set td {\n",
" color:rgb(255, 94, 0);\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td.value pre {\n",
" color:rgb(255, 94, 0) !important;\n",
" background-color: transparent !important;\n",
"}\n",
"\n",
".default td {\n",
" color: black;\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td i,\n",
".default td i {\n",
" color: black;\n",
"}\n",
"\n",
".copy-paste-icon {\n",
" background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
" background-repeat: no-repeat;\n",
" background-size: 14px 14px;\n",
" background-position: 0;\n",
" display: inline-block;\n",
" width: 14px;\n",
" height: 14px;\n",
" cursor: pointer;\n",
"}\n",
"</style><body><div id=\"sk-container-id-6\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;columntransformer&#x27;,\n",
" ColumnTransformer(remainder=Pipeline(steps=[(&#x27;simpleimputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;median&#x27;)),\n",
" (&#x27;standardscaler&#x27;,\n",
" StandardScaler())]),\n",
" transformers=[(&#x27;bedrooms&#x27;,\n",
" Pipeline(steps=[(&#x27;simpleimputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;median&#x27;)),\n",
" (&#x27;functiontransformer&#x27;,\n",
" FunctionTransformer(feature_names_out=&lt;function ratio_of_columns_...\n",
" &#x27;median_income&#x27;]),\n",
" (&#x27;rbf&#x27;,\n",
" FunctionTransformer(feature_names_out=&#x27;one-to-one&#x27;,\n",
" func=&lt;function rbf_kernel at 0x0000020EDECC1300&gt;,\n",
" kw_args={&#x27;Y&#x27;: [[35.0]],\n",
" &#x27;gamma&#x27;: 0.1}),\n",
" [&#x27;housing_median_age&#x27;]),\n",
" (&#x27;cat&#x27;,\n",
" Pipeline(steps=[(&#x27;mfImputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;most_frequent&#x27;)),\n",
" (&#x27;ohe&#x27;,\n",
" OneHotEncoder())]),\n",
" [&#x27;ocean_proximity&#x27;])])),\n",
" (&#x27;decisiontreeregressor&#x27;, DecisionTreeRegressor())])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-38\" type=\"checkbox\" ><label for=\"sk-estimator-id-38\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>Pipeline</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('steps',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">steps&nbsp;</td>\n",
" <td class=\"value\">[(&#x27;columntransformer&#x27;, ...), (&#x27;decisiontreeregressor&#x27;, ...)]</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transform_input',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transform_input&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('memory',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">memory&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-39\" type=\"checkbox\" ><label for=\"sk-estimator-id-39\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>columntransformer: ColumnTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for columntransformer: ColumnTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transformers',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transformers&nbsp;</td>\n",
" <td class=\"value\">[(&#x27;bedrooms&#x27;, ...), (&#x27;rooms_per_house&#x27;, ...), ...]</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('remainder',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">remainder&nbsp;</td>\n",
" <td class=\"value\">Pipeline(step...ardScaler())])</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('sparse_threshold',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">sparse_threshold&nbsp;</td>\n",
" <td class=\"value\">0.3</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('n_jobs',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">n_jobs&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transformer_weights',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transformer_weights&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose_feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose_feature_names_out&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('force_int_remainder_cols',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">force_int_remainder_cols&nbsp;</td>\n",
" <td class=\"value\">&#x27;deprecated&#x27;</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-40\" type=\"checkbox\" ><label for=\"sk-estimator-id-40\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>bedrooms</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__bedrooms__\"><pre>[&#x27;total_bedrooms&#x27;, &#x27;total_rooms&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-41\" type=\"checkbox\" ><label for=\"sk-estimator-id-41\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__bedrooms__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-42\" type=\"checkbox\" ><label for=\"sk-estimator-id-42\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__bedrooms__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-43\" type=\"checkbox\" ><label for=\"sk-estimator-id-43\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__bedrooms__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-44\" type=\"checkbox\" ><label for=\"sk-estimator-id-44\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rooms_per_house</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rooms_per_house__\"><pre>[&#x27;total_rooms&#x27;, &#x27;households&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-45\" type=\"checkbox\" ><label for=\"sk-estimator-id-45\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rooms_per_house__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-46\" type=\"checkbox\" ><label for=\"sk-estimator-id-46\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rooms_per_house__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-47\" type=\"checkbox\" ><label for=\"sk-estimator-id-47\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rooms_per_house__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-48\" type=\"checkbox\" ><label for=\"sk-estimator-id-48\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>people_per_house</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__people_per_house__\"><pre>[&#x27;population&#x27;, &#x27;households&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-49\" type=\"checkbox\" ><label for=\"sk-estimator-id-49\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__people_per_house__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-50\" type=\"checkbox\" ><label for=\"sk-estimator-id-50\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__people_per_house__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-51\" type=\"checkbox\" ><label for=\"sk-estimator-id-51\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__people_per_house__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-52\" type=\"checkbox\" ><label for=\"sk-estimator-id-52\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>log</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__log__\"><pre>[&#x27;total_bedrooms&#x27;, &#x27;total_rooms&#x27;, &#x27;population&#x27;, &#x27;households&#x27;, &#x27;median_income&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-53\" type=\"checkbox\" ><label for=\"sk-estimator-id-53\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__log__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-54\" type=\"checkbox\" ><label for=\"sk-estimator-id-54\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>log</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__log__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;ufunc &#x27;log&#x27;&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&#x27;one-to-one&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-55\" type=\"checkbox\" ><label for=\"sk-estimator-id-55\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__log__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-56\" type=\"checkbox\" ><label for=\"sk-estimator-id-56\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rbf</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rbf__\"><pre>[&#x27;housing_median_age&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-57\" type=\"checkbox\" ><label for=\"sk-estimator-id-57\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rbf_kernel</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__rbf__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rbf...0020EDECC1300&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&#x27;one-to-one&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">{&#x27;Y&#x27;: [[35.0]], &#x27;gamma&#x27;: 0.1}</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-58\" type=\"checkbox\" ><label for=\"sk-estimator-id-58\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>cat</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__cat__\"><pre>[&#x27;ocean_proximity&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-59\" type=\"checkbox\" ><label for=\"sk-estimator-id-59\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__cat__mfImputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;most_frequent&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-60\" type=\"checkbox\" ><label for=\"sk-estimator-id-60\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>OneHotEncoder</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__cat__ohe__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('categories',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">categories&nbsp;</td>\n",
" <td class=\"value\">&#x27;auto&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('drop',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">drop&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('sparse_output',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">sparse_output&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('dtype',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">dtype&nbsp;</td>\n",
" <td class=\"value\">&lt;class &#x27;numpy.float64&#x27;&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('handle_unknown',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">handle_unknown&nbsp;</td>\n",
" <td class=\"value\">&#x27;error&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_frequency',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_frequency&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_categories',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_categories&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_name_combiner',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_name_combiner&nbsp;</td>\n",
" <td class=\"value\">&#x27;concat&#x27;</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-61\" type=\"checkbox\" ><label for=\"sk-estimator-id-61\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>remainder</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__remainder__\"><pre>[&#x27;longitude&#x27;, &#x27;latitude&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-62\" type=\"checkbox\" ><label for=\"sk-estimator-id-62\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__remainder__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-63\" type=\"checkbox\" ><label for=\"sk-estimator-id-63\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"columntransformer__remainder__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-64\" type=\"checkbox\" ><label for=\"sk-estimator-id-64\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>DecisionTreeRegressor</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.tree.DecisionTreeRegressor.html\">?<span>Documentation for DecisionTreeRegressor</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"decisiontreeregressor__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('criterion',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">criterion&nbsp;</td>\n",
" <td class=\"value\">&#x27;squared_error&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('splitter',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">splitter&nbsp;</td>\n",
" <td class=\"value\">&#x27;best&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_depth',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_depth&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_samples_split',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_samples_split&nbsp;</td>\n",
" <td class=\"value\">2</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_samples_leaf',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_samples_leaf&nbsp;</td>\n",
" <td class=\"value\">1</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_weight_fraction_leaf',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_weight_fraction_leaf&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_features&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('random_state',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">random_state&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_leaf_nodes',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_leaf_nodes&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_impurity_decrease',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_impurity_decrease&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('ccp_alpha',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">ccp_alpha&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('monotonic_cst',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">monotonic_cst&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
" // Get the parameter prefix from the closest toggleable content\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
"\n",
" const originalStyle = element.style;\n",
" const computedStyle = window.getComputedStyle(element);\n",
" const originalWidth = computedStyle.width;\n",
" const originalHTML = element.innerHTML.replace('Copied!', '');\n",
"\n",
" navigator.clipboard.writeText(fullParamName)\n",
" .then(() => {\n",
" element.style.width = originalWidth;\n",
" element.style.color = 'green';\n",
" element.innerHTML = \"Copied!\";\n",
"\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" })\n",
" .catch(err => {\n",
" console.error('Failed to copy:', err);\n",
" element.style.color = 'red';\n",
" element.innerHTML = \"Failed!\";\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" });\n",
" return false;\n",
"}\n",
"\n",
"document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
"\n",
" element.setAttribute('title', fullParamName);\n",
"});\n",
"</script></body>"
],
"text/plain": [
"Pipeline(steps=[('columntransformer',\n",
" ColumnTransformer(remainder=Pipeline(steps=[('simpleimputer',\n",
" SimpleImputer(strategy='median')),\n",
" ('standardscaler',\n",
" StandardScaler())]),\n",
" transformers=[('bedrooms',\n",
" Pipeline(steps=[('simpleimputer',\n",
" SimpleImputer(strategy='median')),\n",
" ('functiontransformer',\n",
" FunctionTransformer(feature_names_out=<function ratio_of_columns_...\n",
" 'median_income']),\n",
" ('rbf',\n",
" FunctionTransformer(feature_names_out='one-to-one',\n",
" func=<function rbf_kernel at 0x0000020EDECC1300>,\n",
" kw_args={'Y': [[35.0]],\n",
" 'gamma': 0.1}),\n",
" ['housing_median_age']),\n",
" ('cat',\n",
" Pipeline(steps=[('mfImputer',\n",
" SimpleImputer(strategy='most_frequent')),\n",
" ('ohe',\n",
" OneHotEncoder())]),\n",
" ['ocean_proximity'])])),\n",
" ('decisiontreeregressor', DecisionTreeRegressor())])"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dt_regression_pipeline.fit(train_features,train_target)"
]
},
{
"cell_type": "code",
"execution_count": 149,
"id": "e49d57b2-ff13-4dc7-8404-7e49d1b92fc9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 149,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_absolute_error(train_target.values,dt_regression_pipeline.predict(train_features))"
]
},
{
"cell_type": "code",
"execution_count": 150,
"id": "11267ef0-6016-4384-906c-efb95c86a11d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r2_score(train_target.values,dt_regression_pipeline.predict(train_features))"
]
},
{
"cell_type": "code",
"execution_count": 151,
"id": "ea558ff7-a971-4c77-8603-0a431c49a0e2",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import cross_val_score"
]
},
{
"cell_type": "code",
"execution_count": 152,
"id": "2315fd32-7e41-4985-a461-cee52b7e46b0",
"metadata": {},
"outputs": [],
"source": [
"dt_mae = -cross_val_score(dt_regression_pipeline,train_features,train_target,scoring=\"neg_mean_absolute_error\",cv=5)"
]
},
{
"cell_type": "code",
"execution_count": 153,
"id": "afd58135-e3ef-4b49-b50c-198bccad94e6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 5.000000\n",
"mean 46587.924072\n",
"std 692.083707\n",
"min 45887.026642\n",
"25% 45909.547381\n",
"50% 46673.239249\n",
"75% 46989.930345\n",
"max 47479.876741\n",
"dtype: float64"
]
},
"execution_count": 153,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.Series(dt_mae).describe()"
]
},
{
"cell_type": "code",
"execution_count": 154,
"id": "60aa4fb1-2899-4e5e-84f6-68ee1bf4cb77",
"metadata": {},
"outputs": [],
"source": [
" from sklearn.model_selection import GridSearchCV"
]
},
{
"cell_type": "code",
"execution_count": 155,
"id": "d7dc713e-3de4-4a6f-85d6-855680b14b15",
"metadata": {},
"outputs": [],
"source": [
"#method 1 tweaking hiper params "
]
},
{
"cell_type": "code",
"execution_count": 156,
"id": "fc2e70d0-3a27-44d4-bdb0-9f2fda62c01f",
"metadata": {},
"outputs": [],
"source": [
"param_grid = {\"max_depth\":[5,10,15]}"
]
},
{
"cell_type": "code",
"execution_count": 157,
"id": "33c81eb8-0afb-4274-b74d-af4ef6ef795c",
"metadata": {},
"outputs": [],
"source": [
"gs = GridSearchCV(DecisionTreeRegressor(),param_grid,scoring=\"neg_mean_absolute_error\",cv=5) "
]
},
{
"cell_type": "code",
"execution_count": 158,
"id": "e0cef6ce-3b89-4162-aed5-bc9e166356d9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-7 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-7 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-7 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-7 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-7 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-7 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-7 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-7 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-7 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-7 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-7 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-7 div.sk-toggleable__content {\n",
" display: none;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-7 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" display: block;\n",
" width: 100%;\n",
" overflow: visible;\n",
"}\n",
"\n",
"#sk-container-id-7 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-7 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-7 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-7 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-7 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-7 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-7 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-7 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-7 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-7 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-7 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-7 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-7 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-7 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".estimator-table summary {\n",
" padding: .5rem;\n",
" font-family: monospace;\n",
" cursor: pointer;\n",
"}\n",
"\n",
".estimator-table details[open] {\n",
" padding-left: 0.1rem;\n",
" padding-right: 0.1rem;\n",
" padding-bottom: 0.3rem;\n",
"}\n",
"\n",
".estimator-table .parameters-table {\n",
" margin-left: auto !important;\n",
" margin-right: auto !important;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(odd) {\n",
" background-color: #fff;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(even) {\n",
" background-color: #f6f6f6;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:hover {\n",
" background-color: #e0e0e0;\n",
"}\n",
"\n",
".estimator-table table td {\n",
" border: 1px solid rgba(106, 105, 104, 0.232);\n",
"}\n",
"\n",
".user-set td {\n",
" color:rgb(255, 94, 0);\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td.value pre {\n",
" color:rgb(255, 94, 0) !important;\n",
" background-color: transparent !important;\n",
"}\n",
"\n",
".default td {\n",
" color: black;\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td i,\n",
".default td i {\n",
" color: black;\n",
"}\n",
"\n",
".copy-paste-icon {\n",
" background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
" background-repeat: no-repeat;\n",
" background-size: 14px 14px;\n",
" background-position: 0;\n",
" display: inline-block;\n",
" width: 14px;\n",
" height: 14px;\n",
" cursor: pointer;\n",
"}\n",
"</style><body><div id=\"sk-container-id-7\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=5, estimator=DecisionTreeRegressor(),\n",
" param_grid={&#x27;max_depth&#x27;: [5, 10, 15]},\n",
" scoring=&#x27;neg_mean_absolute_error&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-65\" type=\"checkbox\" ><label for=\"sk-estimator-id-65\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>GridSearchCV</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.model_selection.GridSearchCV.html\">?<span>Documentation for GridSearchCV</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('estimator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">estimator&nbsp;</td>\n",
" <td class=\"value\">DecisionTreeRegressor()</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('param_grid',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">param_grid&nbsp;</td>\n",
" <td class=\"value\">{&#x27;max_depth&#x27;: [5, 10, ...]}</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('scoring',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">scoring&nbsp;</td>\n",
" <td class=\"value\">&#x27;neg_mean_absolute_error&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('n_jobs',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">n_jobs&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('refit',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">refit&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('cv',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">cv&nbsp;</td>\n",
" <td class=\"value\">5</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose&nbsp;</td>\n",
" <td class=\"value\">0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('pre_dispatch',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">pre_dispatch&nbsp;</td>\n",
" <td class=\"value\">&#x27;2*n_jobs&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('error_score',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">error_score&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('return_train_score',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">return_train_score&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-66\" type=\"checkbox\" ><label for=\"sk-estimator-id-66\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>best_estimator_: DecisionTreeRegressor</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___\"><pre>DecisionTreeRegressor(max_depth=10)</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-67\" type=\"checkbox\" ><label for=\"sk-estimator-id-67\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>DecisionTreeRegressor</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.tree.DecisionTreeRegressor.html\">?<span>Documentation for DecisionTreeRegressor</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('criterion',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">criterion&nbsp;</td>\n",
" <td class=\"value\">&#x27;squared_error&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('splitter',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">splitter&nbsp;</td>\n",
" <td class=\"value\">&#x27;best&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_depth',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_depth&nbsp;</td>\n",
" <td class=\"value\">10</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_samples_split',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_samples_split&nbsp;</td>\n",
" <td class=\"value\">2</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_samples_leaf',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_samples_leaf&nbsp;</td>\n",
" <td class=\"value\">1</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_weight_fraction_leaf',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_weight_fraction_leaf&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_features&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('random_state',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">random_state&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_leaf_nodes',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_leaf_nodes&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_impurity_decrease',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_impurity_decrease&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('ccp_alpha',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">ccp_alpha&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('monotonic_cst',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">monotonic_cst&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
" // Get the parameter prefix from the closest toggleable content\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
"\n",
" const originalStyle = element.style;\n",
" const computedStyle = window.getComputedStyle(element);\n",
" const originalWidth = computedStyle.width;\n",
" const originalHTML = element.innerHTML.replace('Copied!', '');\n",
"\n",
" navigator.clipboard.writeText(fullParamName)\n",
" .then(() => {\n",
" element.style.width = originalWidth;\n",
" element.style.color = 'green';\n",
" element.innerHTML = \"Copied!\";\n",
"\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" })\n",
" .catch(err => {\n",
" console.error('Failed to copy:', err);\n",
" element.style.color = 'red';\n",
" element.innerHTML = \"Failed!\";\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" });\n",
" return false;\n",
"}\n",
"\n",
"document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
"\n",
" element.setAttribute('title', fullParamName);\n",
"});\n",
"</script></body>"
],
"text/plain": [
"GridSearchCV(cv=5, estimator=DecisionTreeRegressor(),\n",
" param_grid={'max_depth': [5, 10, 15]},\n",
" scoring='neg_mean_absolute_error')"
]
},
"execution_count": 158,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gs.fit(train_features_transformed,train_target)"
]
},
{
"cell_type": "code",
"execution_count": 159,
"id": "e7a4e25c-e5c4-41b8-8a4b-84f82b543a21",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'max_depth': 10}"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gs.best_params_"
]
},
{
"cell_type": "code",
"execution_count": 160,
"id": "fd3bc8e0-7881-4920-bfa1-8fb409172c88",
"metadata": {},
"outputs": [],
"source": [
"# method 2 "
]
},
{
"cell_type": "code",
"execution_count": 161,
"id": "5e8a4501-9f24-475f-8db8-61488069a2dc",
"metadata": {},
"outputs": [],
"source": [
"dt_regression_pipeline = Pipeline([(\"transformation\",all_transformations),(\"dtr\",DecisionTreeRegressor())])"
]
},
{
"cell_type": "code",
"execution_count": 162,
"id": "b4b1b338-9e3a-4820-994e-d318322e1370",
"metadata": {},
"outputs": [],
"source": [
"param_grid={\"transformation__rbf__kw_args\":[{\"Y\":[[35.0]],\"gamma\":0.1},\n",
" {\"Y\":[[35.0]],\"gamma\":0.2}],\n",
" \"dtr__max_depth\":[5,10,15]}"
]
},
{
"cell_type": "code",
"execution_count": 163,
"id": "6163fe84-a0da-4104-b511-5c5f04fa8577",
"metadata": {},
"outputs": [],
"source": [
"gs = GridSearchCV(dt_regression_pipeline,param_grid,scoring=\"neg_mean_absolute_error\",cv=5) "
]
},
{
"cell_type": "code",
"execution_count": 164,
"id": "3422a56a-55d2-427c-a5b6-43c644ce6932",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-8 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-8 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-8 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-8 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-8 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-8 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-8 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-8 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-8 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-8 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-8 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-8 div.sk-toggleable__content {\n",
" display: none;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-8 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" display: block;\n",
" width: 100%;\n",
" overflow: visible;\n",
"}\n",
"\n",
"#sk-container-id-8 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-8 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-8 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-8 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-8 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-8 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-8 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-8 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-8 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-8 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-8 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-8 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-8 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-8 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".estimator-table summary {\n",
" padding: .5rem;\n",
" font-family: monospace;\n",
" cursor: pointer;\n",
"}\n",
"\n",
".estimator-table details[open] {\n",
" padding-left: 0.1rem;\n",
" padding-right: 0.1rem;\n",
" padding-bottom: 0.3rem;\n",
"}\n",
"\n",
".estimator-table .parameters-table {\n",
" margin-left: auto !important;\n",
" margin-right: auto !important;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(odd) {\n",
" background-color: #fff;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:nth-child(even) {\n",
" background-color: #f6f6f6;\n",
"}\n",
"\n",
".estimator-table .parameters-table tr:hover {\n",
" background-color: #e0e0e0;\n",
"}\n",
"\n",
".estimator-table table td {\n",
" border: 1px solid rgba(106, 105, 104, 0.232);\n",
"}\n",
"\n",
".user-set td {\n",
" color:rgb(255, 94, 0);\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td.value pre {\n",
" color:rgb(255, 94, 0) !important;\n",
" background-color: transparent !important;\n",
"}\n",
"\n",
".default td {\n",
" color: black;\n",
" text-align: left;\n",
"}\n",
"\n",
".user-set td i,\n",
".default td i {\n",
" color: black;\n",
"}\n",
"\n",
".copy-paste-icon {\n",
" background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
" background-repeat: no-repeat;\n",
" background-size: 14px 14px;\n",
" background-position: 0;\n",
" display: inline-block;\n",
" width: 14px;\n",
" height: 14px;\n",
" cursor: pointer;\n",
"}\n",
"</style><body><div id=\"sk-container-id-8\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=5,\n",
" estimator=Pipeline(steps=[(&#x27;transformation&#x27;,\n",
" ColumnTransformer(remainder=Pipeline(steps=[(&#x27;simpleimputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;median&#x27;)),\n",
" (&#x27;standardscaler&#x27;,\n",
" StandardScaler())]),\n",
" transformers=[(&#x27;bedrooms&#x27;,\n",
" Pipeline(steps=[(&#x27;simpleimputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;median&#x27;)),\n",
" (&#x27;functiontransformer&#x27;,\n",
" FunctionTransformer(feature_names_out=&lt;...\n",
" &#x27;gamma&#x27;: 0.1}),\n",
" [&#x27;housing_median_age&#x27;]),\n",
" (&#x27;cat&#x27;,\n",
" Pipeline(steps=[(&#x27;mfImputer&#x27;,\n",
" SimpleImputer(strategy=&#x27;most_frequent&#x27;)),\n",
" (&#x27;ohe&#x27;,\n",
" OneHotEncoder())]),\n",
" [&#x27;ocean_proximity&#x27;])])),\n",
" (&#x27;dtr&#x27;, DecisionTreeRegressor())]),\n",
" param_grid={&#x27;dtr__max_depth&#x27;: [5, 10, 15],\n",
" &#x27;transformation__rbf__kw_args&#x27;: [{&#x27;Y&#x27;: [[35.0]],\n",
" &#x27;gamma&#x27;: 0.1},\n",
" {&#x27;Y&#x27;: [[35.0]],\n",
" &#x27;gamma&#x27;: 0.2}]},\n",
" scoring=&#x27;neg_mean_absolute_error&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-68\" type=\"checkbox\" ><label for=\"sk-estimator-id-68\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>GridSearchCV</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.model_selection.GridSearchCV.html\">?<span>Documentation for GridSearchCV</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('estimator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">estimator&nbsp;</td>\n",
" <td class=\"value\">Pipeline(step...Regressor())])</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('param_grid',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">param_grid&nbsp;</td>\n",
" <td class=\"value\">{&#x27;dtr__max_depth&#x27;: [5, 10, ...], &#x27;transformation__rbf__kw_args&#x27;: [{&#x27;Y&#x27;: [[35.0]], &#x27;gamma&#x27;: 0.1}, {&#x27;Y&#x27;: [[35.0]], &#x27;gamma&#x27;: 0.2}]}</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('scoring',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">scoring&nbsp;</td>\n",
" <td class=\"value\">&#x27;neg_mean_absolute_error&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('n_jobs',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">n_jobs&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('refit',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">refit&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('cv',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">cv&nbsp;</td>\n",
" <td class=\"value\">5</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose&nbsp;</td>\n",
" <td class=\"value\">0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('pre_dispatch',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">pre_dispatch&nbsp;</td>\n",
" <td class=\"value\">&#x27;2*n_jobs&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('error_score',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">error_score&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('return_train_score',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">return_train_score&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-69\" type=\"checkbox\" ><label for=\"sk-estimator-id-69\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>best_estimator_: Pipeline</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___\"></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-70\" type=\"checkbox\" ><label for=\"sk-estimator-id-70\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>transformation: ColumnTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for transformation: ColumnTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transformers',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transformers&nbsp;</td>\n",
" <td class=\"value\">[(&#x27;bedrooms&#x27;, ...), (&#x27;rooms_per_house&#x27;, ...), ...]</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('remainder',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">remainder&nbsp;</td>\n",
" <td class=\"value\">Pipeline(step...ardScaler())])</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('sparse_threshold',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">sparse_threshold&nbsp;</td>\n",
" <td class=\"value\">0.3</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('n_jobs',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">n_jobs&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('transformer_weights',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">transformer_weights&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('verbose_feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">verbose_feature_names_out&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('force_int_remainder_cols',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">force_int_remainder_cols&nbsp;</td>\n",
" <td class=\"value\">&#x27;deprecated&#x27;</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-71\" type=\"checkbox\" ><label for=\"sk-estimator-id-71\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>bedrooms</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__bedrooms__\"><pre>[&#x27;total_bedrooms&#x27;, &#x27;total_rooms&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-72\" type=\"checkbox\" ><label for=\"sk-estimator-id-72\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__bedrooms__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-73\" type=\"checkbox\" ><label for=\"sk-estimator-id-73\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__bedrooms__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-74\" type=\"checkbox\" ><label for=\"sk-estimator-id-74\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__bedrooms__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-75\" type=\"checkbox\" ><label for=\"sk-estimator-id-75\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rooms_per_house</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__rooms_per_house__\"><pre>[&#x27;total_rooms&#x27;, &#x27;households&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-76\" type=\"checkbox\" ><label for=\"sk-estimator-id-76\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__rooms_per_house__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-77\" type=\"checkbox\" ><label for=\"sk-estimator-id-77\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__rooms_per_house__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-78\" type=\"checkbox\" ><label for=\"sk-estimator-id-78\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__rooms_per_house__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-79\" type=\"checkbox\" ><label for=\"sk-estimator-id-79\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>people_per_house</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__people_per_house__\"><pre>[&#x27;population&#x27;, &#x27;households&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-80\" type=\"checkbox\" ><label for=\"sk-estimator-id-80\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__people_per_house__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-81\" type=\"checkbox\" ><label for=\"sk-estimator-id-81\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>ratio_of_columns</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__people_per_house__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618040&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&lt;function rat...0020EE2618720&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-82\" type=\"checkbox\" ><label for=\"sk-estimator-id-82\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__people_per_house__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-83\" type=\"checkbox\" ><label for=\"sk-estimator-id-83\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>log</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__log__\"><pre>[&#x27;total_bedrooms&#x27;, &#x27;total_rooms&#x27;, &#x27;population&#x27;, &#x27;households&#x27;, &#x27;median_income&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-84\" type=\"checkbox\" ><label for=\"sk-estimator-id-84\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__log__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-85\" type=\"checkbox\" ><label for=\"sk-estimator-id-85\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>log</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__log__functiontransformer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;ufunc &#x27;log&#x27;&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&#x27;one-to-one&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-86\" type=\"checkbox\" ><label for=\"sk-estimator-id-86\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__log__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-87\" type=\"checkbox\" ><label for=\"sk-estimator-id-87\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rbf</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__rbf__\"><pre>[&#x27;housing_median_age&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-88\" type=\"checkbox\" ><label for=\"sk-estimator-id-88\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>rbf_kernel</div><div class=\"caption\">FunctionTransformer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.FunctionTransformer.html\">?<span>Documentation for FunctionTransformer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__rbf__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">func&nbsp;</td>\n",
" <td class=\"value\">&lt;function rbf...0020EDECC1300&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inverse_func',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inverse_func&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('validate',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">validate&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('accept_sparse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">accept_sparse&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('check_inverse',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">check_inverse&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_names_out',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_names_out&nbsp;</td>\n",
" <td class=\"value\">&#x27;one-to-one&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">kw_args&nbsp;</td>\n",
" <td class=\"value\">{&#x27;Y&#x27;: [[35.0]], &#x27;gamma&#x27;: 0.1}</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('inv_kw_args',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">inv_kw_args&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-89\" type=\"checkbox\" ><label for=\"sk-estimator-id-89\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>cat</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__cat__\"><pre>[&#x27;ocean_proximity&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-90\" type=\"checkbox\" ><label for=\"sk-estimator-id-90\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__cat__mfImputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;most_frequent&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-91\" type=\"checkbox\" ><label for=\"sk-estimator-id-91\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>OneHotEncoder</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__cat__ohe__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('categories',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">categories&nbsp;</td>\n",
" <td class=\"value\">&#x27;auto&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('drop',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">drop&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('sparse_output',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">sparse_output&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('dtype',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">dtype&nbsp;</td>\n",
" <td class=\"value\">&lt;class &#x27;numpy.float64&#x27;&gt;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('handle_unknown',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">handle_unknown&nbsp;</td>\n",
" <td class=\"value\">&#x27;error&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_frequency',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_frequency&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_categories',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_categories&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('feature_name_combiner',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">feature_name_combiner&nbsp;</td>\n",
" <td class=\"value\">&#x27;concat&#x27;</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-92\" type=\"checkbox\" ><label for=\"sk-estimator-id-92\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>remainder</div></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__remainder__\"><pre>[&#x27;longitude&#x27;, &#x27;latitude&#x27;]</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-93\" type=\"checkbox\" ><label for=\"sk-estimator-id-93\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SimpleImputer</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__remainder__simpleimputer__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('missing_values',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">missing_values&nbsp;</td>\n",
" <td class=\"value\">nan</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('strategy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">strategy&nbsp;</td>\n",
" <td class=\"value\">&#x27;median&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('fill_value',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">fill_value&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('add_indicator',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">add_indicator&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('keep_empty_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">keep_empty_features&nbsp;</td>\n",
" <td class=\"value\">False</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-94\" type=\"checkbox\" ><label for=\"sk-estimator-id-94\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___transformation__remainder__standardscaler__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('copy',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">copy&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_mean',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_mean&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('with_std',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">with_std&nbsp;</td>\n",
" <td class=\"value\">True</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-95\" type=\"checkbox\" ><label for=\"sk-estimator-id-95\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>DecisionTreeRegressor</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.tree.DecisionTreeRegressor.html\">?<span>Documentation for DecisionTreeRegressor</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"best_estimator___dtr__\">\n",
" <div class=\"estimator-table\">\n",
" <details>\n",
" <summary>Parameters</summary>\n",
" <table class=\"parameters-table\">\n",
" <tbody>\n",
" \n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('criterion',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">criterion&nbsp;</td>\n",
" <td class=\"value\">&#x27;squared_error&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('splitter',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">splitter&nbsp;</td>\n",
" <td class=\"value\">&#x27;best&#x27;</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"user-set\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_depth',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_depth&nbsp;</td>\n",
" <td class=\"value\">10</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_samples_split',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_samples_split&nbsp;</td>\n",
" <td class=\"value\">2</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_samples_leaf',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_samples_leaf&nbsp;</td>\n",
" <td class=\"value\">1</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_weight_fraction_leaf',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_weight_fraction_leaf&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_features',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_features&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('random_state',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">random_state&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('max_leaf_nodes',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">max_leaf_nodes&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('min_impurity_decrease',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">min_impurity_decrease&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('ccp_alpha',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">ccp_alpha&nbsp;</td>\n",
" <td class=\"value\">0.0</td>\n",
" </tr>\n",
" \n",
"\n",
" <tr class=\"default\">\n",
" <td><i class=\"copy-paste-icon\"\n",
" onclick=\"copyToClipboard('monotonic_cst',\n",
" this.parentElement.nextElementSibling)\"\n",
" ></i></td>\n",
" <td class=\"param\">monotonic_cst&nbsp;</td>\n",
" <td class=\"value\">None</td>\n",
" </tr>\n",
" \n",
" </tbody>\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div></div></div></div></div></div></div></div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
" // Get the parameter prefix from the closest toggleable content\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
"\n",
" const originalStyle = element.style;\n",
" const computedStyle = window.getComputedStyle(element);\n",
" const originalWidth = computedStyle.width;\n",
" const originalHTML = element.innerHTML.replace('Copied!', '');\n",
"\n",
" navigator.clipboard.writeText(fullParamName)\n",
" .then(() => {\n",
" element.style.width = originalWidth;\n",
" element.style.color = 'green';\n",
" element.innerHTML = \"Copied!\";\n",
"\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" })\n",
" .catch(err => {\n",
" console.error('Failed to copy:', err);\n",
" element.style.color = 'red';\n",
" element.innerHTML = \"Failed!\";\n",
" setTimeout(() => {\n",
" element.innerHTML = originalHTML;\n",
" element.style = originalStyle;\n",
" }, 2000);\n",
" });\n",
" return false;\n",
"}\n",
"\n",
"document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
" const toggleableContent = element.closest('.sk-toggleable__content');\n",
" const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
" const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
" const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
"\n",
" element.setAttribute('title', fullParamName);\n",
"});\n",
"</script></body>"
],
"text/plain": [
"GridSearchCV(cv=5,\n",
" estimator=Pipeline(steps=[('transformation',\n",
" ColumnTransformer(remainder=Pipeline(steps=[('simpleimputer',\n",
" SimpleImputer(strategy='median')),\n",
" ('standardscaler',\n",
" StandardScaler())]),\n",
" transformers=[('bedrooms',\n",
" Pipeline(steps=[('simpleimputer',\n",
" SimpleImputer(strategy='median')),\n",
" ('functiontransformer',\n",
" FunctionTransformer(feature_names_out=<...\n",
" 'gamma': 0.1}),\n",
" ['housing_median_age']),\n",
" ('cat',\n",
" Pipeline(steps=[('mfImputer',\n",
" SimpleImputer(strategy='most_frequent')),\n",
" ('ohe',\n",
" OneHotEncoder())]),\n",
" ['ocean_proximity'])])),\n",
" ('dtr', DecisionTreeRegressor())]),\n",
" param_grid={'dtr__max_depth': [5, 10, 15],\n",
" 'transformation__rbf__kw_args': [{'Y': [[35.0]],\n",
" 'gamma': 0.1},\n",
" {'Y': [[35.0]],\n",
" 'gamma': 0.2}]},\n",
" scoring='neg_mean_absolute_error')"
]
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gs.fit(train_features,train_target)"
]
},
{
"cell_type": "code",
"execution_count": 165,
"id": "b65b8f79-3492-49bb-8085-c40eac0b4806",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'dtr__max_depth': 10,\n",
" 'transformation__rbf__kw_args': {'Y': [[35.0]], 'gamma': 0.1}}"
]
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gs.best_params_"
]
},
{
"cell_type": "code",
"execution_count": 166,
"id": "8cd38b44-e2c3-445d-9acd-7d5ac0f18077",
"metadata": {},
"outputs": [
{
"data": {
"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>mean_fit_time</th>\n",
" <th>std_fit_time</th>\n",
" <th>mean_score_time</th>\n",
" <th>std_score_time</th>\n",
" <th>param_dtr__max_depth</th>\n",
" <th>param_transformation__rbf__kw_args</th>\n",
" <th>params</th>\n",
" <th>split0_test_score</th>\n",
" <th>split1_test_score</th>\n",
" <th>split2_test_score</th>\n",
" <th>split3_test_score</th>\n",
" <th>split4_test_score</th>\n",
" <th>mean_test_score</th>\n",
" <th>std_test_score</th>\n",
" <th>rank_test_score</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.160371</td>\n",
" <td>0.017530</td>\n",
" <td>0.010740</td>\n",
" <td>0.002847</td>\n",
" <td>10</td>\n",
" <td>{'Y': [[35.0]], 'gamma': 0.1}</td>\n",
" <td>{'dtr__max_depth': 10, 'transformation__rbf__k...</td>\n",
" <td>-41133.384081</td>\n",
" <td>-41721.040952</td>\n",
" <td>-41505.807454</td>\n",
" <td>-42523.412811</td>\n",
" <td>-41513.426356</td>\n",
" <td>-41679.414331</td>\n",
" <td>462.581150</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.181755</td>\n",
" <td>0.019895</td>\n",
" <td>0.013844</td>\n",
" <td>0.003454</td>\n",
" <td>10</td>\n",
" <td>{'Y': [[35.0]], 'gamma': 0.2}</td>\n",
" <td>{'dtr__max_depth': 10, 'transformation__rbf__k...</td>\n",
" <td>-41255.550113</td>\n",
" <td>-41481.724633</td>\n",
" <td>-41782.759990</td>\n",
" <td>-42440.091189</td>\n",
" <td>-41546.489010</td>\n",
" <td>-41701.322987</td>\n",
" <td>405.788342</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.269636</td>\n",
" <td>0.012073</td>\n",
" <td>0.015563</td>\n",
" <td>0.003003</td>\n",
" <td>15</td>\n",
" <td>{'Y': [[35.0]], 'gamma': 0.1}</td>\n",
" <td>{'dtr__max_depth': 15, 'transformation__rbf__k...</td>\n",
" <td>-42936.519740</td>\n",
" <td>-43306.967704</td>\n",
" <td>-44693.512985</td>\n",
" <td>-44638.209139</td>\n",
" <td>-43741.081625</td>\n",
" <td>-43863.258239</td>\n",
" <td>703.292595</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.255822</td>\n",
" <td>0.015210</td>\n",
" <td>0.015502</td>\n",
" <td>0.003107</td>\n",
" <td>15</td>\n",
" <td>{'Y': [[35.0]], 'gamma': 0.2}</td>\n",
" <td>{'dtr__max_depth': 15, 'transformation__rbf__k...</td>\n",
" <td>-43637.447268</td>\n",
" <td>-43931.922106</td>\n",
" <td>-44434.308660</td>\n",
" <td>-45058.074285</td>\n",
" <td>-43202.784627</td>\n",
" <td>-44052.907389</td>\n",
" <td>642.772227</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.125656</td>\n",
" <td>0.016615</td>\n",
" <td>0.014980</td>\n",
" <td>0.002902</td>\n",
" <td>5</td>\n",
" <td>{'Y': [[35.0]], 'gamma': 0.1}</td>\n",
" <td>{'dtr__max_depth': 5, 'transformation__rbf__kw...</td>\n",
" <td>-49778.593213</td>\n",
" <td>-48206.829410</td>\n",
" <td>-48978.500710</td>\n",
" <td>-48401.981311</td>\n",
" <td>-47580.701203</td>\n",
" <td>-48589.321169</td>\n",
" <td>743.577718</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.114708</td>\n",
" <td>0.016050</td>\n",
" <td>0.014625</td>\n",
" <td>0.003701</td>\n",
" <td>5</td>\n",
" <td>{'Y': [[35.0]], 'gamma': 0.2}</td>\n",
" <td>{'dtr__max_depth': 5, 'transformation__rbf__kw...</td>\n",
" <td>-49778.593213</td>\n",
" <td>-48206.829410</td>\n",
" <td>-48978.500710</td>\n",
" <td>-48401.981311</td>\n",
" <td>-47580.701203</td>\n",
" <td>-48589.321169</td>\n",
" <td>743.577718</td>\n",
" <td>5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" mean_fit_time std_fit_time mean_score_time std_score_time \\\n",
"2 0.160371 0.017530 0.010740 0.002847 \n",
"3 0.181755 0.019895 0.013844 0.003454 \n",
"4 0.269636 0.012073 0.015563 0.003003 \n",
"5 0.255822 0.015210 0.015502 0.003107 \n",
"0 0.125656 0.016615 0.014980 0.002902 \n",
"1 0.114708 0.016050 0.014625 0.003701 \n",
"\n",
" param_dtr__max_depth param_transformation__rbf__kw_args \\\n",
"2 10 {'Y': [[35.0]], 'gamma': 0.1} \n",
"3 10 {'Y': [[35.0]], 'gamma': 0.2} \n",
"4 15 {'Y': [[35.0]], 'gamma': 0.1} \n",
"5 15 {'Y': [[35.0]], 'gamma': 0.2} \n",
"0 5 {'Y': [[35.0]], 'gamma': 0.1} \n",
"1 5 {'Y': [[35.0]], 'gamma': 0.2} \n",
"\n",
" params split0_test_score \\\n",
"2 {'dtr__max_depth': 10, 'transformation__rbf__k... -41133.384081 \n",
"3 {'dtr__max_depth': 10, 'transformation__rbf__k... -41255.550113 \n",
"4 {'dtr__max_depth': 15, 'transformation__rbf__k... -42936.519740 \n",
"5 {'dtr__max_depth': 15, 'transformation__rbf__k... -43637.447268 \n",
"0 {'dtr__max_depth': 5, 'transformation__rbf__kw... -49778.593213 \n",
"1 {'dtr__max_depth': 5, 'transformation__rbf__kw... -49778.593213 \n",
"\n",
" split1_test_score split2_test_score split3_test_score split4_test_score \\\n",
"2 -41721.040952 -41505.807454 -42523.412811 -41513.426356 \n",
"3 -41481.724633 -41782.759990 -42440.091189 -41546.489010 \n",
"4 -43306.967704 -44693.512985 -44638.209139 -43741.081625 \n",
"5 -43931.922106 -44434.308660 -45058.074285 -43202.784627 \n",
"0 -48206.829410 -48978.500710 -48401.981311 -47580.701203 \n",
"1 -48206.829410 -48978.500710 -48401.981311 -47580.701203 \n",
"\n",
" mean_test_score std_test_score rank_test_score \n",
"2 -41679.414331 462.581150 1 \n",
"3 -41701.322987 405.788342 2 \n",
"4 -43863.258239 703.292595 3 \n",
"5 -44052.907389 642.772227 4 \n",
"0 -48589.321169 743.577718 5 \n",
"1 -48589.321169 743.577718 5 "
]
},
"execution_count": 166,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(gs.cv_results_).sort_values(by=\"mean_test_score\",ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 167,
"id": "5c0b6589-492b-449f-ab9a-2784d9ea11c2",
"metadata": {},
"outputs": [],
"source": [
"from scipy.stats import randint"
]
},
{
"cell_type": "code",
"execution_count": 168,
"id": "68cec96c-5410-4631-bfc2-27a6ab3bb9ee",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<scipy.stats._distn_infrastructure.rv_discrete_frozen at 0x20ee221b8c0>"
]
},
"execution_count": 168,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"randint(low=5,high=100)"
]
},
{
"cell_type": "code",
"execution_count": 169,
"id": "0a155ede-9e7f-4712-8d04-98318a91116e",
"metadata": {},
"outputs": [],
"source": [
"housing_model= gs.best_estimator_"
]
},
{
"cell_type": "code",
"execution_count": 170,
"id": "0a2856cd-55cf-41f0-8c28-780e26049a88",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.011, 0.016, 0.124, 0.005, 0.003, 0.004, 0.006, 0.542, 0.024,\n",
" 0. , 0.168, 0. , 0. , 0.001, 0.051, 0.045])"
]
},
"execution_count": 170,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"housing_model[\"dtr\"].feature_importances_.round(3)"
]
},
{
"cell_type": "code",
"execution_count": 171,
"id": "d9430d6d-0fcd-4dc3-a025-5c77076db518",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(np.float64(0.542), 'log__median_income'),\n",
" (np.float64(0.168), 'cat__ocean_proximity_INLAND'),\n",
" (np.float64(0.124), 'people_per_house__ratio'),\n",
" (np.float64(0.051), 'remainder__longitude'),\n",
" (np.float64(0.045), 'remainder__latitude'),\n",
" (np.float64(0.024), 'rbf__housing_median_age'),\n",
" (np.float64(0.016), 'rooms_per_house__ratio'),\n",
" (np.float64(0.011), 'bedrooms__ratio'),\n",
" (np.float64(0.006), 'log__households'),\n",
" (np.float64(0.005), 'log__total_bedrooms'),\n",
" (np.float64(0.004), 'log__population'),\n",
" (np.float64(0.003), 'log__total_rooms'),\n",
" (np.float64(0.001), 'cat__ocean_proximity_NEAR OCEAN'),\n",
" (np.float64(0.0), 'cat__ocean_proximity_NEAR BAY'),\n",
" (np.float64(0.0), 'cat__ocean_proximity_ISLAND'),\n",
" (np.float64(0.0), 'cat__ocean_proximity_<1H OCEAN')]"
]
},
"execution_count": 171,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted(zip(housing_model[\"dtr\"].feature_importances_.round(3),housing_model[\"transformation\"].get_feature_names_out()),reverse=True)"
]
},
{
"cell_type": "code",
"execution_count": 172,
"id": "5d9c0146-d0b8-4b09-9ced-a7b74041ee63",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"62619.630122520095"
]
},
"execution_count": 172,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"root_mean_squared_error(test_target,housing_model.predict(test_features)) "
]
},
{
"cell_type": "code",
"execution_count": 173,
"id": "98f94e6b-de26-45d0-be5c-dcc8f6a2effe",
"metadata": {},
"outputs": [],
"source": [
"from scipy import stats"
]
},
{
"cell_type": "code",
"execution_count": 174,
"id": "9cccd4c4-6e4a-4c0d-baa9-86d6b981c59e",
"metadata": {},
"outputs": [],
"source": [
"ci = 0.95"
]
},
{
"cell_type": "code",
"execution_count": 175,
"id": "9df156a9-eb3e-4e8a-8715-eb9a0fe5c0ec",
"metadata": {},
"outputs": [],
"source": [
"se = (test_target.values-housing_model.predict(test_features))**2"
]
},
{
"cell_type": "code",
"execution_count": 177,
"id": "98f2cb3a-6bcc-4245-8100-0ee57c594c0b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([59741.49293713, 65371.17235453])"
]
},
"execution_count": 177,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sqrt(stats.t.interval(ci,len(se)-1,loc=np.mean(se),scale=stats.sem(se)))"
]
},
{
"cell_type": "code",
"execution_count": 178,
"id": "6a1a5cd2-ac9b-4a14-be1f-419b40d836e3",
"metadata": {},
"outputs": [],
"source": [
"import joblib"
]
},
{
"cell_type": "code",
"execution_count": 179,
"id": "6bdd7d43-6e4b-4c79-870e-6cf53a9bb375",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['housing_model.pkl']"
]
},
"execution_count": 179,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joblib.dump(housing_model,\"housing_model.pkl\")"
]
},
{
"cell_type": "code",
"execution_count": 180,
"id": "ebfb6fba-45a3-423b-a4f0-fd2a0818ee80",
"metadata": {},
"outputs": [],
"source": [
"housing_model_loaded=joblib.load(\"housing_model.pkl\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "10f1f5ba-e4ba-4e13-9fa5-c71b7854d4a4",
"metadata": {},
"outputs": [],
"source": [
"# ml operations (mlops)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.13.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}