diff --git a/notebooks/ana_model_experiment_recovered.ipynb b/notebooks/ana_model_experiment_recovered.ipynb new file mode 100644 index 0000000..8cffe99 --- /dev/null +++ b/notebooks/ana_model_experiment_recovered.ipynb @@ -0,0 +1,4229 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 45, + "id": "4f857d7f", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import seaborn as sns\n", + "import numpy as np\n", + "\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import LinearRegression, LassoCV\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.impute import SimpleImputer\n", + "from sklearn.model_selection import cross_val_score, cross_validate, train_test_split, RandomizedSearchCV\n", + "from sklearn.preprocessing import RobustScaler, OneHotEncoder, StandardScaler\n", + "from sklearn.metrics import mean_absolute_error, r2_score, mean_squared_error\n", + "from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor, RandomForestClassifier\n", + "from sklearn.compose import ColumnTransformer\n", + "from sklearn.ensemble import RandomForestClassifier, GradientBoostingRegressor\n", + "from sklearn.decomposition import PCA\n", + "from sklearn.cluster import KMeans\n", + "from scipy.stats import randint, uniform\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "b9a44662", + "metadata": {}, + "source": [ + "# Baseline Model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e6b9bdc1", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sales_agentaccountopportunity_statusmanagerregional_officesectorrevenueoffice_locationproductseriessales_pricedurationwonclose_value
0moses frasecancitycompleteddustin brinkmanncentralretail718.62united statesgtx plus basicgtx1096.0132.011054.0
1darcel schlechtisdomcompletedmelvin marxencentralmedical3178.24united statesgtxproNaNNaN137.014514.0
2darcel schlechtcancitycompletedmelvin marxencentralretail718.62united statesmg specialmg55.0133.0150.0
3moses frasecodehowcompleteddustin brinkmanncentralsoftware2714.90united statesgtx basicgtx550.0135.01588.0
4zane levyhatfancompletedsummer sewaldwestservices792.46united statesgtx basicgtx550.0128.01517.0
\n", + "
" + ], + "text/plain": [ + " sales_agent account opportunity_status manager \\\n", + "0 moses frase cancity completed dustin brinkmann \n", + "1 darcel schlecht isdom completed melvin marxen \n", + "2 darcel schlecht cancity completed melvin marxen \n", + "3 moses frase codehow completed dustin brinkmann \n", + "4 zane levy hatfan completed summer sewald \n", + "\n", + " regional_office sector revenue office_location product series \\\n", + "0 central retail 718.62 united states gtx plus basic gtx \n", + "1 central medical 3178.24 united states gtxpro NaN \n", + "2 central retail 718.62 united states mg special mg \n", + "3 central software 2714.90 united states gtx basic gtx \n", + "4 west services 792.46 united states gtx basic gtx \n", + "\n", + " sales_price duration won close_value \n", + "0 1096.0 132.0 1 1054.0 \n", + "1 NaN 137.0 1 4514.0 \n", + "2 55.0 133.0 1 50.0 \n", + "3 550.0 135.0 1 588.0 \n", + "4 550.0 128.0 1 517.0 " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('../data/processed/dataset.csv').copy()\n", + "df.head()\n" + ] + }, + { + "cell_type": "markdown", + "id": "691f5e34", + "metadata": {}, + "source": [ + "X : Client details (account, sector, revenue, office_location) + \n", + " Sale details (sales_agent, product, deal_stage, duration , sector)\n", + "\n", + "y: close_value" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "800b21ba", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['sales_agent', 'account', 'opportunity_status', 'manager',\n", + " 'regional_office', 'sector', 'revenue', 'office_location', 'product',\n", + " 'series', 'sales_price', 'duration', 'won', 'close_value'],\n", + " dtype='object')" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "40e2f8f9", + "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", + "
revenuesales_pricedurationwonclose_value
count6711.0000005564.0000006711.0000006711.06711.000000
mean2520.2127071876.39521947.9853971.01490.915512
std2627.8499222504.43179741.0576650.02320.670773
min4.54000055.0000001.0000001.00.000000
25%647.180000550.0000008.0000001.00.000000
50%1698.2000001096.00000045.0000001.0472.000000
75%3027.4600003393.00000085.0000001.03225.000000
max11698.03000026768.000000138.0000001.030288.000000
\n", + "
" + ], + "text/plain": [ + " revenue sales_price duration won close_value\n", + "count 6711.000000 5564.000000 6711.000000 6711.0 6711.000000\n", + "mean 2520.212707 1876.395219 47.985397 1.0 1490.915512\n", + "std 2627.849922 2504.431797 41.057665 0.0 2320.670773\n", + "min 4.540000 55.000000 1.000000 1.0 0.000000\n", + "25% 647.180000 550.000000 8.000000 1.0 0.000000\n", + "50% 1698.200000 1096.000000 45.000000 1.0 472.000000\n", + "75% 3027.460000 3393.000000 85.000000 1.0 3225.000000\n", + "max 11698.030000 26768.000000 138.000000 1.0 30288.000000" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "80fb626f", + "metadata": {}, + "source": [ + "## Data Preparation" + ] + }, + { + "cell_type": "markdown", + "id": "0daf185f", + "metadata": {}, + "source": [ + "### Duplicated" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c645f379", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(27)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.duplicated().sum()\n" + ] + }, + { + "cell_type": "markdown", + "id": "8850b520", + "metadata": {}, + "source": [ + "### Missing Values" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c15a6a2c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "series 0.170913\n", + "sales_price 0.170913\n", + "sales_agent 0.000000\n", + "account 0.000000\n", + "opportunity_status 0.000000\n", + "manager 0.000000\n", + "regional_office 0.000000\n", + "sector 0.000000\n", + "revenue 0.000000\n", + "office_location 0.000000\n", + "product 0.000000\n", + "duration 0.000000\n", + "won 0.000000\n", + "close_value 0.000000\n", + "dtype: float64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum().sort_values(ascending=False) / len(df)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2f0e71db", + "metadata": {}, + "outputs": [], + "source": [ + "df = df.dropna(subset=['close_value']).reset_index(drop=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9c4e1444", + "metadata": {}, + "outputs": [], + "source": [ + "X = df.drop(columns=['close_value'])\n", + "y = df['close_value']\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6890ee57", + "metadata": {}, + "outputs": [], + "source": [ + "num_feat = ['revenue', 'sales_price', 'won', 'duration']\n", + "cat_feat = ['account', 'sector', 'office_location', 'sales_agent',\n", + " 'product', 'opportunity_status', 'manager', 'regional_office', 'series']\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d08d7270", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2.52021271e+03 1.87639522e+03 1.00000000e+00 4.79853971e+01]\n", + "['hottechi' 'retail' 'united states' 'darcel schlecht' 'gtx basic'\n", + " 'completed' 'melvin marxen' 'central' 'gtx']\n" + ] + } + ], + "source": [ + "imputer_num = SimpleImputer(strategy='mean')\n", + "imputer_cat = SimpleImputer(strategy='most_frequent')\n", + "\n", + "imputer_num.fit(df[num_feat])\n", + "df[num_feat] = imputer_num.transform(df[num_feat])\n", + "\n", + "imputer_cat.fit(df[cat_feat])\n", + "df[cat_feat] = imputer_cat.transform(df[cat_feat])\n", + "\n", + "print(imputer_num.statistics_)\n", + "print(imputer_cat.statistics_)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "77fcdd68", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "sales_agent 0.0\n", + "account 0.0\n", + "opportunity_status 0.0\n", + "manager 0.0\n", + "regional_office 0.0\n", + "sector 0.0\n", + "revenue 0.0\n", + "office_location 0.0\n", + "product 0.0\n", + "series 0.0\n", + "sales_price 0.0\n", + "duration 0.0\n", + "won 0.0\n", + "close_value 0.0\n", + "dtype: float64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum().sort_values(ascending=False) / len(df)\n" + ] + }, + { + "cell_type": "markdown", + "id": "971787e4", + "metadata": {}, + "source": [ + "## Outliers" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a30c0c2b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for col in ['revenue', 'duration', 'sales_price', 'close_value']:\n", + " plt.figure(figsize=(3, 2))\n", + " sns.boxplot(data=df, x=col)\n", + " plt.title(f'Boxplot de {col}')\n", + " plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "173f8f49", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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27Yt2rdvjxUrVqBq1aoq+PD29jYeM23aNHz00UeYO3cuatSogfHjxyM6OhqHDx+Gs7OzOkaCk7i4OKxevRrZ2dl49tln8c9//hMLFixARRAR2QzxcXHFHhMYFIQDe/eUW5uIiIgqbIDyf//3fwgNDcXs2bON90kQkr/35IMPPsC4cePQo0cPdd8333yDgIAALFmyBH379sWRI0ewcuVK7NixA82bN1fHfPzxx+jatSvee+89BAcHw9pJcDJ23sZij5nS//5yaw8REVGFHuL5+eefVVDx+OOPw9/fH82aNcMXX3xh3H/69GnEx8erYR0DT09PtGzZElu2bFG35VKGdQzBiZDjbW1tsW3btkKfNzMzE6mpqSabpSQnp6BqQGCxmxxDRERUmVi0B+XUqVP45JNPMGrUKIwdO1b1grz00ktwdHTEwIEDVXAipMckP7lt2CeXEtzkZ29vDx8fH+MxBU2dOhVvvfUW9CAvL++2vSOvdI0ot/YQERGhsvegyIfzPffcgylTpqjeE8kbGTx4MD799NMyfd4xY8YgJSXFuMXGxpbp8xEREZEVBShSmdOwYUOT+xo0aIBz586p64GBgeoyISHB5Bi5bdgnl4mJiSb7c3JyVGWP4ZiCnJycVMVP/o2IiIj0w6IBilTwxMTEmNx37NgxhIeHGxNmJchYu3atcb/ki0huSevWrdVtuUxOTsauXbuMx6xbt071zkiuChEREVkfi+agjBw5Em3atFFDPH369MH27dvx+eefq03Y2NhgxIgRePvtt1GnTh1jmbFU5vTs2dPY4/Lwww8bh4akzHjYsGGqwqciVPAQERFVRhYNUFq0aIHFixernJBJkyapAETKimVeE4NXX30V165dU/kp0lPSrl07VVZsmANFzJ8/XwUlHTt2VNU7vXv3VnOnEBERkXWyaIAiHnnkEbUVRXpRJHiRrShSsVNRJmUjIiIiHUx1T0RERFQQAxQiIiLSHQYoREREpDsMUIiIiEh3GKAQERGR7jBAISIiIt1hgEJERES6wwCFiIiIdIcBChEREekOAxQiIiLSHQYoREREpDsMUIiIiEh3LL5YIJWfiMhmiI+LK/aYwKAgHNi7p9zaREREVBgGKJWIBCdj520s9pgp/e8vt/YQEREVhUM8REREpDsMUIiIiEh3GKAQERGR7jBAISIiIt1hgEJERES6wwCF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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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9JjcP3XqlHoNvY4dOxq+lu4fCTopKSnVvg4iujm2lBCRScgbvE6nu2khq7Ozs9F9acmQLpr3339fBRPZL60pEoLqgq2tbYXz1mq1dfJaRI0dW0qIqNa1aNFCvZnv2bPH8FhaWhpOnjxpuN+kSRNV76EnLRS5ubk3fe4//vgD9913H8aOHYtOnTqhefPmRs8rpPumbGtHZcLDw9VzlX9u6caxtrau0nUSUe1iSwkR1TrpUpkwYYIqdvX29oavry9eeeUVaDR/fQ6688478dFHH6miVAkQUq9RvlWiMq1atcL//vc/7Nq1C56enqo2JDk5Ge3atTMaNSOBSEbdyLlIN095L774Inr06KG6gh5++GFERUWp8/n4449r8SdBRNXBlhIiqhPSzdKnTx+MGDECgwYNQu/evdWombKjWmRUjBwzevRoVbwqxak38+qrr6Jr165qJI5MkiY1Hvfff7/RMfJc0tohQUVaZCqrN5HnkOLYlStXon379pg9ezbmzp1rVORKRPXLSle+U5eIiIjIBNhSQkRERGaBoYSIiIjMAkMJERERmQWGEiIiIjILDCVERERkFhhKiIiIyCwwlBAREZFZYCghIiIis8BQQkRERGaBoYSIiIjMAkMJERERwRz8fxNFoXMvKxBBAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiUAAAGKCAYAAADTzzFNAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR35JREFUeJzt3Qd4VFXawPE3vQChQ+hVqhQpIgqIgiBiYcFdu6ioK4uuigKiSFMXF1fQVYRVF3F3QcouWACR3gMEpENQeksIJQVCeu73vAdnvpkUCBCYm5n/73kuk5l75s65d4a575zznnP9LMuyBAAAwMP8PV0BAAAARVACAABsgaAEAADYAkEJAACwBYISAABgCwQlAADAFghKAACALRCUAAAAWyAoAQAAtkBQAqBIpaeny1/+8hf56aefPF0VAMUMQQlwhUaOHCl+fn7X5bU6d+5sFofly5eb1/7vf/8r15u+ru57QQYOHChTp06Vdu3aXZf6PPXUU1K7dm25nqZMmWKOw8GDB8WXOD53egtcCwQlgMtJxrGEhoZK1apVpXv37vL3v/9dzp49WySvc/z4cXNC37Jli3ijmTNnyrfffis//vijlClTxtPVAVDMBHq6AoCdjB49WurUqSOZmZkSFxdnfhG+8sorMm7cOPn++++lefPmzrLDhg2TN95447KDklGjRplf9i1btiz08xYuXCh2kZqaKoGBeb869NqeR48eNQFJzZo1PVI3AMUbQQngokePHtKmTRvn/aFDh8rSpUvl3nvvlfvvv192794tYWFhZp2emPM7ORel8+fPS3h4uAQHB4tdaCtSfrSFSbtuAOBK0X0DXMKdd94pb7/9thw6dEj+85//XDSnZNGiRdKhQwfTdVGyZElp2LChvPnmm2adtrq0bdvW/P300087u4q060hpzsiNN94omzZtkk6dOplgxPHc3DklDtnZ2aZMZGSklChRwgROR44ccSujrTKad5FbfttMS0sz+9WgQQMTfFSpUkV69+4t+/btu2hOyebNm01AFxERYfa7S5cusm7duny7yNasWWOCl4oVK5o6/+53v5OTJ09KYWjXkB4jrZvezpkzJ99yOTk58tFHH0nTpk1N2cqVK8sf//hHSUhIKNTrxMTEyB/+8AdTRw1C9X186623Lvm8zz77zLxmSEiI6f4bMGCAJCYmupX59ddfpU+f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ICgBAAC2QFACAABsgaAEAADYAkEJAACwBYISAABgCwQlAADAFghKAFy1gwcPip+fn3OK7+JOL/6n+5P7GiIAri2CEgAAYAsEJQAAwBYISgAUml4JdOzYseay6SEhIVKzZk1577338i27YsUKufnmm005vWLrG2+8IVlZWc71//3vf6VZs2bmUujly5eXrl27SkpKinP9l19+KY0bN5bQ0FBp1KiRfPbZZ4Wq46233ipDhgxxe+zkyZPm6ql65WD173//W9q0aSOlSpUyV2t+9NFH3a6amtvIkSOlZcuWbo999NFHUrt2bbfHrrTOAC4gKAFQaEOHDpX3339f3n77bdm1a5dMmzZNKleunKfcsWPH5J577pG2bdvK1q1bZeLEifLPf/5T3n33XbM+NjZWHnnkEXnmmWdk9+7dJoejd+/e5lL1aurUqTJ8+HAT8Oj6v/zlL+Y1v/7660vW8bHHHpPp06c7t6VmzJghVatWlY4dO5r7mZmZ8s4775i6ffvttyYn5qmnnrqqY3M1dQbwm6u+pB8An5CcnGyuxPrFF1/kWaeXUdevk82bN5v7b775ptWwYUNzJWQHvfy5XtU3Ozvb2rRpkymvVyvNT7169axp06a5PfbOO++4XYK9IPHx8VZgYKC1cuVK52P6vCFDhhT4nOjoaFMfx5WGHVcyTkhIMPdHjBhhtWjRwu0548ePN1drLYo6A7iAlhIAhaK//tPT06VLly6FKtu+fXszgsXhtttuk3PnzsnRo0elRYsWZjvaffP73/9evvjiC0lISDDltAtn37590q9fPylZsqRz0VYWffxSKlasKN26dTMtF+rAgQMSFRVlWlAcNm3aJPfdd5/pftIunNtvv908fvjw4Ss6NldbZwAXBP52CwAXpbkfRSUgIEAWLVoka9eulYULF8onn3wib731lqxfv17Cw8NNGQ1U2rVrl+d5haEByJ///GezXe1i0uBHF0cA0b17d7No4KJBjAYjej8jIyPf7fn7+7t1Bzm6gBw02LraOgMgpwRAId1www0mMFmyZMkly2qyp7ZOuJ7I16xZY1olqlevbu5rK4q2nowaNUo2b94swcHBMmfOHJOjovkf+/fvNwm1rkudOnUKVdcHHnhA0tLSZMGCBSYocW0liYmJkdOnT5vcGM0x0YTUiyW5Kg1c4uLi3PbHdU6WoqgzAFpKABSSjijRUS2DBw82AYQGFDqqZefOnXm6dP70pz+Z0SkvvfSSvPjii7Jnzx4ZMWKEDBw40LQ6aIuIBjfazVKpUiVzX7elwYzSQEVbOkqXLi1333236TbauHGj6eLRbVxKiRIlpFevXibRVLuSNKnWQbtstP7aivLCCy/Ijh07TNLrxXTu3NnUT0cePfjggybY+fHHHyUiIsJZ5mrrDIBEVwCXQZNU3333XZPgGRQUZNWsWdP6y1/+kifRVS1fvtxq27atFRwcbEVGRppE08zMTLNu165dVvfu3a2KFSua5NkGDRpYn3zyidtrTZ061WrZsqV5ftmyZa1OnTpZs2fPLnRd58+fb+qkz8tNE1Jr165tXlsTUb///nu3+udOdFUTJ060atSoYZUoUcJ68sknrffee88t0bUo6gz4Oj/9x9OBEQAAADklAADAFghKABQrOimZ67Bb16VHjx6erh6Aq0D3DYBi5cyZM2bJj44Oqlat2nWvE4CiQVACAABsge4bAABgCwQlAADAFghKAACALRCUAAAAWyAoAQAAtkBQAgAAbIGgBAAA2AJBCQAAEDv4P70LeTE1qC4bAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for col in ['revenue', 'duration', 'sales_price', 'close_value']:\n", + " plt.figure(figsize=(6, 4))\n", + " sns.histplot(df[col], kde=True)\n", + " plt.title(f'Distribución de {col}')\n", + " plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "39c47e10", + "metadata": {}, + "source": [ + "• Decision: I won't remove outliers because they make sense from a business perspective\n", + "\n", + "• Decision: Because features like revenue and close_value contain true extreme values (not noise), and the distribution is highly skewed.\n", + "\n", + "• Decision: I won't use StandardScaler because there is skewness and potential outliers\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "02018244", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "close_value 1.000000\n", + "sales_price 0.606111\n", + "duration 0.049888\n", + "revenue 0.028136\n", + "won NaN\n", + "Name: close_value, dtype: float64\n" + ] + } + ], + "source": [ + "correlations = df.corr(numeric_only=True)[\n", + " 'close_value'].sort_values(ascending=False)\n", + "print(correlations.head(10))\n" + ] + }, + { + "cell_type": "markdown", + "id": "93a857af", + "metadata": {}, + "source": [ + "## Feature Scaling\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7812dcd1", + "metadata": {}, + "outputs": [], + "source": [ + "scaler = RobustScaler()\n", + "\n", + "scaler.fit(df[num_feat])\n", + "df[num_feat] = scaler.transform(df[num_feat])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "6e8691c8", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sales_agentaccountopportunity_statusmanagerregional_officesectorrevenueoffice_locationproductseriessales_pricedurationwonclose_value
0moses frasecancitycompleteddustin brinkmanncentralretail-0.411540united statesgtx plus basicgtx0.0000001.1298700.01054.0
1darcel schlechtisdomcompletedmelvin marxencentralmedical0.621792united statesgtxprogtx0.2744971.1948050.04514.0
2darcel schlechtcancitycompletedmelvin marxencentralretail-0.411540united statesmg specialmg-0.3661631.1428570.050.0
3moses frasecodehowcompleteddustin brinkmanncentralsoftware0.427135united statesgtx basicgtx-0.1920511.1688310.0588.0
4zane levyhatfancompletedsummer sewaldwestservices-0.380518united statesgtx basicgtx-0.1920511.0779220.0517.0
\n", + "
" + ], + "text/plain": [ + " sales_agent account opportunity_status manager \\\n", + "0 moses frase cancity completed dustin brinkmann \n", + "1 darcel schlecht isdom completed melvin marxen \n", + "2 darcel schlecht cancity completed melvin marxen \n", + "3 moses frase codehow completed dustin brinkmann \n", + "4 zane levy hatfan completed summer sewald \n", + "\n", + " regional_office sector revenue office_location product series \\\n", + "0 central retail -0.411540 united states gtx plus basic gtx \n", + "1 central medical 0.621792 united states gtxpro gtx \n", + "2 central retail -0.411540 united states mg special mg \n", + "3 central software 0.427135 united states gtx basic gtx \n", + "4 west services -0.380518 united states gtx basic gtx \n", + "\n", + " sales_price duration won close_value \n", + "0 0.000000 1.129870 0.0 1054.0 \n", + "1 0.274497 1.194805 0.0 4514.0 \n", + "2 -0.366163 1.142857 0.0 50.0 \n", + "3 -0.192051 1.168831 0.0 588.0 \n", + "4 -0.192051 1.077922 0.0 517.0 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()\n" + ] + }, + { + "cell_type": "markdown", + "id": "3d694e47", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "## Balancing" + ] + }, + { + "cell_type": "markdown", + "id": "c1f9dd37", + "metadata": {}, + "source": [ + "## Encoding\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "ca8a155d", + "metadata": {}, + "outputs": [], + "source": [ + "ohe = OneHotEncoder(drop='first', sparse_output=False, handle_unknown='ignore')\n", + "\n", + "ohe.fit(df[cat_feat])\n", + "\n", + "encoded_cat = ohe.transform(df[cat_feat])\n", + "\n", + "encoded_columns = ohe.get_feature_names_out(cat_feat)\n", + "\n", + "df_encoded_cat = pd.DataFrame(\n", + " encoded_cat, columns=encoded_columns, index=df.index)\n", + "\n", + "df_ohe = pd.concat([df.drop(columns=cat_feat), df_encoded_cat], axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "6ac821d2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "close_value 1.000000\n", + "sales_price 0.606111\n", + "product_gtx plus pro 0.310480\n", + "product_gtxpro 0.307140\n", + "series_gtx 0.110048\n", + "product_mg advanced 0.104734\n", + "sales_agent_darcel schlecht 0.076769\n", + "manager_rocco neubert 0.051993\n", + "duration 0.049888\n", + "sales_agent_elease gluck 0.047944\n", + "Name: close_value, dtype: float64\n" + ] + } + ], + "source": [ + "correlations = df_ohe.corr(numeric_only=True)[\n", + " 'close_value'].sort_values(ascending=False)\n", + "print(correlations.head(10))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "269b3abf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(6711, 156)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_ohe.shape\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "713421d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['revenue', 'sales_price', 'duration', 'won', 'close_value',\n", + " 'account_betasoloin', 'account_betatech', 'account_bioholding',\n", + " 'account_bioplex', 'account_blackzim',\n", + " ...\n", + " 'product_mg special', 'manager_celia rouche',\n", + " 'manager_dustin brinkmann', 'manager_melvin marxen',\n", + " 'manager_rocco neubert', 'manager_summer sewald',\n", + " 'regional_office_east', 'regional_office_west', 'series_gtx',\n", + " 'series_mg'],\n", + " dtype='object', length=156)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_ohe.columns\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "47cdf57c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[array(['acme corporation', 'betasoloin', 'betatech', 'bioholding',\n", + " 'bioplex', 'blackzim', 'bluth company', 'bubba gump', 'cancity',\n", + " 'cheers', 'codehow', 'condax', 'conecom', 'dalttechnology',\n", + " 'dambase', 'domzoom', 'doncon', 'donquadtech', 'dontechi',\n", + " 'donware', 'fasehatice', 'faxquote', 'finhigh', 'finjob',\n", + " 'funholding', 'ganjaflex', 'gekko & co',\n", + " 'genco pura olive oil company', 'globex corporation', 'gogozoom',\n", + " 'golddex', 'goodsilron', 'green-plus', 'groovestreet', 'hatfan',\n", + " 'hottechi', 'initech', 'inity', 'isdom', 'iselectrics', 'j-texon',\n", + " 'kan-code', 'kinnamplus', 'konex', 'konmatfix', 'labdrill',\n", + " 'lexiqvolax', 'massive dynamic', 'mathtouch', 'nam-zim', 'newex',\n", + " 'ontomedia', 'opentech', 'plexzap', 'plusstrip', 'plussunin',\n", + " 'rangreen', 'rantouch', 'ron-tech', 'rundofase', 'scotfind',\n", + " 'scottech', 'silis', 'singletechno', 'sonron', 'stanredtax',\n", + " 'statholdings', 'streethex', 'sumace', 'sunnamplex',\n", + " 'the new york inquirer', 'toughzap', 'treequote',\n", + " 'umbrella corporation', 'vehement capital partners', 'warephase',\n", + " 'xx-holding', 'xx-zobam', 'y-corporation', 'yearin', 'zathunicon',\n", + " 'zencorporation', 'zoomit', 'zotware', 'zumgoity'], dtype=object),\n", + " array(['employment', 'entertainment', 'finance', 'marketing', 'medical',\n", + " 'retail', 'services', 'software', 'technolgy',\n", + " 'telecommunications'], dtype=object),\n", + " array(['belgium', 'brazil', 'china', 'germany', 'italy', 'japan',\n", + " 'jordan', 'kenya', 'korea', 'norway', 'panama', 'philipines',\n", + " 'poland', 'romania', 'united states'], dtype=object),\n", + " array(['anna snelling', 'boris faz', 'cassey cress', 'cecily lampkin',\n", + " 'corliss cosme', 'daniell hammack', 'darcel schlecht',\n", + " 'donn cantrell', 'elease gluck', 'garret kinder',\n", + " 'gladys colclough', 'hayden neloms', 'james ascencio',\n", + " 'jonathan berthelot', 'kami bicknell', 'kary hendrixson',\n", + " 'lajuana vencill', 'markita hansen', 'marty freudenburg',\n", + " 'maureen marcano', 'moses frase', 'niesha huffines',\n", + " 'reed clapper', 'rosalina dieter', 'rosie papadopoulos',\n", + " 'versie hillebrand', 'vicki laflamme', 'violet mclelland',\n", + " 'wilburn farren', 'zane levy'], dtype=object),\n", + " array(['gtk 500', 'gtx basic', 'gtx plus basic', 'gtx plus pro', 'gtxpro',\n", + " 'mg advanced', 'mg special'], dtype=object),\n", + " array(['completed'], dtype=object),\n", + " array(['cara losch', 'celia rouche', 'dustin brinkmann', 'melvin marxen',\n", + " 'rocco neubert', 'summer sewald'], dtype=object),\n", + " array(['central', 'east', 'west'], dtype=object),\n", + " array(['gtk', 'gtx', 'mg'], dtype=object)]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ohe.categories_\n" + ] + }, + { + "cell_type": "markdown", + "id": "bb07b46a", + "metadata": {}, + "source": [ + "## Model\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "a61765e8", + "metadata": {}, + "outputs": [], + "source": [ + "X_ohe = df_ohe.drop(columns=['close_value'])\n", + "y = df_ohe['close_value']\n" + ] + }, + { + "cell_type": "markdown", + "id": "d99a24ca", + "metadata": {}, + "source": [ + "### Linear Regression Model" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "f892b72c", + "metadata": {}, + "outputs": [], + "source": [ + "model_LR = LinearRegression()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "e983700c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.44958901573270466)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X_ohe, y, test_size=0.3, random_state=42)\n", + "cv_results_LR = cross_validate(model_LR, X_train, y_train, cv=5)\n", + "cv_results_LR['test_score'].mean()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "4bf477b3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_LR.fit(X_train, y_train)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "966e81a6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R2 Score: 0.38665612018832163\n", + "MAE: 1166.3326991775884\n", + "RMSE: 3184560.780826366\n" + ] + } + ], + "source": [ + "y_pred = model_LR.predict(X_test)\n", + "\n", + "print(\"R2 Score:\", r2_score(y_test, y_pred))\n", + "print(\"MAE:\", mean_absolute_error(y_test, y_pred))\n", + "print(\"RMSE:\", mean_squared_error(y_test, y_pred))\n" + ] + }, + { + "cell_type": "markdown", + "id": "54496b3e", + "metadata": {}, + "source": [ + "### Random Forest Regressor Model" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "444c2710", + "metadata": {}, + "outputs": [], + "source": [ + "model_RFR = RandomForestRegressor(random_state=42)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "5ebcafd8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.3853464489327548)" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X_ohe, y, test_size=0.3, random_state=42)\n", + "cv_results_LR = cross_validate(model_RFR, X_train, y_train, cv=5)\n", + "cv_results_LR['test_score'].mean()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "3b33638d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
RandomForestRegressor(random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "RandomForestRegressor(random_state=42)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_RFR.fit(X_train, y_train)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "febb66c9", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred_RFR = model_RFR.predict(X_test)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "848f0b16", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R2 Score: 0.35371563997772604\n", + "MAE: 1100.6997005899184\n", + "RMSE: 3355592.0160486996\n" + ] + } + ], + "source": [ + "print(\"R2 Score:\", r2_score(y_test, y_pred_RFR))\n", + "print(\"MAE:\", mean_absolute_error(y_test, y_pred_RFR))\n", + "print(\"RMSE:\", mean_squared_error(y_test, y_pred_RFR))\n" + ] + }, + { + "cell_type": "markdown", + "id": "c1a07752", + "metadata": {}, + "source": [ + "### Gradient Boosting Regressor" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "3d14ffaf", + "metadata": {}, + "outputs": [], + "source": [ + "model_GBR = GradientBoostingRegressor(random_state=42)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "5ce7a70e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.4421111197097839)" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X_ohe, y, test_size=0.3, random_state=42)\n", + "cv_results_GBR = cross_validate(model_GBR, X_train, y_train, cv=5)\n", + "cv_results_GBR['test_score'].mean()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "8e6e32c1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R2 Score: 0.40240106312970014\n", + "MAE: 1115.4818254454212\n", + "RMSE: 1761.4797756239122\n" + ] + } + ], + "source": [ + "model_GBR.fit(X_train, y_train)\n", + "\n", + "y_pred_GBR = model_GBR.predict(X_test)\n", + "\n", + "print(\"R2 Score:\", r2_score(y_test, y_pred_GBR))\n", + "print(\"MAE:\", mean_absolute_error(y_test, y_pred_GBR))\n", + "print(\"RMSE:\", np.sqrt(mean_squared_error(y_test, y_pred_GBR)))\n" + ] + }, + { + "cell_type": "markdown", + "id": "701a63c5", + "metadata": {}, + "source": [ + "Summary \n", + "\n", + "| Model | CV R² (Train) | Test R² | Test MAE | Test RMSE |\n", + "|--------------------------|---------------|---------|----------|-----------|\n", + "| **Linear Regression** | 0.45 | 0.39 | 1166.33 | 1783.44 |\n", + "| **Random Forest Regressor** | 0.39 | 0.35 | **1100.70** | 1832.49 |\n", + "| **Gradient Boosting Regressor** | **0.44** | **0.40**| 1115.48 | **1761.48** |\n", + "\n", + " **Linear Regression** provides a solid baseline with a CV R² of 0.45 but shows the highest MAE among all models.\n", + " \n", + " **Random Forest Regressor** achieves the **lowest MAE**, but its lower R² suggests it may not generalize as well as the other models.\n", + " \n", + " **Gradient Boosting Regressor** shows the **best overall performance**, with strong R² scores in both CV and test sets, and the lowest RMSE, making it the most promising model so far." + ] + }, + { + "cell_type": "markdown", + "id": "0d6e0122", + "metadata": {}, + "source": [ + "# Pipeline\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "369a0c51", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train CV R2: 0.6118\n", + "Test CV R2: 0.4421\n" + ] + } + ], + "source": [ + "X = df.drop(columns=['close_value' ])\n", + "y = df['close_value']\n", + "\n", + "num_feat = ['revenue', 'sales_price', 'duration' , 'won']\n", + "cat_feat = ['account', 'sector', 'office_location', 'sales_agent',\n", + " 'product', 'manager' ,'opportunity_status', 'regional_office', 'series']\n", + "\n", + "num_transformer = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='mean')),\n", + " ('scaler', RobustScaler())\n", + "])\n", + "\n", + "cat_transformer = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='most_frequent')),\n", + " ('encoder', OneHotEncoder(drop='first', sparse_output=False, handle_unknown='ignore'))\n", + "])\n", + "\n", + "\n", + "preprocessor = ColumnTransformer([\n", + " ('num', num_transformer, num_feat),\n", + " ('cat', cat_transformer, cat_feat)\n", + "])\n", + "\n", + "pipeline = Pipeline([\n", + " ('preprocessor', preprocessor),\n", + " ('model', GradientBoostingRegressor(random_state=42))\n", + "])\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, test_size=0.3, random_state=42)\n", + "\n", + "cv_results = cross_validate(\n", + " pipeline, X_train, y_train, cv=5, scoring='r2', return_train_score=True)\n", + "\n", + "print(f\"Train CV R2: {cv_results['train_score'].mean():.4f}\")\n", + "print(f\"Test CV R2: {cv_results['test_score'].mean():.4f}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "38468e02", + "metadata": {}, + "outputs": [], + "source": [ + "base_train_r2 = cv_results['train_score'].mean()\n", + "base_test_r2 = cv_results['test_score'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "90157941", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R2 Score: 0.40240106312970014\n", + "MAE: 1115.4818254454212\n", + "RMSE: 3102810.9999320684\n" + ] + } + ], + "source": [ + "pipeline.fit(X_train, y_train) \n", + "\n", + "y_pred = pipeline.predict(X_test)\n", + "\n", + "print('R2 Score:', r2_score(y_test, y_pred))\n", + "print('MAE:', mean_absolute_error(y_test, y_pred))\n", + "print('RMSE:', mean_squared_error(y_test, y_pred))" + ] + }, + { + "cell_type": "markdown", + "id": "0ddb9b41", + "metadata": {}, + "source": [ + "## Feature Importance Extraction using Random Forest\n", + "\n", + "To identify which variables most influence the target (`close_value`), we trained a Random Forest Regressor and extracted feature importances from its fitted model.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "319748ed", + "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", + "
featureimportance
1sales_price0.455989
2duration0.134988
0revenue0.073543
154series_mg0.014456
153series_gtx0.011316
127sales_agent_markita hansen0.010077
144product_mg advanced0.008713
118sales_agent_elease gluck0.008474
133sales_agent_rosalina dieter0.005677
117sales_agent_donn cantrell0.005458
\n", + "
" + ], + "text/plain": [ + " feature importance\n", + "1 sales_price 0.455989\n", + "2 duration 0.134988\n", + "0 revenue 0.073543\n", + "154 series_mg 0.014456\n", + "153 series_gtx 0.011316\n", + "127 sales_agent_markita hansen 0.010077\n", + "144 product_mg advanced 0.008713\n", + "118 sales_agent_elease gluck 0.008474\n", + "133 sales_agent_rosalina dieter 0.005677\n", + "117 sales_agent_donn cantrell 0.005458" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pipeline_rf = Pipeline([\n", + " ('preprocessor', preprocessor),\n", + " ('model', RandomForestRegressor(random_state=42))\n", + "])\n", + "\n", + "pipeline_rf.fit(X_train, y_train)\n", + "\n", + "importances = pipeline_rf.named_steps['model'].feature_importances_\n", + "features = pipeline_rf.named_steps['preprocessor'].transform(X_train).shape[1]\n", + "\n", + "ohe = pipeline_rf.named_steps['preprocessor'].named_transformers_['cat'].named_steps['encoder']\n", + "encoded_cols = ohe.get_feature_names_out(cat_feat)\n", + "all_features = np.concatenate([num_feat, encoded_cols])\n", + "\n", + "feature_importance_df = pd.DataFrame({\n", + " 'feature': all_features,\n", + " 'importance': importances\n", + "}).sort_values(by='importance', ascending=False)\n", + "\n", + "feature_importance_df.head(10)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "91d0126a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.barplot(\n", + " x=\"importance\",\n", + " y=\"feature\",\n", + " data=feature_importance_df.head(10),\n", + " hue=\"feature\",\n", + " dodge=False,\n", + " palette=\"viridis\",\n", + " legend=False\n", + ")\n", + "plt.title(\"Top 10 Feature Importances (Random Forest)\")\n", + "plt.xlabel(\"Importance\")\n", + "plt.ylabel(\"Feature\")\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "078d826c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Numerical: ['revenue', 'sales_price', 'duration']\n", + "Categorical: ['sales_agent', 'product', 'series']\n" + ] + } + ], + "source": [ + "top_n = 10\n", + "\n", + "top_features = feature_importance_df['feature'].head(top_n).tolist()\n", + "\n", + "new_num_feat = [feat for feat in num_feat if feat in top_features]\n", + "new_cat_feat = [feat for feat in cat_feat if any(feat in name for name in top_features)]\n", + "\n", + "print(\"Numerical:\", new_num_feat)\n", + "print(\"Categorical:\", new_cat_feat)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "986b7fe6", + "metadata": {}, + "outputs": [], + "source": [ + "new_num_transformer = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='mean')),\n", + " ('scaler', RobustScaler())\n", + "])\n", + "\n", + "new_cat_transformer = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='most_frequent')),\n", + " ('encoder', OneHotEncoder(drop='first', sparse_output=False, handle_unknown='ignore'))\n", + "])\n", + "\n", + "new_preprocessor = ColumnTransformer([\n", + " ('num', new_num_transformer, new_num_feat),\n", + " ('cat', new_cat_transformer, new_cat_feat)\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "ef32d776", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train CV R2 (reduced): 0.6098\n", + "Test CV R2 (reduced): 0.4486\n", + "R2 (reduced): 0.4063642339889567\n", + "MAE (reduced): 1111.1478243839083\n", + "RMSE (reduced): 3082233.704060171\n" + ] + } + ], + "source": [ + "reduced_pipeline = Pipeline([\n", + " ('preprocessor', new_preprocessor),\n", + " ('model', GradientBoostingRegressor(random_state=42))\n", + "])\n", + "\n", + "reduced_cv_results = cross_validate(\n", + " reduced_pipeline, X_train, y_train, cv=5, scoring='r2', return_train_score=True)\n", + "\n", + "print(f\"Train CV R2 (reduced): {reduced_cv_results['train_score'].mean():.4f}\")\n", + "print(f\"Test CV R2 (reduced): {reduced_cv_results['test_score'].mean():.4f}\")\n", + "\n", + "\n", + "reduced_pipeline.fit(X_train, y_train)\n", + "\n", + "\n", + "reduced_y_pred = reduced_pipeline.predict(X_test)\n", + "print(\"R2 (reduced):\", r2_score(y_test, reduced_y_pred))\n", + "print(\"MAE (reduced):\", mean_absolute_error(y_test, reduced_y_pred))\n", + "print(\"RMSE (reduced):\", mean_squared_error(y_test, reduced_y_pred))" + ] + }, + { + "cell_type": "markdown", + "id": "e81f7dec", + "metadata": {}, + "source": [ + "### Model Comparison: Full vs. Top 10 Features\n", + "\n", + "| Metric | Full Model | Reduced Model (Top 10) |\n", + "|-----------------|------------|-------------------------|\n", + "| Train CV R² | 0.6118 | 0.6098 |\n", + "| Test CV R² | 0.4421 | 0.4486 ✅ |\n", + "| Test R² | 0.4024 | 0.4064 ✅ |\n", + "| MAE | 1115.48 | 1111.15 ✅ |\n", + "| RMSE | 3,102,811 | 3,082,234 ✅ |\n", + "\n", + "The reduced model with only the top 10 most important features achieves nearly identical (and slightly better) performance compared to the full model. This simplifies the model while maintaining predictive power.\n" + ] + }, + { + "cell_type": "markdown", + "id": "0fc523f2", + "metadata": {}, + "source": [ + "## Feature Selection via Lasso Regression\n", + "\n", + "To further reduce model complexity and enhance interpretability, we applied Lasso Regression (L1 regularization), which automatically selects the most relevant features by shrinking the less important coefficients to zero.\n", + "\n", + "We used `LassoCV` with 5-fold cross-validation to automatically tune the regularization strength (`alpha`). The pipeline was trained using the same features and preprocessing steps as in the full model.\n", + "\n", + "Once trained, we extracted the model coefficients to identify which features were retained (i.e., non-zero weights). Only a small subset of variables carried predictive power, confirming that many of the original features can be safely discarded.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "f2808139", + "metadata": {}, + "outputs": [], + "source": [ + "# Lasso pipeline\n", + "pipeline_lasso = Pipeline([\n", + " ('preprocessor', preprocessor),\n", + " ('model', LassoCV(cv=5, random_state=42))\n", + "])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "757db0aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train CV R²: 0.4907\n", + "Test CV R²: 0.4745\n", + "R2 (Test): 0.40372387005860577\n", + "MAE: 1135.248479377936\n", + "RMSE: 3095942.815207226\n" + ] + } + ], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, test_size=0.3, random_state=42)\n", + "\n", + "cv_results_lasso = cross_validate(\n", + " pipeline_lasso, X_train, y_train, cv=5, scoring='r2', return_train_score=True)\n", + "\n", + "pipeline_lasso.fit(X_train, y_train)\n", + "\n", + "y_pred_lasso = pipeline_lasso.predict(X_test)\n", + "\n", + "print(f\"Train CV R²: {cv_results_lasso['train_score'].mean():.4f}\")\n", + "print(f\"Test CV R²: {cv_results_lasso['test_score'].mean():.4f}\")\n", + "print(\"R2 (Test):\", r2_score(y_test, y_pred_lasso))\n", + "print(\"MAE:\", mean_absolute_error(y_test, y_pred_lasso))\n", + "print(\"RMSE:\", mean_squared_error(y_test, y_pred_lasso))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "b4a1cd93", + "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", + "
featurecoef
143product_gtxpro1888.106410
1sales_price1795.884019
2duration253.367709
152regional_office_west72.462102
154series_mg-17.307466
144product_mg advanced-14.494283
0revenue-10.600806
\n", + "
" + ], + "text/plain": [ + " feature coef\n", + "143 product_gtxpro 1888.106410\n", + "1 sales_price 1795.884019\n", + "2 duration 253.367709\n", + "152 regional_office_west 72.462102\n", + "154 series_mg -17.307466\n", + "144 product_mg advanced -14.494283\n", + "0 revenue -10.600806" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lasso_model = pipeline_lasso.named_steps['model']\n", + "coef = lasso_model.coef_\n", + "\n", + "ohe = pipeline_lasso.named_steps['preprocessor'].named_transformers_['cat'].named_steps['encoder']\n", + "encoded_cat_cols = ohe.get_feature_names_out(cat_feat)\n", + "all_feature_names = np.concatenate([num_feat, encoded_cat_cols])\n", + "\n", + "coef_df = pd.DataFrame({\n", + " 'feature': all_feature_names,\n", + " 'coef': coef\n", + "}).sort_values(by='coef', key=abs, ascending=False)\n", + "\n", + "\n", + "selected_features = coef_df[coef_df['coef'] != 0]\n", + "selected_features.head(10)\n" + ] + }, + { + "cell_type": "markdown", + "id": "265400da", + "metadata": {}, + "source": [ + "### Model Performance – Lasso vs Others\n", + "\n", + "The Lasso regression model retained only 7 out of the many encoded features. Despite its simplicity, it achieved comparable performance to the full and reduced models:\n", + "\n", + "| Metric | Full Model | Reduced (Top 10) | Lasso (7 features) |\n", + "|--------------|------------|------------------|---------------------|\n", + "| Train CV R² | 0.6118 | 0.6098 | 0.4907 |\n", + "| Test CV R² | 0.4421 | 0.4486 ✅ | 0.4745 ✅ |\n", + "| Test R² | 0.4024 | 0.4064 ✅ | 0.4037 ✅ |\n", + "| MAE | 1115.48 | 1111.15 ✅ | 1135.25 |\n", + "| RMSE | 3,102,811 | 3,082,234 ✅ | 3,095,943 ✅ |\n", + "\n", + "While the Lasso model slightly increases MAE, it achieves the **highest CV R² on the test set**, suggesting better generalization and more robustness with fewer features. This validates the importance of **automatic feature selection**.\n" + ] + }, + { + "cell_type": "markdown", + "id": "069eda68", + "metadata": {}, + "source": [ + "## Final Model: Gradient Boosting with Lasso-Selected Features\n", + "\n", + "To combine interpretability and predictive power, we use the features selected by Lasso Regression and train a final model using Gradient Boosting Regressor.\n", + "\n", + "This hybrid approach leverages:\n", + "- Lasso's ability to filter out irrelevant features.\n", + "- Gradient Boosting's superior performance in non-linear regression tasks.\n", + "\n", + "This final pipeline aims to achieve strong generalization performance with a simplified, robust set of input variables.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "7c590696", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Numerical: ['revenue', 'sales_price', 'duration']\n", + "Categorical: ['product', 'regional_office', 'series']\n" + ] + } + ], + "source": [ + "lasso_coefs = pipeline_lasso.named_steps['model'].coef_\n", + "selected_indices = np.where(lasso_coefs != 0)[0]\n", + "selected_features = np.array(all_features)[selected_indices]\n", + "\n", + "final_num_feat = [feat for feat in num_feat if feat in selected_features]\n", + "final_cat_feat = [feat for feat in cat_feat if any(feat in name for name in selected_features)]\n", + "\n", + "print(\"Numerical:\", final_num_feat)\n", + "print(\"Categorical:\", final_cat_feat)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "d414af8d", + "metadata": {}, + "outputs": [], + "source": [ + "final_num_transformer = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='mean')),\n", + " ('scaler', RobustScaler())\n", + "])\n", + "\n", + "final_cat_transformer = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='most_frequent')),\n", + " ('encoder', OneHotEncoder(drop='first', sparse_output=False, handle_unknown='ignore'))\n", + "])\n", + "\n", + "final_preprocessor = ColumnTransformer([\n", + " ('num', final_num_transformer, final_num_feat),\n", + " ('cat', final_cat_transformer, final_cat_feat)\n", + "])\n", + "\n", + "final_pipeline = Pipeline([\n", + " ('preprocessor', final_preprocessor),\n", + " ('model', GradientBoostingRegressor(random_state=42))\n", + "])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "6b991b49", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train CV R2 (final): 0.6046\n", + "Test CV R2 (final): 0.4286\n", + "R2 (final): 0.38260999276225394\n", + "MAE (final): 1113.9172259408235\n", + "RMSE (final): 3205568.797926394\n" + ] + } + ], + "source": [ + "final_cv_results = cross_validate(\n", + " final_pipeline, X_train, y_train, cv=5, scoring='r2', return_train_score=True)\n", + "\n", + "print(f\"Train CV R2 (final): {final_cv_results['train_score'].mean():.4f}\")\n", + "print(f\"Test CV R2 (final): {final_cv_results['test_score'].mean():.4f}\")\n", + "\n", + "\n", + "final_pipeline.fit(X_train, y_train)\n", + "final_y_pred = final_pipeline.predict(X_test)\n", + "\n", + "print(\"R2 (final):\", r2_score(y_test, final_y_pred))\n", + "print(\"MAE (final):\", mean_absolute_error(y_test, final_y_pred))\n", + "print(\"RMSE (final):\", mean_squared_error(y_test, final_y_pred))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9dc5bc32", + "metadata": {}, + "source": [ + "### Model Performance Comparison\n", + "\n", + "| Metric | Full GBoost Model | Top 10 Features (RF) | Lasso Regression | Final Model (Lasso + GBoost) |\n", + "|-----------------|------------------:|----------------------:|------------------:|------------------------------:|\n", + "| Train CV R² | 0.6118 | 0.6098 | 0.4907 | 0.6046 |\n", + "| Test CV R² | 0.4421 | 0.4486 ✅ | 0.4745 ✅ | 0.4286 |\n", + "| Test R² | 0.4024 | 0.4064 ✅ | 0.4037 ✅ | 0.3826 |\n", + "| MAE | 1115.48 | 1111.15 ✅ | 1135.25 | 1113.92 ✅ |\n", + "| RMSE | 3,102,811 | 3,082,234 ✅ | 3,095,943 | 3,205,569 |\n", + "\n", + "\n", + "**Conclusion**\n", + "Although the final model using Lasso-selected features and Gradient Boosting achieves similar MAE and R² scores to the full model, it slightly underperforms compared to the top 10 features model derived from Random Forest. Interestingly, Lasso Regression alone provided the best CV R², showing its strength in variable selection.\n", + "\n", + "Therefore, depending on the objective:\n", + "\n", + "For maximum interpretability with minimal variables, Lasso is the best.\n", + "For best generalization performance, the model with top 10 features from Random Forest + Gradient Boosting remains the most promising.\n", + "Final takeaway: Feature selection helped reduce model complexity without sacrificing performance, which is valuable for deployment and scalability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98c22e8d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "b0e7c0ef", + "metadata": {}, + "source": [ + "### Pipeline after PCA and K-Means Clustering\n" + ] + }, + { + "cell_type": "markdown", + "id": "f0d1dfa2", + "metadata": {}, + "source": [ + "Before running this pipeline, make sure to execute section 1.9 (Clustering & Dimensionality Reduction)\n", + "\n", + "This ensures that the 'clusters' variable exists and has been assigned to df.\n", + "\n", + "The 'cluster' column is treated as a new categorical feature added to the dataset,based on the K-Means grouping performed on the PCA-reduced feature space.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e59a1592", + "metadata": {}, + "outputs": [], + "source": [ + "X_with_clusters = df.copy()\n", + "X_with_clusters['cluster'] = clusters.astype(str) # pásalo a string para que OneHotEncoder lo trate como categórica\n", + "\n", + "\n", + "cat_feat_extended = cat_feat + ['cluster']\n", + "\n", + "\n", + "preprocessor_new = ColumnTransformer([\n", + " ('num', num_transformer, num_feat),\n", + " ('cat', cat_transformer, cat_feat_extended)\n", + "])\n", + "\n", + "pipeline_with_clusters = Pipeline([\n", + " ('preprocessor', preprocessor_new),\n", + " ('model', GradientBoostingRegressor(random_state=42))\n", + "])\n", + "\n", + "\n", + "X = X_with_clusters.drop(columns='close_value')\n", + "y = X_with_clusters['close_value']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, test_size=0.3, random_state=42)\n", + "\n", + "cv_results_new = cross_validate(\n", + " pipeline_with_clusters, X_train, y_train, cv=5, scoring='r2', return_train_score=True)\n", + "\n", + "print(f\"Train CV R2 (with cluster): {cv_results_new['train_score'].mean():.4f}\")\n", + "print(f\"Test CV R2 (with cluster): {cv_results_new['test_score'].mean():.4f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bc6ff6b6", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_with_clusters.fit(X_train, y_train)\n", + "\n", + "\n", + "y_pred_cluster = pipeline_with_clusters.predict(X_test)\n", + "\n", + "\n", + "\n", + "print('R2 Score (with cluster):', r2_score(y_test, y_pred_cluster))\n", + "print('MAE (with cluster):', mean_absolute_error(y_test, y_pred_cluster))\n", + "print('RMSE (with cluster):', mean_squared_error(y_test, y_pred_cluster))\n" + ] + }, + { + "cell_type": "markdown", + "id": "d07454bd", + "metadata": {}, + "source": [ + "### Randomized Search" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95c978c8", + "metadata": {}, + "outputs": [], + "source": [ + "param = {\n", + " 'model__n_estimators': randint(50, 300),\n", + " 'model__max_depth': randint(2, 6),\n", + " 'model__learning_rate': uniform(0.01, 0.3),\n", + " 'model__subsample': uniform(0.5, 0.5)\n", + "}\n", + "\n", + "random_search = RandomizedSearchCV(\n", + " pipeline, \n", + " param_distributions=param,\n", + " n_iter=20,\n", + " scoring='r2', \n", + " cv=5, \n", + " random_state=42, \n", + " n_jobs=-1\n", + ")\n", + "\n", + "random_search.fit(X_train, y_train)\n", + "\n", + "print(\"Best R2 score:\", random_search.best_score_)\n", + "print(\"Best params:\", random_search.best_params_)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32d4a3f6", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred_best = random_search.predict(X_test)\n", + "\n", + "print(\"R2 Score (best model):\", r2_score(y_test, y_pred_best))\n", + "print(\"MAE (best model):\", mean_absolute_error(y_test, y_pred_best))\n", + "print(\"RMSE (best model):\", mean_squared_error(y_test, y_pred_best))" + ] + }, + { + "cell_type": "markdown", + "id": "07dfaaed", + "metadata": {}, + "source": [ + "## Target Engineering" + ] + }, + { + "cell_type": "markdown", + "id": "87c616ff", + "metadata": {}, + "source": [ + "### Logarithmic Transformation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7faddc3", + "metadata": {}, + "outputs": [], + "source": [ + "df['log_close_value'] = np.log1p(df['close_value'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c1ab5d3", + "metadata": {}, + "outputs": [], + "source": [ + "X_te_log = df.drop(columns=['close_value' ])\n", + "y_te_log = df['log_close_value']\n", + "\n", + "num_feat = ['revenue', 'sales_price', 'won', 'duration']\n", + "cat_feat = ['account', 'sector', 'office_location', 'sales_agent',\n", + " 'product', 'manager','opportunity_status', 'regional_office', 'series']\n", + "\n", + "num_transformer_te_log = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='mean')),\n", + " ('scaler', RobustScaler())\n", + "])\n", + "\n", + "cat_transformer_te_log = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='most_frequent')),\n", + " ('encoder', OneHotEncoder(drop='first', sparse_output=False, handle_unknown='ignore'))\n", + "])\n", + "\n", + "\n", + "preprocessor = ColumnTransformer([\n", + " ('num', num_transformer_te_log, num_feat),\n", + " ('cat', cat_transformer_te_log, cat_feat)\n", + "])\n", + "\n", + "pipeline_te_log = Pipeline([\n", + " ('preprocessor', preprocessor),\n", + " ('model', GradientBoostingRegressor(random_state=42))\n", + "])\n", + "\n", + "X_train_te_log, X_test_te_log, y_train_te_log, y_test_te_log = train_test_split(\n", + " X_te_log, y_te_log, test_size=0.3, random_state=42)\n", + "\n", + "\n", + "cv_results_te_log = cross_validate(\n", + " pipeline_te_log, X_train_te_log, y_train_te_log, cv=5, scoring='r2', return_train_score=True)\n", + "\n", + "print(f\"Train CV R2: {cv_results_te_log['train_score'].mean():.4f}\")\n", + "print(f\"Test CV R2: {cv_results_te_log['test_score'].mean():.4f}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "319d14df", + "metadata": {}, + "source": [ + "### Square Root Transformation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b507b973", + "metadata": {}, + "outputs": [], + "source": [ + "df['sqrt_close_value'] = np.sqrt(df['close_value'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51aad327", + "metadata": {}, + "outputs": [], + "source": [ + "X_te_sqrt = df.drop(columns=['close_value' ])\n", + "y_te_sqrt = df['sqrt_close_value']\n", + "\n", + "num_feat = ['revenue', 'sales_price', 'won', 'duration']\n", + "cat_feat = ['account', 'sector', 'office_location', 'sales_agent',\n", + " 'product', 'manager','opportunity_status', 'regional_office', 'series']\n", + "\n", + "num_transformer_te = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='mean')),\n", + " ('scaler', RobustScaler())\n", + "])\n", + "\n", + "cat_transformer_te = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='most_frequent')),\n", + " ('encoder', OneHotEncoder(drop='first', sparse_output=False, handle_unknown='ignore'))\n", + "])\n", + "\n", + "\n", + "preprocessor = ColumnTransformer([\n", + " ('num', num_transformer_te, num_feat),\n", + " ('cat', cat_transformer_te, cat_feat)\n", + "])\n", + "\n", + "pipeline_te = Pipeline([\n", + " ('preprocessor', preprocessor),\n", + " ('model', GradientBoostingRegressor(random_state=42))\n", + "])\n", + "\n", + "X_train_te_sqrt, X_test_te_sqrt, y_train_te_sqrt, y_test_te_sqrt = train_test_split(\n", + " X_te_sqrt, y_te_sqrt, test_size=0.3, random_state=42)\n", + "\n", + "\n", + "cv_results_te_sqrt = cross_validate(\n", + " pipeline_te, X_train_te_sqrt, y_train_te_sqrt, cv=5, scoring='r2', return_train_score=True)\n", + "\n", + "print(f\"Train CV R2: {cv_results_te_sqrt['train_score'].mean():.4f}\")\n", + "print(f\"Test CV R2: {cv_results_te_sqrt['test_score'].mean():.4f}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "33b15af9", + "metadata": {}, + "source": [ + "### Selective Log Transformation (High-Value Targets Only)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "68f5d943", + "metadata": {}, + "outputs": [], + "source": [ + "def transform_target(value):\n", + " return np.log1p(value) if value > 20000 else value\n", + "\n", + "df['target_mixed'] = df['close_value'].apply(transform_target)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9815ea6", + "metadata": {}, + "outputs": [], + "source": [ + "X_te = df.drop(columns=['close_value' ])\n", + "y_te = df['target_mixed']\n", + "\n", + "num_feat = ['revenue', 'sales_price', 'won', 'duration']\n", + "cat_feat = ['account', 'sector', 'office_location', 'sales_agent',\n", + " 'product', 'manager','opportunity_status', 'regional_office', 'series']\n", + "\n", + "num_transformer_te = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='mean')),\n", + " ('scaler', RobustScaler())\n", + "])\n", + "\n", + "cat_transformer_te = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='most_frequent')),\n", + " ('encoder', OneHotEncoder(drop='first', sparse_output=False, handle_unknown='ignore'))\n", + "])\n", + "\n", + "\n", + "preprocessor = ColumnTransformer([\n", + " ('num', num_transformer_te, num_feat),\n", + " ('cat', cat_transformer_te, cat_feat)\n", + "])\n", + "\n", + "pipeline_te = Pipeline([\n", + " ('preprocessor', preprocessor),\n", + " ('model', GradientBoostingRegressor(random_state=42))\n", + "])\n", + "\n", + "X_train_te, X_test_te, y_train_te, y_test_te = train_test_split(\n", + " X_te, y_te, test_size=0.3, random_state=42)\n", + "\n", + "\n", + "cv_results_te = cross_validate(\n", + " pipeline_te, X_train_te, y_train_te, cv=5, scoring='r2', return_train_score=True)\n", + "\n", + "print(f\"Train CV R2: {cv_results_te['train_score'].mean():.4f}\")\n", + "print(f\"Test CV R2: {cv_results_te['test_score'].mean():.4f}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "90609762", + "metadata": {}, + "source": [ + "## Clustering & Dimensionality Reduction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c629724f", + "metadata": {}, + "outputs": [], + "source": [ + "X_pca = df_ohe.drop(columns=['close_value'])\n", + "y_pca = df_ohe['close_value']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2764dc1f", + "metadata": {}, + "outputs": [], + "source": [ + "pca = PCA(n_components=2)\n", + "X_pca_2d = pca.fit_transform(X_pca)\n", + "\n", + "pca_df = pd.DataFrame(data=X_pca_2d, columns=['PC1', 'PC2'])\n", + "pca_df['close_value'] = y_pca" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12fe1f34", + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(5, 3))\n", + "scatter = plt.scatter(pca_df['PC1'], pca_df['PC2'],\n", + " c=pca_df['close_value'], cmap='viridis', alpha=0.6)\n", + "plt.colorbar(scatter, label='Close Value')\n", + "plt.title('PCA - Color by Close Value')\n", + "plt.xlabel('PC1')\n", + "plt.ylabel('PC2')\n", + "plt.show()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4052b3d4", + "metadata": {}, + "outputs": [], + "source": [ + "pca.explained_variance_ratio_\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8969c337", + "metadata": {}, + "outputs": [], + "source": [ + "pca_full = PCA()\n", + "X_pca_full = pca_full.fit_transform(X_pca)\n", + "\n", + "cumulative_variance = np.cumsum(pca_full.explained_variance_ratio_)\n", + "\n", + "\n", + "n_components_90 = np.argmax(cumulative_variance >= 0.90) + 1\n", + "print(f\"Number of components to explain 90% de la variance: {n_components_90}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "67549185", + "metadata": {}, + "outputs": [], + "source": [ + "pca = PCA(n_components=52)\n", + "X_pca_52 = pca.fit_transform(df_ohe.drop(columns=['close_value']))" + ] + }, + { + "cell_type": "markdown", + "id": "b20900d7", + "metadata": {}, + "source": [ + "### K-Means" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d42b60e1", + "metadata": {}, + "outputs": [], + "source": [ + "inertias = []\n", + "ks = range(1, 60)\n", + "\n", + "for k in ks:\n", + " km = KMeans(n_clusters=k, random_state=42)\n", + " km.fit(X_pca_52)\n", + " inertias.append(km.inertia_)\n", + "\n", + "plt.plot(ks, inertias, marker='o')\n", + "plt.xlabel('Number of clusters (k)')\n", + "plt.ylabel('Inertia')\n", + "plt.title('Elbow Method For Optimal k')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4973df77", + "metadata": {}, + "outputs": [], + "source": [ + "k_optimal = 6\n", + "kmeans_final = KMeans(n_clusters=k_optimal, random_state=42)\n", + "clusters = kmeans_final.fit_predict(X_pca_52)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d4b3cf88", + "metadata": {}, + "outputs": [], + "source": [ + "pca_2d = PCA(n_components=2)\n", + "X_pca_2d = pca_2d.fit_transform(df_ohe.drop(columns=['close_value']))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "051149d9", + "metadata": {}, + "outputs": [], + "source": [ + "pca_df = pd.DataFrame(X_pca_2d, columns=['PC1', 'PC2'])\n", + "pca_df['cluster'] = clusters\n", + "pca_df['close_value'] = df_ohe['close_value'].values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "97c163d4", + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(8,6))\n", + "sns.scatterplot(data=pca_df, x='PC1', y='PC2', hue='cluster', palette='tab20')\n", + "plt.title('KMeans Clustering (k=6) in PCA space (2D projection)')\n", + "plt.xlabel('PC1')\n", + "plt.ylabel('PC2')\n", + "plt.legend(title='Cluster', bbox_to_anchor=(1.05, 1), loc='upper left')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48ce644a", + "metadata": {}, + "outputs": [], + "source": [ + "df_ohe['cluster'] = clusters\n", + "\n", + "df_ohe.groupby('cluster')[['close_value', 'revenue', 'sales_price', 'duration']].mean().round(2)\n" + ] + }, + { + "cell_type": "markdown", + "id": "ec2bf602", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# Threshold-based segmentation\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ecc55fc", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "df_low = df_ohe[df_ohe['close_value'] <= 10000].copy()\n", + "df_high = df_ohe[df_ohe['close_value'] > 10000].copy()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70c8f41f", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "X_low = df_low.drop(columns=['close_value'])\n", + "y_low = df_low['close_value']\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75496dcb", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "X_high = df_high.drop(columns=['close_value'])\n", + "y_high = df_high['close_value']\n" + ] + }, + { + "cell_type": "markdown", + "id": "3f06ddd1", + "metadata": { + "hidden": true + }, + "source": [ + "## Linear Regression" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "952e4f81", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "model_lr_s = LinearRegression()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "252df3a8", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "X_train_low, X_test_low, y_train_low, y_test_low = train_test_split(\n", + " X_low, y_low, test_size=0.3, random_state=42)\n", + "cv_results_low_lr = cross_validate(model_lr_s, X_train_low, y_train_low, cv=5)\n", + "cv_results_low_lr['test_score'].mean()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2ed57e7f", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "X_train_high, X_test_high, y_train_high, y_test_high = train_test_split(\n", + " X_high, y_high, test_size=0.3, random_state=42)\n", + "cv_results_high_lr = cross_validate(\n", + " model_lr_s, X_train_high, y_train_high, cv=5)\n", + "cv_results_high_lr['test_score'].mean()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6dd73449", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "print(len(df_high), \"of\", len(df_ohe))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b115e521", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "model_lr_s.fit(X_train_low, y_train_low)\n", + "y_pred_lr_s_low = model_lr_s.predict(X_test_low)\n", + "print(\"R2 Score:\", r2_score(y_test_low, y_pred_lr_s_low))\n", + "print(\"MAE:\", mean_absolute_error(y_test_low, y_pred_lr_s_low))\n", + "print(\"RMSE:\", mean_squared_error(y_test_low, y_pred_lr_s_low))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e01e3eb", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "model_lr_s.fit(X_train_high, y_train_high)\n", + "y_pred_lr_s_high = model_lr_s.predict(X_test_high)\n", + "print(\"R2 Score:\", r2_score(y_test_high, y_pred_lr_s_high))\n", + "print(\"MAE:\", mean_absolute_error(y_test_high, y_pred_lr_s_high))\n", + "print(\"RMSE:\", mean_squared_error(y_test_high, y_pred_lr_s_high))\n" + ] + }, + { + "cell_type": "markdown", + "id": "42ffb946", + "metadata": { + "hidden": true + }, + "source": [ + "## Gradient Boosting Regressor " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73003c9e", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "model_gbr_s = GradientBoostingRegressor(random_state=42)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60dce4c3", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "X_train_low, X_test_low, y_train_low, y_test_low = train_test_split(\n", + " X_low, y_low, test_size=0.3, random_state=42)\n", + "cv_results_low_lr = cross_validate(model_gbr_s, X_train_low, y_train_low, cv=5)\n", + "cv_results_low_lr['test_score'].mean()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9eecd806", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "X_train_high, X_test_high, y_train_high, y_test_high = train_test_split(\n", + " X_high, y_high, test_size=0.3, random_state=42)\n", + "cv_results_high_lr = cross_validate(\n", + " model_gbr_s, X_train_high, y_train_high, cv=5)\n", + "cv_results_high_lr['test_score'].mean()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e7613a48", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "model_gbr_s.fit(X_train_low, y_train_low)\n", + "y_pred_gbr_s_low = model_gbr_s.predict(X_test_low)\n", + "print(\"R2 Score:\", r2_score(y_test_low, y_pred_gbr_s_low))\n", + "print(\"MAE:\", mean_absolute_error(y_test_low, y_pred_gbr_s_low))\n", + "print(\"RMSE:\", mean_squared_error(y_test_low, y_pred_gbr_s_low))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c899df7", + "metadata": { + "hidden": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "model_gbr_s.fit(X_train_high, y_train_high)\n", + "y_pred_gbr_s_high = model_gbr_s.predict(X_test_high)\n", + "print(\"R2 Score:\", r2_score(y_test_high, y_pred_gbr_s_high))\n", + "print(\"MAE:\", mean_absolute_error(y_test_high, y_pred_gbr_s_high))\n", + "print(\"RMSE:\", mean_squared_error(y_test_high, y_pred_gbr_s_high))\n" + ] + }, + { + "cell_type": "markdown", + "id": "6e19fbe5", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# Classification Model (Predicting Best Sales Agent)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e6044d7d", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "num_feat_cm = ['revenue', 'sales_price', 'won', 'duration', 'close_value']\n", + "cat_feat_cm = ['account', 'sector', 'office_location',\n", + " 'product', 'manager', 'regional_office', 'series']\n", + "\n", + "X_cm = df.drop(columns=['sales_agent', 'opportunity_status']) \n", + "y_cm = df['sales_agent']\n", + "\n", + "num_transformer = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='mean')),\n", + " ('scaler', RobustScaler())\n", + "])\n", + "\n", + "cat_transformer = Pipeline([\n", + " ('imputer', SimpleImputer(strategy='most_frequent')),\n", + " ('encoder', OneHotEncoder(drop='first', sparse_output=False, handle_unknown='ignore'))\n", + "])\n", + "\n", + "\n", + "preprocessor = ColumnTransformer([\n", + " ('num', num_transformer, num_feat_cm),\n", + " ('cat', cat_transformer, cat_feat_cm)\n", + "])\n", + "\n", + "pipeline_classification = Pipeline([\n", + " ('preprocessor', preprocessor),\n", + " ('model', RandomForestClassifier(\n", + " random_state=42,\n", + " n_estimators=100,\n", + " max_depth=10,\n", + " min_samples_split=5,\n", + " class_weight='balanced'))\n", + "])\n", + "\n", + "X_train_cm, X_test_cm, y_train_cm, y_test_cm = train_test_split(\n", + " X_cm, y_cm, test_size=0.3, random_state=42)\n", + "\n", + "\n", + "cv_results_cm = cross_validate(\n", + " pipeline_classification, X_train_cm, y_train_cm,\n", + " cv=5, \n", + " scoring= ['accuracy', 'precision_macro', 'recall_weighted'],\n", + " return_train_score=True)\n", + "for score in ['accuracy', 'precision_macro', 'recall_weighted']:\n", + " train_mean = cv_results_cm[f'train_{score}'].mean()\n", + " test_mean = cv_results_cm[f'test_{score}'].mean()\n", + " print(f\"{score.title()} - Train: {train_mean:.4f} | Test: {test_mean:.4f}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e37e7aca", + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "y_cm.value_counts(normalize=True).plot(kind='barh', figsize=(3,5), title='Agent Dsitribution')\n" + ] + }, + { + "cell_type": "markdown", + "id": "d5a65683", + "metadata": { + "hidden": true + }, + "source": [ + "vb" + ] + } + ], + "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.10.6" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}