{ "cells": [ { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area_typeavailabilitylocationsizesocietytotal_sqftbathbalconyprice
0Super built-up Area19-DecElectronic City Phase II2 BHKCoomee1056.02.01.039.07
1Plot AreaReady To MoveChikka Tirupathi4 BedroomTheanmp2600.05.03.0120.00
2Built-up AreaReady To MoveUttarahalli3 BHKNaN1440.02.03.062.00
3Super built-up AreaReady To MoveLingadheeranahalli3 BHKSoiewre1521.03.01.095.00
4Super built-up AreaReady To MoveKothanur2 BHKNaN1200.02.01.051.00
\n", "
" ], "text/plain": [ " area_type availability location size \\\n", "0 Super built-up Area 19-Dec Electronic City Phase II 2 BHK \n", "1 Plot Area Ready To Move Chikka Tirupathi 4 Bedroom \n", "2 Built-up Area Ready To Move Uttarahalli 3 BHK \n", "3 Super built-up Area Ready To Move Lingadheeranahalli 3 BHK \n", "4 Super built-up Area Ready To Move Kothanur 2 BHK \n", "\n", " society total_sqft bath balcony price \n", "0 Coomee 1056.0 2.0 1.0 39.07 \n", "1 Theanmp 2600.0 5.0 3.0 120.00 \n", "2 NaN 1440.0 2.0 3.0 62.00 \n", "3 Soiewre 1521.0 3.0 1.0 95.00 \n", "4 NaN 1200.0 2.0 1.0 51.00 " ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''\n", "Name: Anand Panchdhari\n", "Roll No.: C013\n", "Aim: Apply pre-processing on given dataset using scikit-learn package to transform raw features into representations suitable for machine learning model.\n", "'''\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.preprocessing import StandardScaler, LabelEncoder, PowerTransformer\n", "\n", "df = pd.read_csv(\"datasets/Bengaluru_House_Data.xls\")\n", "def process_total_sqft(value):\n", " try:\n", " if '-' in value:\n", " values = list(map(float, value.split('-')))\n", " return np.mean(values)\n", " return float(value)\n", " except ValueError:\n", " return np.nan\n", " \n", "df['total_sqft'] = df['total_sqft'].apply(process_total_sqft)\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Normalized Data\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area_typeavailabilitylocationsizesocietytotal_sqftbathbalconyprice
0Super built-up Area19-DecElectronic City Phase II2 BHKCoomee-0.476169-0.551521-0.704311-0.522991
1Plot AreaReady To MoveChikka Tirupathi4 BedroomTheanmp1.0032501.8090471.7560810.097919
2Built-up AreaReady To MoveUttarahalli3 BHKNaN-0.108231-0.5515211.756081-0.347068
3Super built-up AreaReady To MoveLingadheeranahalli3 BHKSoiewre-0.0306190.235335-0.704311-0.093886
4Super built-up AreaReady To MoveKothanur2 BHKNaN-0.338192-0.551521-0.704311-0.431462
\n", "
" ], "text/plain": [ " area_type availability location size \\\n", "0 Super built-up Area 19-Dec Electronic City Phase II 2 BHK \n", "1 Plot Area Ready To Move Chikka Tirupathi 4 Bedroom \n", "2 Built-up Area Ready To Move Uttarahalli 3 BHK \n", "3 Super built-up Area Ready To Move Lingadheeranahalli 3 BHK \n", "4 Super built-up Area Ready To Move Kothanur 2 BHK \n", "\n", " society total_sqft bath balcony price \n", "0 Coomee -0.476169 -0.551521 -0.704311 -0.522991 \n", "1 Theanmp 1.003250 1.809047 1.756081 0.097919 \n", "2 NaN -0.108231 -0.551521 1.756081 -0.347068 \n", "3 Soiewre -0.030619 0.235335 -0.704311 -0.093886 \n", "4 NaN -0.338192 -0.551521 -0.704311 -0.431462 " ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numeric_cols = df.select_dtypes(np.number).columns\n", "df[numeric_cols] = StandardScaler().fit_transform(df[numeric_cols])\n", "print(\"Normalized Data\")\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Encoded Categorical Features:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area_typeavailabilitylocationsizesocietytotal_sqftbathbalconyprice
032286449-0.476169-0.551521-0.704311-0.522991
12406492661.0032501.8090471.7560810.097919
20402676290-0.108231-0.5515211.756081-0.347068
33401736236-0.0306190.235335-0.704311-0.093886
43401614290-0.338192-0.551521-0.704311-0.431462
\n", "
" ], "text/plain": [ " area_type availability location size society total_sqft bath \\\n", "0 3 22 86 4 49 -0.476169 -0.551521 \n", "1 2 40 64 9 266 1.003250 1.809047 \n", "2 0 40 267 6 290 -0.108231 -0.551521 \n", "3 3 40 173 6 236 -0.030619 0.235335 \n", "4 3 40 161 4 290 -0.338192 -0.551521 \n", "\n", " balcony price \n", "0 -0.704311 -0.522991 \n", "1 1.756081 0.097919 \n", "2 1.756081 -0.347068 \n", "3 -0.704311 -0.093886 \n", "4 -0.704311 -0.431462 " ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "categorical_cols = df.select_dtypes('object').columns\n", "for col in categorical_cols:\n", " df[col] = LabelEncoder().fit_transform(df[col])\n", "print(\"Encoded Categorical Features:\")\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Histogram plotted for skewness check.\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9oAAAKqCAYAAADFQiYyAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjpBJREFUeJzs/Xt4VOX5939/JmEyEMgkBklCaoCAyn5XEEjdsAsJgaJIWotSxZYbWppQIVYxlk0Caiz6Fb/aCG1vC3qXVEtbsSCFDBuhloCQ/igClgJFqUJClSaRUIYhs54/fDJ1TAKZZM0myft1HHOEda1rrXWec82QdWbtLIZhGAIAAAAAAKYIC3YAAAAAAAC0JhTaAAAAAACYiEIbAAAAAAATUWgDAAAAAGAiCm0AAAAAAExEoQ0AAAAAgIkotAEAAAAAMBGFNgAAAAAAJqLQBgAAAADARBTaQCvxwQcfyGKxaO3atUGL4cqVK3r00UeVlJSksLAwTZ06NWixAADQluTl5cliseiTTz7x63bWrl0ri8WiAwcO+HU7QEtHoQ2YZM+ePcrLy1NFRUWTln/ppZeCWiSb4Ze//KWeeeYZfeMb39Arr7yiBQsW6OjRo8rLy9MHH3wQ7PAAAEAjtYb9EiCYKLQBk+zZs0f5+fltutDesWOHvvKVr2jlypW6//77NXr0aB09elT5+fkU2gAAtCCtYb8ECCYKbQCmOXfunGJiYoIdBgAAABBUFNqACfLy8vTII49IkpKTk2WxWGSxWPTBBx/oypUrWr58uXr16iWbzaYePXro8ccfl9Pp9Czfo0cPHTlyRLt27fIsO2bMGEnS+fPn9aMf/UgDBw5Up06dZLfblZGRob/+9a+mxP7iiy+qf//+ioyM1HXXXafhw4erqKjIq88777yjW265Re3bt1evXr30s5/9zHMtmPTf68N37typI0eOeHJYu3atvvnNb0qSxo4d62l/++23TYkdAAB4++STT3TPPffIbrerc+fOeuihh3Tp0iXP/DVr1mjcuHGKi4uTzWZTv379tGrVKq91XG2/pJbT6VROTo66dOmijh076u6779a//vWvQKQItAjtgh0A0BpMmzZNf//73/XrX/9aK1eu1PXXXy9J6tKli/7P//k/euWVV/SNb3xDDz/8sPbt26eCggK9//77euONNyRJzz//vObNm6dOnTrpxz/+sSQpPj5ekvSPf/xDGzZs0De/+U0lJyervLxcP/vZzzynZScmJjY57l/84hf64Q9/qG984xueX8SHDh3Svn37dN9990mS3nvvPaWlpalLly7Ky8vTlStXtHTpUk98tXn+v//3//Tkk0/qwoULKigokCTddNNN+uEPf6gXXnhBjz/+uPr27StJnp8AAMBc99xzj3r06KGCggLt3btXL7zwgv7973/r1VdflSStWrVK/fv315133ql27dpp48aN+sEPfiC3262srCxJV98vqTVv3jxdd911Wrp0qT744AM9//zzys7O1uuvvx7YhIFQZQAwxTPPPGNIMk6dOuVpO3jwoCHJ+D//5/949f3Rj35kSDJ27Njhaevfv78xevToOuu9dOmSUVNT49V26tQpw2azGcuWLfNqk2SsWbOm0THfddddRv/+/a/aZ+rUqUb79u2NDz/80NN29OhRIzw83PjyfyGjR4+us77169cbkoydO3c2Oi4AAOCbpUuXGpKMO++806v9Bz/4gSHJ+Otf/2oYhmFcvHixzrLp6elGz549vdoa2i9Zs2aNIclITU013G63p33BggVGeHi4UVFRYUI2QMvHqeOAH23evFmSlJOT49X+8MMPS5Leeuuta67DZrMpLOzzr2pNTY0+/fRTderUSb1799Zf/vKXZsUXExOjjz76SPv37693fk1NjbZu3aqpU6eqW7dunva+ffsqPT29WdsGAADmqz0qXWvevHmS/rtP0qFDB8+8yspKffLJJxo9erT+8Y9/qLKystHbmTNnjucSMkm6/fbbVVNTow8//LA54QOtBoU24EcffvihwsLCdOONN3q1JyQkKCYmplG/jNxut1auXKmbbrpJNptN119/vbp06aJDhw759AuxPgsXLlSnTp00YsQI3XTTTcrKytKf//xnz/x//etf+s9//qObbrqpzrK9e/du1rYBAID5vvw7u1evXgoLC/M8/ePPf/6zUlNT1bFjR8XExKhLly56/PHHJcmn/Yov/gFekq677jpJ0r///e9mRA+0HhTaQAB88S++vnrqqaeUk5OjO+64Q7/61a+0detWORwO9e/fX263u1lx9e3bV8eOHdNrr72m2267Tb/73e902223aenSpc1aLwAACA1f3Ac5efKkxo8fr08++UTPPfec3nrrLTkcDi1YsECSfNqvCA8Pr7fd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b37zG79tM6SPaD/88MN68MEHr9qnZ8+enn+fOXNGY8eO1de+9jX9/Oc/93N0wXH99dcrPDxc5eXlXu3l5eVKSEgIUlSBl52drU2bNmn37t264YYbgh1OwJSWlurcuXP66le/6mmrqanR7t279dOf/lROp1Ph4eFBjNC/unbtWuevyX379tXvfve7IEUUWI888ogee+wxTZ8+XZI0cOBAffjhhyooKGgTR/S/qPb/u/LycnXt2tXTXl5eriFDhgQpKsCbr/sxrQ37LK1XW9gPi4iI0I033ihJGjZsmPbv36///d//1c9+9rMgR2aetrxfGRMTo5tvvlknTpzw2zZCutDu0qWLunTp0qi+H3/8scaOHathw4ZpzZo1CgsL6YP1TRYREaFhw4Zp+/btmjp1qqTPj/Jt375d2dnZwQ0uAAzD0Lx58/TGG2/o7bffVnJycrBDCqjx48frvffe82r7zne+oz59+mjhwoWt9j/DWrfeemudx4j8/e9/V/fu3YMUUWBdvHixzv9t4eHhcrvdQYooeJKTk5WQkKDt27d7CuuqqirPkQcgFPiyH9MatfV9ltaoLe+Hud1uOZ3OYIdhqra8X3nhwgWdPHlS999/v9+2EdKFdmN9/PHHGjNmjLp3765nn31W//rXvzzzWuNfTHNycjRz5kwNHz5cI0aM0PPPP6/q6mp95zvfCXZofpeVlaWioiK9+eabioqK8lyLGR0drQ4dOgQ5Ov+Lioqqcx1Ux44d1blz51Z5fdSXLViwQF/72tf01FNP6Z577tG7776rn//85632DJYvmzJlip588kl169ZN/fv31//3//1/eu655/Td73432KH5xYULF7z+0nzq1CkdPHhQsbGx6tatm+bPn68nnnhCN910k5KTk7V48WIlJiZ6duiBluT06dM6f/68Tp8+rZqaGh08eFCSdOONN6pTp07BDa4Z2so+y7X+v2ot2sp+WG5urjIyMtStWzd99tlnKioq0ttvv62tW7cGOzRTtaX9yh/96EeaMmWKunfvrjNnzmjp0qUKDw/Xvffe67+NBvQe536yZs0aQ1K9r9bqxRdfNLp162ZEREQYI0aMMPbu3RvskAKioXFes2ZNsEMLmtb6GIaGbNy40RgwYIBhs9mMPn36GD//+c+DHVLAVFVVGQ899JDRrVs3o3379kbPnj2NH//4x4bT6Qx2aH6xc+fOer/vM2fONAzj80d8LV682IiPjzdsNpsxfvx449ixY8ENGmiimTNn1vt537lzZ7BDa7a2sM9yrf+vWou2sh/23e9+1+jevbsRERFhdOnSxRg/frxRXFwc7LACorXuV37rW98yunbtakRERBhf+cpXjG9961vGiRMn/LpNi2EYhv/KeAAAAAAA2pbWeSEzAAAAAABBQqENAAAAAICJKLQBAAAAADARhTYAAAAAACai0AYAAAAAwEQU2gAAAAAAmIhCGwAAAAAAE1FoAwAAAABgIgptAAAAAABMRKENAAAAAICJKLQBAAAAADARhTYAAAAAACai0AYAAAAAwEQU2gAAAAAAmIhCGwAAAAAAE1FoAwAAAABgIgptAAAAAABMRKENAAAAAICJKLQBAAAAADARhTYAAAAAACai0AYAAAAAwEQU2gAAAAAAmIhCGwAAAAAAE1FoAwAAAABgIgptAAAAAABMRKENAAAAAICJKLQBAAAAADARhTYAAAAAACai0AYAAAAAwEQU2gAAAAAAmIhCGwAAAAAAE1FoAwAAAABgIgptAAAAAABMRKENAAAAAICJKLQBAAAAADARhTYAAAAAACai0Ab8LC8vTxaLRZ988okp6xszZozGjBljyroAAAAsFovy8vKCHQbQqlBoAwAAAABgonbBDgAAAABA8PznP/9Ru3aUBYCZOKINAAAAtDFut1uXLl2SJLVv355CGzAZhTYQIJ988onuuece2e12de7cWQ899JDnF5wkrVmzRuPGjVNcXJxsNpv69eunVatWNWrdly5dUl5enm6++Wa1b99eXbt21bRp03Ty5ElPn+rqaj388MNKSkqSzWZT79699eyzz8owDK91WSwWZWdna8OGDRowYIBsNpv69++vLVu2ePrs3LlTFotFb7zxRp1YioqKZLFYVFJS4utbBAAAfFR7L5i//e1vV93PqP39vm7dOvXv3182m83zu72+a7Q//vhjzZo1S4mJibLZbEpOTtbcuXN1+fJlT5+KigrNnz/fs29x44036ic/+YncbndAcgdCGX+6AgLknnvuUY8ePVRQUKC9e/fqhRde0L///W+9+uqrkqRVq1apf//+uvPOO9WuXTtt3LhRP/jBD+R2u5WVldXgemtqavT1r39d27dv1/Tp0/XQQw/ps88+k8Ph0OHDh9WrVy8ZhqE777xTO3fu1KxZszRkyBBt3bpVjzzyiD7++GOtXLnSa53vvPOOfv/73+sHP/iBoqKi9MILLygzM1OnT59W586dNWbMGCUlJWndunW6++67vZZdt26devXqpZSUFPPfRAAAUK9r7WdI0o4dO/Sb3/xG2dnZuv7669WjR49613XmzBmNGDFCFRUVmjNnjvr06aOPP/5Yv/3tb3Xx4kVFRETo4sWLGj16tD7++GN973vfU7du3bRnzx7l5ubq7Nmzev755wOTOBCqDAB+tXTpUkOSceedd3q1/+AHPzAkGX/9618NwzCMixcv1lk2PT3d6Nmzp1fb6NGjjdGjR3umf/nLXxqSjOeee67O8m632zAMw9iwYYMhyXjiiSe85n/jG98wLBaLceLECU+bJCMiIsKr7a9//ashyXjxxRc9bbm5uYbNZjMqKio8befOnTPatWtnLF26tKG3AwAAmKix+xmSjLCwMOPIkSN11iHJ63f3Aw88YISFhRn79++v07d232L58uVGx44djb///e9e8x977DEjPDzcOH36dHNTA1o0Th0HAuTLR6XnzZsnSdq8ebMkqUOHDp55lZWV+uSTTzR69Gj94x//UGVlZYPr/d3vfqfrr7/es74vslgsnm2Eh4frhz/8odf8hx9+WIZh6I9//KNXe2pqqnr16uWZHjRokOx2u/7xj3942h544AE5nU799re/9bS9/vrrunLlir797W83GC8AADDftfYzJGn06NHq16/fVdfjdru1YcMGTZkyRcOHD68zv3bfYv369br99tt13XXX6ZNPPvG8UlNTVVNTo927dzc3JaBF49RxIEBuuukmr+levXopLCxMH3zwgSTpz3/+s5YuXaqSkhJdvHjRq29lZaWio6PrXe/JkyfVu3fvq97E5MMPP1RiYqKioqK82vv27euZ/0XdunWrs47rrrtO//73vz3Tffr00S233KJ169Zp1qxZkj4/bXzUqFG68cYbG4wFAACY71r7GZKUnJx8zfX861//UlVVlQYMGHDVfsePH9ehQ4fUpUuXeuefO3fu2kEDrRiFNhAktX8Rlj4vlsePH68+ffroueeeU1JSkiIiIrR582atXLky4DcVCQ8Pr7fd+NKN0x544AE99NBD+uijj+R0OrV371799Kc/DUSIAADgKr64n1Hri2fPNZfb7daECRP06KOP1jv/5ptvNm1bQEtEoQ0EyPHjx73+knzixAm53W716NFDGzdulNPp1B/+8Aevo8k7d+685np79eqlffv2yeVyyWq11tune/fu2rZtmz777DOvo9p/+9vfPPObYvr06crJydGvf/1r/ec//5HVatW3vvWtJq0LAAA03dX2M3zRpUsX2e12HT58+Kr9evXqpQsXLig1NbUp4QKtHtdoAwFSWFjoNf3iiy9KkjIyMjxHkL94xLiyslJr1qy55nozMzP1ySef1HskuXZ9kyZNUk1NTZ0+K1eulMViUUZGhm/J/P9df/31ysjI0K9+9SutW7dOEydO1PXXX9+kdQEAgKa72n6GL8LCwjR16lRt3LhRBw4cqDO/dt/innvuUUlJibZu3VqnT0VFha5cueLTdoHWhiPaQICcOnVKd955pyZOnKiSkhL96le/0n333afBgwerffv2ioiI0JQpU/S9731PFy5c0C9+8QvFxcXp7NmzV13vAw88oFdffVU5OTl69913dfvtt6u6ulrbtm3TD37wA911112aMmWKxo4dqx//+Mf64IMPNHjwYBUXF+vNN9/U/PnzvW585qsHHnhA3/jGNyRJy5cvb/J6AABA011tP8NXTz31lIqLizV69GjNmTNHffv21dmzZ7V+/Xq98847iomJ0SOPPKI//OEP+vrXv64HH3xQw4YNU3V1td577z399re/1QcffMAf39GmUWgDAfL6669ryZIleuyxx9SuXTtlZ2frmWeekST17t1bv/3tb7Vo0SL96Ec/UkJCgubOnasuXbrou9/97lXXGx4ers2bN+vJJ59UUVGRfve736lz58667bbbNHDgQEmf/3X6D3/4g5YsWaLXX39da9asUY8ePfTMM8/o4YcfblZeU6ZM0XXXXSe3260777yzWesCAABNc7X9DF995Stf0b59+7R48WKtW7dOVVVV+spXvqKMjAxFRkZKkiIjI7Vr1y499dRTWr9+vV599VXZ7XbdfPPNys/Pb/AmrkBbYTG+fHcjAPDBlStXlJiYqClTpujll18OdjgAALQpeXl5ys/P17/+9S+OIAMhhGu0ATTLhg0b9K9//UsPPPBAsEMBAAAAQgKnjgNokn379unQoUNavny5hg4dqtGjRwc7JAAAACAkcEQbQJOsWrVKc+fOVVxcnF599dVghwMAAACEDK7RBgAAAADARBzRBgAAAADA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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"Histogram plotted for skewness check.\")\n", "plt.figure(figsize=(10, 5))\n", "df[numeric_cols].hist(figsize=(12, 8))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Transformed Skewed Features:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area_typeavailabilitylocationsizesocietytotal_sqftbathbalconyprice
032286449-0.614608-0.541529-0.706130-1.110727
12406492661.4093251.6306291.7641380.759643
204026762900.221721-0.5415291.764138-0.382904
334017362360.3586140.607827-0.7061300.375381
43401614290-0.263712-0.541529-0.706130-0.709728
\n", "
" ], "text/plain": [ " area_type availability location size society total_sqft bath \\\n", "0 3 22 86 4 49 -0.614608 -0.541529 \n", "1 2 40 64 9 266 1.409325 1.630629 \n", "2 0 40 267 6 290 0.221721 -0.541529 \n", "3 3 40 173 6 236 0.358614 0.607827 \n", "4 3 40 161 4 290 -0.263712 -0.541529 \n", "\n", " balcony price \n", "0 -0.706130 -1.110727 \n", "1 1.764138 0.759643 \n", "2 1.764138 -0.382904 \n", "3 -0.706130 0.375381 \n", "4 -0.706130 -0.709728 " ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[numeric_cols] = PowerTransformer().fit_transform(df[numeric_cols])\n", "print(\"Transformed Skewed Features:\")\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "New Feature Added:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area_typeavailabilitylocationsizesocietytotal_sqftbathbalconypricesqft per lakh
032286449-0.614608-0.541529-0.706130-1.1107270.682662
12406492661.4093251.6306291.7641380.7596431.070584
204026762900.221721-0.5415291.764138-0.3829040.084898
334017362360.3586140.607827-0.7061300.3753810.134617
43401614290-0.263712-0.541529-0.706130-0.7097280.187163
\n", "
" ], "text/plain": [ " area_type availability location size society total_sqft bath \\\n", "0 3 22 86 4 49 -0.614608 -0.541529 \n", "1 2 40 64 9 266 1.409325 1.630629 \n", "2 0 40 267 6 290 0.221721 -0.541529 \n", "3 3 40 173 6 236 0.358614 0.607827 \n", "4 3 40 161 4 290 -0.263712 -0.541529 \n", "\n", " balcony price sqft per lakh \n", "0 -0.706130 -1.110727 0.682662 \n", "1 1.764138 0.759643 1.070584 \n", "2 1.764138 -0.382904 0.084898 \n", "3 -0.706130 0.375381 0.134617 \n", "4 -0.706130 -0.709728 0.187163 " ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['sqft per lakh'] = abs(df['total_sqft'] * df['price'])\n", "print(\"New Feature Added:\")\n", "df.head()" ] } ], "metadata": { "kernelspec": { "display_name": "venv", "language": "python", "name": "venv" }, "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.12.8" } }, "nbformat": 4, "nbformat_minor": 2 }