{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":84896,"databundleVersionId":10305135,"sourceType":"competition"}],"dockerImageVersionId":30804,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Season 4 Episode 12 EDA and Baseline model\nThe purpose of this notebook is to create an EDA and baseline model for the data.\n\nSubsequent notebooks will start with the preprocessing and evolve from there.","metadata":{}},{"cell_type":"code","source":"from IPython.display import display, HTML\n\nimport numpy as np\nimport pandas as pd\npd.set_option('display.max_columns', 100)\n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.model_selection import StratifiedKFold\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import OneHotEncoder\nfrom sklearn.impute import SimpleImputer\n\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.metrics import mean_squared_error\nfrom sklearn.metrics import r2_score\n\nimport warnings\nwarnings.filterwarnings('ignore')\n\nclass CFG:\n    random_state = 81\n    target = 'Premium Amount'  # target feature to predict","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T20:15:02.276944Z","iopub.execute_input":"2024-12-04T20:15:02.277922Z","iopub.status.idle":"2024-12-04T20:15:02.424539Z","shell.execute_reply.started":"2024-12-04T20:15:02.277876Z","shell.execute_reply":"2024-12-04T20:15:02.423201Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# [1] Load Data\nLoad the data, go ahead and cast the datetime to an expected date","metadata":{}},{"cell_type":"code","source":"def load_data(input_path='../input/playground-series-s4e12'):\n    \"\"\" loads the train, test and submissions as dataframes \"\"\"\n    params = {\n        'index_col': 0,\n        'parse_dates': ['Policy Start Date'],\n        'date_parser': lambda x: pd.to_datetime(x).date\n    }\n    train_ = pd.read_csv(f'{input_path}/train.csv', **params)\n    test_ = pd.read_csv(f'{input_path}/test.csv', **params)\n    submission_ = pd.read_csv(f'{input_path}/sample_submission.csv')\n\n    return train_, test_, submission_\n\ntrain_df, test_df, submission_df = load_data()\nprint('train_df shape', train_df.shape)\nprint('test_df shape', test_df.shape)\ndisplay(train_df.sample(3, random_state=CFG.random_state))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T20:44:00.53375Z","iopub.execute_input":"2024-12-04T20:44:00.534216Z","iopub.status.idle":"2024-12-04T20:44:19.115672Z","shell.execute_reply.started":"2024-12-04T20:44:00.534171Z","shell.execute_reply":"2024-12-04T20:44:19.114018Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_df.dtypes","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:10:01.536474Z","iopub.execute_input":"2024-12-04T18:10:01.536973Z","iopub.status.idle":"2024-12-04T18:10:01.546662Z","shell.execute_reply.started":"2024-12-04T18:10:01.536937Z","shell.execute_reply":"2024-12-04T18:10:01.545057Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Target for prediction is **Premium Amount**\n","metadata":{}},{"cell_type":"code","source":"def summary(df):\n    #print(f'data shape: {df.shape}')\n    summ = pd.DataFrame(df.dtypes, columns=['data type'])\n    summ['#missing'] = df.isnull().sum().values \n    summ['%missing'] = df.isnull().sum().values / len(df)* 100\n    summ['#unique'] = df.nunique().values\n    desc = pd.DataFrame(df.describe(include='all').transpose())\n    summ['min'] = desc['min'].values\n    summ['max'] = desc['max'].values\n    \n    return summ\ndisplay(summary(train_df))\ndisplay(summary(test_df))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:10:01.54938Z","iopub.execute_input":"2024-12-04T18:10:01.549831Z","iopub.status.idle":"2024-12-04T18:10:08.540112Z","shell.execute_reply.started":"2024-12-04T18:10:01.549746Z","shell.execute_reply":"2024-12-04T18:10:08.538863Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Missing Data summary\nIt looks like most of the data is available, **Occupation** is missing 30%, and **Previous Claims** is mising about the same,  for **Previous Claims** we can assume no previous claim. For **Occupation** we can just mark all missing as its own category\n\nHow to handle the missing data for each\n- **Annual Income** missing 3.7% assume 0\n- **Marital Status** missing 1.5%, TBD\n- **Number of Depedendents** missing 9.1%, assume 0\n- **Occupation** missing 30% - make a missing category\n- **Health Score** missing 6.2%, use mean \n- **Previous Claims** missing 30%, use 0\n- **Vehicle Age** missing very few; use mean\n- **Credit Score** missing 11.4%, use mean (FUTURE - use other interpolation)\n- **Insurance Duration** missing very vew; use mean\n- **Customer Feedback** missing 6.5%; look at categories, is something 'no feedback?'\n\n**OBS1** for missing data use 0 for Annual Income, Number of Dependents, and Previous Claims, other fields use mean\n\nWhat are the value counts for Marital Status?\n\nWhat does the distribution of Credit Score, and Health Scorelook like","metadata":{}},{"cell_type":"code","source":"train_df['Marital Status'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:10:08.541656Z","iopub.execute_input":"2024-12-04T18:10:08.541998Z","iopub.status.idle":"2024-12-04T18:10:08.645059Z","shell.execute_reply.started":"2024-12-04T18:10:08.541965Z","shell.execute_reply":"2024-12-04T18:10:08.643775Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def plot_feature(df_, feature):\n    #plt.figure(figsize=(10,5))\n    sns.distplot(df_[feature].dropna())\n    plt.title(f'{feature} distribution', fontweight='bold')\n    plt.show()\n#sns.kdeplot(train_df['Credit Score'])\n#sns.kdeplot(train_df['Credit Score'].dropna())\nplot_feature(train_df, 'Credit Score')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:10:08.64662Z","iopub.execute_input":"2024-12-04T18:10:08.646959Z","iopub.status.idle":"2024-12-04T18:10:13.270654Z","shell.execute_reply.started":"2024-12-04T18:10:08.646927Z","shell.execute_reply":"2024-12-04T18:10:13.26941Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plot_feature(train_df, 'Health Score')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:10:13.272033Z","iopub.execute_input":"2024-12-04T18:10:13.272401Z","iopub.status.idle":"2024-12-04T18:10:18.103042Z","shell.execute_reply.started":"2024-12-04T18:10:13.272368Z","shell.execute_reply":"2024-12-04T18:10:18.101037Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"*Previous Claims* is the count of previous claims, I assumed it was an amount","metadata":{}},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def feature_type_lists(df_):\n    \"\"\" returns categorical/object, number, and datetime64 column names \"\"\"\n    object_cols = df_.select_dtypes(include=['object']).columns\n    numerical_cols = df_.select_dtypes(include=['number']).columns\n    datetime_cols = df_.select_dtypes(include=['datetime64']).columns\n    return object_cols, numerical_cols, datetime_cols\n\nobject_features, numerical_features, datetime_features = feature_type_lists(test_df)\nprint('Object Column Names\\n', object_features.tolist())\nprint('\\nNumerical Column Names\\n', numerical_features.tolist())\nprint('\\nDatetime Column Names\\n', datetime_features.tolist())\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:10:18.104725Z","iopub.execute_input":"2024-12-04T18:10:18.105095Z","iopub.status.idle":"2024-12-04T18:10:18.22836Z","shell.execute_reply.started":"2024-12-04T18:10:18.105061Z","shell.execute_reply":"2024-12-04T18:10:18.22703Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Categorial Features\nFirst look at the categorical Features (some of these may be converted to Numerical)\n- Gender - 2 unique values\n- Marital Status - 3 unique values\n- Education Level - 4 values\n- Occupation - 3 values, 30% missing\n- Location - 3 values\n- Policy Type - 3 values\n- Policy Start Date - convert this to date\n- Customer Feedback - 3 values\n- Smoking Status - 2 values\n- exercise frequency - 4 values\n- property type - 3 values\n\nThere really aren't a lot of things to encode, so we can 1-hot encode them all","metadata":{}},{"cell_type":"code","source":"def plot_topn(df_, category, top_n=10):\n    \"\"\"\n    bar plot of topn of the category in the dataframe\n    \"\"\"\n    fig, ax = plt.subplots(figsize=(4, 4))\n    df_[category].value_counts().head(10).sort_values(ascending=True).plot(\n        kind='barh', color='blue', ax=ax, title=f'Top {category}'\n    )\n    ax.set_xlabel(\"Count in Data\")\n    plt.show()\n\nplot_topn(train_df, 'Marital Status')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:10:18.229883Z","iopub.execute_input":"2024-12-04T18:10:18.230324Z","iopub.status.idle":"2024-12-04T18:10:18.559223Z","shell.execute_reply.started":"2024-12-04T18:10:18.230288Z","shell.execute_reply":"2024-12-04T18:10:18.558096Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Numerical Features\nLets take a look at the numerical features and their distributions\n\nThe target is numerical, so we are going to use a *Regression* model.\nInitially we have the following numerical fields\n- Age\n- Annual Income\n- Number of Dependents\n- Health Score\n- Previous Claims\n- Vehical Age\n- Credit Score\n- Insurance Duration\n- Premium Amount (Target)","metadata":{}},{"cell_type":"code","source":"train_df.describe()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:10:18.562491Z","iopub.execute_input":"2024-12-04T18:10:18.563339Z","iopub.status.idle":"2024-12-04T18:10:19.323185Z","shell.execute_reply.started":"2024-12-04T18:10:18.563298Z","shell.execute_reply":"2024-12-04T18:10:19.321955Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def plot_boxplots(df, columns):\n    plt.figure(figsize=(12, 6))\n    for i, col in enumerate(columns, 1):\n        plt.subplot(1, len(columns), i)\n        sns.boxplot(y=df[col], color='lightblue')\n        plt.title(col, fontsize=10)\n    plt.tight_layout()\n    plt.show()\n\nplot_boxplots(train_df, numerical_features)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:17:55.283154Z","iopub.execute_input":"2024-12-04T18:17:55.283613Z","iopub.status.idle":"2024-12-04T18:17:56.975922Z","shell.execute_reply.started":"2024-12-04T18:17:55.283576Z","shell.execute_reply":"2024-12-04T18:17:56.974707Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plot_boxplots(test_df, numerical_features)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:18:07.716607Z","iopub.execute_input":"2024-12-04T18:18:07.717037Z","iopub.status.idle":"2024-12-04T18:18:09.219573Z","shell.execute_reply.started":"2024-12-04T18:18:07.716999Z","shell.execute_reply":"2024-12-04T18:18:09.218082Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"this is showing the training and test data is cut in a stratified manner to preserve distributions.","metadata":{}},{"cell_type":"code","source":"def plot_histograms(df, columns):\n    df[columns].hist(bins=20, figsize=(15, 10), color='skyblue')\n    plt.suptitle('Histograms of Numerical Features', fontsize=16)\n    plt.show()\n\nplot_histograms(train_df, numerical_features)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:18:35.059278Z","iopub.execute_input":"2024-12-04T18:18:35.05972Z","iopub.status.idle":"2024-12-04T18:18:37.033728Z","shell.execute_reply.started":"2024-12-04T18:18:35.059681Z","shell.execute_reply":"2024-12-04T18:18:37.032099Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def feature_pairplot(df_train, subset_features):\n    #subset_features = ['loan_amnt', 'loan_int_rate', 'person_income', 'person_age', 'loan_status']\n    sns.pairplot(df_train[subset_features], corner=True, plot_kws={'marker': '+'}) #, hue='loan_status')\n    plt.title('Pair Plot of Selected Features')\n    plt.show()\n\nfeature_pairplot(train_df, ['Health Score', 'Credit Score', 'Premium Amount']) #numerical_column_names)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:40:18.338703Z","iopub.execute_input":"2024-12-04T18:40:18.339181Z","iopub.status.idle":"2024-12-04T18:40:25.147469Z","shell.execute_reply.started":"2024-12-04T18:40:18.339112Z","shell.execute_reply":"2024-12-04T18:40:25.146457Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def plot_correlation(df):\n    correlation_matrix = df.corr(numeric_only=True)\n    mask = np.triu(np.ones_like(correlation_matrix, dtype='bool'))\n    plt.figure(figsize=(10,8))\n    sns.heatmap(correlation_matrix, mask=mask, annot=True, cmap='coolwarm', fmt='.2f', square=True)\n    plt.title('Correlation Matrix')\n    plt.show()\n    \nplot_correlation(train_df)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:19:23.276707Z","iopub.execute_input":"2024-12-04T18:19:23.277063Z","iopub.status.idle":"2024-12-04T18:19:24.052037Z","shell.execute_reply.started":"2024-12-04T18:19:23.27703Z","shell.execute_reply":"2024-12-04T18:19:24.05057Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Target Feature - Premium Amount\nIs there anything about the target feature we should identify\n\n","metadata":{}},{"cell_type":"code","source":"sns.kdeplot(data=train_df, x=CFG.target, color='steelblue', fill=True);","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:41:50.39152Z","iopub.execute_input":"2024-12-04T18:41:50.391984Z","iopub.status.idle":"2024-12-04T18:41:55.512446Z","shell.execute_reply.started":"2024-12-04T18:41:50.391943Z","shell.execute_reply":"2024-12-04T18:41:55.511273Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"interesting that it looks like a lot of the targets are 0, what does it look like to separate those out, are there charatertics in the other features that identify with a 0 Premium Amount\n\nWhat if I make a separate model \"predict_is_zero_premium\" or not, as one model, and a different one to predict the values on the non-zero premiums","metadata":{}},{"cell_type":"markdown","source":"# Date Features\nThere is only one date feature 'Policy Start Date'\nwe could turn that into a integer over the range, or just drop it, or look at it as a distance to something\n","metadata":{}},{"cell_type":"code","source":"# make a graph of frequency of these to when they occur\n\nimport seaborn as sns\ndef dt_plot(df, target=CFG.target):\n    sns.set(style=\"whitegrid\")\n    plt.figure(figsize=(10, 6))\n    df['rolling_mean'] = df[target].rolling(window=20, center=False).mean()\n    sns.lineplot(x=datetime_features[0], y=target, data=df, marker='o', label=target)\n    sns.lineplot(x=datetime_features[0], y='rolling_mean', data=df, color='red', label='Smoothed Trend (Rolling Mean)')\n\n    plt.title(f'{target} Over Time', fontsize=16)\n    plt.xlabel('Date', fontsize=14)\n    plt.ylabel('Amount ($)', fontsize=14)\n    plt.show()\n\ndt_plot(train_df)\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:42:00.315832Z","iopub.execute_input":"2024-12-04T18:42:00.316245Z","iopub.status.idle":"2024-12-04T18:43:28.504533Z","shell.execute_reply.started":"2024-12-04T18:42:00.316209Z","shell.execute_reply":"2024-12-04T18:43:28.503221Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"interesting, it looks like amount premiums are signficantly lower prior to 2020. I wonder what the annual mean is","metadata":{}},{"cell_type":"code","source":"def plt2():\n    plt.figure(figsize=(10, 6))\n    sns.scatterplot(x=datetime_features[0], y=CFG.target, data=df, label='Data Points')\n    sns.regplot(x=pd.to_numeric(df[datetime_features[0]]), y=CFG.target, data=df, lowess=True, color='red', label='Smoothed Trend')\n    plt.title('Dollar Amount Over Time with Trendline', fontsize=16)\n    plt.xlabel('Date', fontsize=14)\n    plt.ylabel('Amount ($)', fontsize=14)\n    plt.legend()\n    plt.show()\n\ndef summarize_by_year(df):\n    df_ = df.copy()\n    df_['year'] = df_[datetime_features[0]].dt.year\n\n    # Calculate mean amount for each year\n    yearly_mean = df_.groupby('year')[CFG.target].mean().reset_index()\n    display(HTML(yearly_mean.to_html(index=False)))\n\nsummarize_by_year(train_df)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:50:23.051245Z","iopub.execute_input":"2024-12-04T18:50:23.051667Z","iopub.status.idle":"2024-12-04T18:50:23.448079Z","shell.execute_reply.started":"2024-12-04T18:50:23.05163Z","shell.execute_reply":"2024-12-04T18:50:23.446559Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Baseline Model","metadata":{}},{"cell_type":"code","source":"# setup X, y data\nX = train_df.copy()\ny = X.pop(CFG.target)\nX_train, X_test, y_train, y_test = train_test_split(X, y, random_state=CFG.random_state)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:50:26.594728Z","iopub.execute_input":"2024-12-04T18:50:26.595193Z","iopub.status.idle":"2024-12-04T18:50:27.765061Z","shell.execute_reply.started":"2024-12-04T18:50:26.595118Z","shell.execute_reply":"2024-12-04T18:50:27.763818Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"preprocessor = ColumnTransformer(\n    transformers=[\n        ('num', Pipeline(steps=[\n            ('impute', SimpleImputer(strategy='mean')),\n            ('scale', StandardScaler())\n        ]), numerical_features),\n        ('cat', Pipeline(steps=[\n            ('ohe', OneHotEncoder())\n        ]), object_features)\n    ])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:50:29.288523Z","iopub.execute_input":"2024-12-04T18:50:29.289772Z","iopub.status.idle":"2024-12-04T18:50:29.295293Z","shell.execute_reply.started":"2024-12-04T18:50:29.289727Z","shell.execute_reply":"2024-12-04T18:50:29.293918Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# now check out the preprocssor of X_train\nxformer = preprocessor.fit_transform(X_train)\nxformer_df = pd.DataFrame(xformer, columns=preprocessor.get_feature_names_out())\nprint(X_train.shape, xformer.shape)\n#print(preprocessor.get_feature_names_out())\ndisplay(xformer_df.sample(3, random_state=CFG.random_state))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:54:24.380068Z","iopub.execute_input":"2024-12-04T18:54:24.380526Z","iopub.status.idle":"2024-12-04T18:54:27.761908Z","shell.execute_reply.started":"2024-12-04T18:54:24.380491Z","shell.execute_reply":"2024-12-04T18:54:27.760517Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"xformer_df.describe().T","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T18:56:33.015841Z","iopub.execute_input":"2024-12-04T18:56:33.016313Z","iopub.status.idle":"2024-12-04T18:56:34.837475Z","shell.execute_reply.started":"2024-12-04T18:56:33.016273Z","shell.execute_reply":"2024-12-04T18:56:34.836219Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# now try some models \n- GradientBoostingRegressor (model1)\n- LinearRegression (use this first) or RandomForestRegressor\n- RandomForestRegression (baseline)\n- XGBoostRegression (model1)\n- LightGBMRegression (good for model1)\n- ElasticNetRegression (model2)\n","metadata":{}},{"cell_type":"code","source":"def evaluate_model(model):\n    \"\"\" \n    plugs model into pipeline for evaluation \n    :returns: the pipeline  (future remove this)\n    \"\"\"\n    # preprocessor = ColumnTransformer(\n    #     transformers=[\n    #         ('num', Pipeline(steps=[\n    #             ('impute', SimpleImputer(strategy='mean')),\n    #             ('scale', StandardScaler())\n    #         ]), numerical_features),\n    #         ('cat', Pipeline(steps=[\n    #             ('ohe', OneHotEncoder())\n    #         ]), object_features)\n    #     ])\n    \n    pipeline = Pipeline(steps=[\n        ('preprocessor', preprocessor),\n        ('model', model)\n    ])\n    pipeline.fit(X_train, y_train)\n    y_pred = pipeline.predict(X_test)\n    #print('accuracy:', accuracy_score(y_test, y_pred))\n    #print(classification_report(y_test, y_pred))\n    print('mse:', mean_squared_error(y_test, y_pred))\n    print('r2score:', r2_score(y_test, y_pred))\n    return pipeline","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T20:08:38.385629Z","iopub.execute_input":"2024-12-04T20:08:38.386048Z","iopub.status.idle":"2024-12-04T20:08:38.39458Z","shell.execute_reply.started":"2024-12-04T20:08:38.386017Z","shell.execute_reply":"2024-12-04T20:08:38.393277Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pipeline = evaluate_model(LinearRegression())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T20:12:37.380238Z","iopub.execute_input":"2024-12-04T20:12:37.380672Z","iopub.status.idle":"2024-12-04T20:12:45.032856Z","shell.execute_reply.started":"2024-12-04T20:12:37.380638Z","shell.execute_reply":"2024-12-04T20:12:45.029014Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#evaluate_model(RandomForestRegressor())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T20:44:43.650263Z","iopub.execute_input":"2024-12-04T20:44:43.650687Z","iopub.status.idle":"2024-12-04T20:44:43.655398Z","shell.execute_reply.started":"2024-12-04T20:44:43.650652Z","shell.execute_reply":"2024-12-04T20:44:43.654243Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Make a submissions\nUse the pipeline from previous section to make a submissions","metadata":{}},{"cell_type":"code","source":"# make a submission\npipeline.fit(X, y)\ny_pred = pipeline.predict(test_df)\nsubmission_df[CFG.target] = y_pred\n\nsubmission_df.to_csv('submission.csv', index=False)\nsubmission_df.sample(5, random_state=CFG.random_state)\n\n#submission['Premium Amount'] = np.mean(cat_test_preds, axis=0)\n#print(submission.head())\n\n#submission.to_csv('baseline_1_CatBoost.csv', index=False)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-04T20:44:48.712266Z","iopub.execute_input":"2024-12-04T20:44:48.712674Z","iopub.status.idle":"2024-12-04T20:45:01.773878Z","shell.execute_reply.started":"2024-12-04T20:44:48.712641Z","shell.execute_reply":"2024-12-04T20:45:01.772696Z"}},"outputs":[],"execution_count":null}]}