{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","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}],"dockerImageVersionId":30822,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport os\nimport copy","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"this is working? yes? running?!aah! khe! submit!2","metadata":{}},{"cell_type":"code","source":"df_train = pd.read_csv('/kaggle/input/playground-series-s4e12/train.csv')\ndf_test = pd.read_csv('/kaggle/input/playground-series-s4e12/test.csv')","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Combine original and train data\n'''\ndf_original = pd.read_csv('/kaggle/input/insurance-premium-prediction/Insurance Premium Prediction Dataset.csv')\nk=1\nif 'id'in df_train.columns:\n    df_train = df_train.drop(['id'],axis=1)\nif all(df_train.columns == df_original[df_train.columns].columns) and k:\n    df_original = df_original[df_train.columns]\n    df_train = pd.concat([df_train,df_original])\n    k=0\n'''","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%time\n# dictionary with the keys to replace\ndi_gender = {'Male': 0, 'Female': 1}\ndi_marital_status = {np.NaN: 0, \"Single\": 1, \"Married\": 2, \"Divorced\":3}\ndi_education_level = {\"High School\": 0, \"Bachelor's\": 1, \"Master's\": 2, 'PhD': 3}\ndi_occupation = {np.NaN: 0, \"Employed\": 1, \"Self-Employed\": 2, \"Unemployed\": 3}\ndi_location = {\"Rural\": 0, \"Suburban\": 1, \"Urban\": 2}\ndi_policy_type = {\"Premium\": 0, \"Comprehensive\": 1, \"Basic\": 2}\ndi_customer_feedback = {np.NaN: 0, \"Poor\": 1, \"Average\": 2, \"Good\": 3}\ndi_smoking_status = {\"Yes\": 0, \"No\": 1}\ndi_exercise_frequency = {'Monthly': 0, 'Weekly': 1, 'Daily': 2, 'Rarely': 3}\ndi_property_type = {'House': 0, 'Apartment': 1, 'Condo': 2}\nclean_data = {\"Gender\": di_gender,\n              \"Marital Status\": di_marital_status,\n              \"Education Level\": di_education_level,\n              \"Occupation\": di_occupation,\n              \"Location\": di_location,\n              \"Policy Type\": di_policy_type,\n              \"Customer Feedback\": di_customer_feedback,\n              \"Smoking Status\": di_smoking_status,\n              \"Exercise Frequency\": di_exercise_frequency,\n              \"Property Type\": di_property_type}\n\ndef data_clean (raw1 : pd.DataFrame) -> pd.DataFrame:\n    raw = copy.copy(raw1)\n    drop_columns = []\n    raw['row_nans'] = raw.isna().sum(axis=1)\n    if 'Policy Start Date' in raw.columns:\n        raw['Policy Start Date'] = pd.to_datetime(raw['Policy Start Date']).astype(\"int64\")/10**19\n    if 'Premium Amount' in raw.columns:\n        raw = raw.dropna(subset=[\"Premium Amount\"])\n        raw['Premium log'] = np.log(raw['Premium Amount']+1.0)\n        drop_columns.append('Premium Amount')\n    if 'id' in raw.columns:\n        drop_columns.append('id')\n    raw = raw.drop(drop_columns,axis=1)\n    raw = raw.replace(clean_data)\n    raw = raw.drop_duplicates()\n    return raw\n\ntrain_clean_df = data_clean(df_train)\ntest_clean_df = data_clean(df_test)\ntrain_clean_df.info()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_clean_df = train_clean_df.astype('float32')\ntrain_clean_df.info()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!pip install autogluon.tabular --no-cache-dir -q","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!pip install ray==2.30.0","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from autogluon.tabular import TabularPredictor","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%time\npredictor = TabularPredictor(path = '/kaggle/working/Autogluon/',\n                                      label='Premium log', \n                              problem_type = 'regression', \n                              eval_metric = 'root_mean_squared_error',\n                              )\n\n    \npredictor.fit(train_data= train_clean_df, \n                       presets='best_quality',\n# best_quality,  medium_quality                         \n                       time_limit = 60*60*10, \n                       num_gpus=1, \n                       num_bag_folds = 7,\n                       num_stack_levels = 4, \n                       auto_stack = True, \n                       dynamic_stacking=True,\n                       verbosity = 0\n                       )","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%time\npredictions_log = predictor.predict(test_clean_df)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%time\n# trainsforming the results back from the log scake \npredictions = np.exp(predictions_log)-1","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_sample = pd.read_csv('/kaggle/input/playground-series-s4e12/sample_submission.csv')\ndf_sample","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_sample['Premium Amount'] = predictions\ndf_sample","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_sample.to_csv('submission.csv', index=False)","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}