{"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"},{"sourceId":9178166,"sourceType":"datasetVersion","datasetId":5547076},{"sourceId":213785734,"sourceType":"kernelVersion"}],"dockerImageVersionId":30804,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# &#128204; Import","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"from IPython.display import clear_output\n\nAUTOGLUON = False\n# AUTOGLUON =  True\n# !pip install ray==2.10.0 autogluon.tabular ipywidgets catboost==1.2.5\n# clear_output()\n\nimport numpy as np\nimport pandas as pd\nimport math\n!pip install -q scikit-learn==1.5.2\nclear_output()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# import Engine\n\nexec(open('/kaggle/input/engine-4-12/import.py','r').read())\nexec(open('/kaggle/input/engine-4-12/problem.py','r').read())\nexec(open('/kaggle/input/engine-4-12/database.py','r').read())\nexec(open('/kaggle/input/engine-4-12/averager.py','r').read())\nexec(open('/kaggle/input/engine-4-12/estimators.py','r').read())\nexec(open('/kaggle/input/engine-4-12/models.py','r').read())\nexec(open('/kaggle/input/engine-4-12/utils.py','r').read())\nexec(open('/kaggle/input/engine-4-12/evaluation.py','r').read())\nexec(open('/kaggle/input/engine-4-12/encoders.py','r').read())\nclear_output()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"DB = Database()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# &#128204; Load data","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"train, test, original, sample_sub = load_datasets()\nDB.datasets.put('loaded', train, test)\nDB.datasets.summary('loaded', tab = False, dataframes = ['train'])","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# &#128204; Baseline\n#### Encode categories","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"cats_to_int('loaded', 'base', as_category=False)\nDB.datasets.summary('base', tab = True, dataframes = ['train'])","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"evaluate('base')","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# &#128204; Dataset 0\n#### 'Policy Start Date' to 'Year'\n#### Fill NaN in 'Marital Status', 'Occupation', 'Customer Feedback' with 'Unknown'\n#### Fill NaN in numerical columns with mean value\n#### Encode categories","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"src, dst, encode = 'loaded', 'ds0', cats_to_int\ntrain, test = DB.datasets.train(src), DB.datasets.test(src)\n\nfor df in [train, test] :\n    df['Policy Start Date'] = pd.to_datetime(df['Policy Start Date'])\n    df['Year'] = df['Policy Start Date'].dt.year.astype(float)    \n    df.drop('Policy Start Date', axis=1, inplace=True)    \n\nobject_columns = fcn(test)[1]\n\nfor df in [train, test] :\n    for column in object_columns :\n        df[column] = df[column].astype('string')\n    df['Year'] = df['Year'].astype(float)\n\nunknown = ['Marital Status', 'Occupation', 'Customer Feedback']\nfor df in [train, test] :\n    for column in  unknown:\n        df[column] = df[column].fillna('Unknown')\n\nmean = ['Age', 'Vehicle Age', 'Insurance Duration', 'Annual Income', 'Health Score', 'Previous Claims', 'Credit Score']\nfor df in [train, test] :\n    for column in  mean:\n        mn = train[column].mean()\n        df[column] = df[column].fillna(mn)\n    df['Number of Dependents'] = df['Number of Dependents'].fillna(2.0)\n\nDB.datasets.put(dst, train, test)\n\nencode(dst, dst)\nDB.datasets.summary(dst, tab = False, dataframes = ['train'])","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"evaluate(dst)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# &#128204; Dataset 1\n#### 'Policy Start Date' to 'Year'\n#### Fill NaN in 'Marital Status', 'Occupation', 'Customer Feedback' with 'Unknown'\n#### *Create \"is_nan\" columns*\n#### Fill NaN in numerical columns with mean value\n#### Encode categories","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"src, dst, encode = 'loaded', 'ds1', cats_to_int\ntrain, test = DB.datasets.train(src), DB.datasets.test(src)\n\nfor df in [train, test] :\n    df['Policy Start Date'] = pd.to_datetime(df['Policy Start Date'])\n    df['Year'] = df['Policy Start Date'].dt.year.astype(float)    \n    df.drop('Policy Start Date', axis=1, inplace=True)    \n\nobject_columns = fcn(test)[1]\n\nfor df in [train, test] :\n    for column in object_columns :\n        df[column] = df[column].astype('string')\n    df['Year'] = df['Year'].astype(float)\n\nunknown = ['Marital Status', 'Occupation', 'Customer Feedback']\nfor df in [train, test] :\n    for column in  unknown:\n        df[column] = df[column].fillna('Unknown')\n\nmean = ['Age', 'Vehicle Age', 'Insurance Duration', 'Annual Income', 'Health Score', 'Previous Claims', 'Credit Score']\nfor df in [train, test] :\n    for column in  mean:\n        \n        df[f'{column}_is_nan'] = df[column].isna()\n        \n        mn = train[column].mean()\n        df[column] = df[column].fillna(mn)\n    df['Number of Dependents is nan'] = df['Number of Dependents'].isna()\n    df['Number of Dependents'] = df['Number of Dependents'].fillna(2.0)\n\nDB.datasets.put(dst, train, test)\n\nencode(dst, dst)\nDB.datasets.summary(dst, tab = False, dataframes = ['train'])","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"evaluate(dst)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# &#128204; Dataset 2\n#### 'Policy Start Date' to 'Year'\n#### Fill NaN in 'Marital Status', 'Occupation', 'Customer Feedback' with 'Unknown'\n#### Unite categorical columns\n#### Encode categories","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"src, dst, encode = 'loaded', 'ds2', cats_to_int\n\ntrain, test = DB.datasets.train(src), DB.datasets.test(src)\n\nfor df in [train, test] :\n    df['Policy Start Date'] = pd.to_datetime(df['Policy Start Date'])\n    df['Year'] = df['Policy Start Date'].dt.year.astype(float)    \n    df.drop('Policy Start Date', axis=1, inplace=True)    \n\nobject_columns = fcn(test)[1]\n\nfor df in [train, test] :\n    for column in object_columns :\n        df[column] = df[column].astype('string')\n    df['Year'] = df['Year'].astype(float)\n\nunknown = ['Marital Status', 'Occupation', 'Customer Feedback']\nfor df in [train, test] :\n    for column in  unknown:\n        df[column] = df[column].fillna('Unknown')\n\nfor df in [train, test] :\n    df['person'] = df['Marital Status'] + '_' + df['Gender']# + df['Smoking Status']\n    df['property'] = df['Location'] + '_' + df['Property Type']\n    df['Occupation'] = df['Occupation'] + '_' + df['Education Level']\n    df.drop(['Marital Status', 'Gender', 'Location', 'Property Type', 'Education Level'], axis=1, inplace=True)    \n\nDB.datasets.put(dst, train, test)\n\nencode(dst, dst)\nDB.datasets.summary(dst, tab = False, dataframes = ['train'])","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"evaluate(dst, show_plot=True)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# &#128204; Dataset 3\n#### 'Policy Start Date' to 'Year'\n#### Fill NaN in 'Marital Status', 'Occupation', 'Customer Feedback' with 'Unknown'\n#### *Create \"is_nan\" columns*\n#### Fill NaN in numerical columns with mean value","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"src, dst, encode = 'loaded', 'ds3', cats_to_str\ntrain, test = DB.datasets.train(src), DB.datasets.test(src)\n\nfor df in [train, test] :\n    df['Policy Start Date'] = pd.to_datetime(df['Policy Start Date'])\n    df['Year'] = df['Policy Start Date'].dt.year.astype(float)    \n    df.drop('Policy Start Date', axis=1, inplace=True)    \n\nobject_columns = fcn(test)[1]\n\nfor df in [train, test] :\n    for column in object_columns :\n        df[column] = df[column].astype('string')\n    df['Year'] = df['Year'].astype(float)\n\nunknown = ['Marital Status', 'Occupation', 'Customer Feedback']\nfor df in [train, test] :\n    for column in  unknown:\n        df[column] = df[column].fillna('Unknown')\n\nmean = ['Age', 'Vehicle Age', 'Insurance Duration', 'Annual Income', 'Health Score', 'Previous Claims', 'Credit Score']\nfor df in [train, test] :\n    for column in  mean:\n        \n        df[f'{column}_is_nan'] = df[column].isna()\n        \n        mn = train[column].mean()\n        df[column] = df[column].fillna(mn)\n    df['Number of Dependents is nan'] = df['Number of Dependents'].isna()\n    df['Number of Dependents'] = df['Number of Dependents'].fillna(2.0)\n\nDB.datasets.put(dst, train, test)\n\nencode(dst, dst)\nDB.datasets.summary(dst, tab = False, dataframes = ['train'])","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"evaluate(dst)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# &#128204; Dataset 4\n#### 'Policy Start Date' to 'Year'\n#### Fill NaN in 'Marital Status', 'Occupation', 'Customer Feedback' with 'Unknown'\n#### Unite categorical columns","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"src, dst, encode = 'loaded', 'ds4', cats_to_str\n\ntrain, test = DB.datasets.train(src), DB.datasets.test(src)\n\nfor df in [train, test] :\n    df['Policy Start Date'] = pd.to_datetime(df['Policy Start Date'])\n    df['Year'] = df['Policy Start Date'].dt.year.astype(float)    \n    df.drop('Policy Start Date', axis=1, inplace=True)    \n\nobject_columns = fcn(test)[1]\n\nfor df in [train, test] :\n    for column in object_columns :\n        df[column] = df[column].astype('string')\n    df['Year'] = df['Year'].astype(float)\n\nunknown = ['Marital Status', 'Occupation', 'Customer Feedback']\nfor df in [train, test] :\n    for column in  unknown:\n        df[column] = df[column].fillna('Unknown')\n\nfor df in [train, test] :\n    df['person'] = df['Marital Status'] + '_' + df['Gender']# + df['Smoking Status']\n    df['property'] = df['Location'] + '_' + df['Property Type']\n    df['Occupation'] = df['Occupation'] + '_' + df['Education Level']\n    df.drop(['Marital Status', 'Gender', 'Location', 'Property Type', 'Education Level'], axis=1, inplace=True)    \n\nDB.datasets.put(dst, train, test)\n\nencode(dst, dst)\nDB.datasets.summary(dst, tab = False, dataframes = ['train'])","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"evaluate(dst, show_plot=True)","metadata":{"trusted":true,"_kg_hide-output":true},"outputs":[],"execution_count":null}]}