{"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":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-06T11:38:01.220985Z","iopub.execute_input":"2024-12-06T11:38:01.222327Z","iopub.status.idle":"2024-12-06T11:38:01.70553Z","shell.execute_reply.started":"2024-12-06T11:38:01.222274Z","shell.execute_reply":"2024-12-06T11:38:01.704206Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"base_file_dir = \"/kaggle/input/playground-series-s4e12/\"\n\ntrain_df = pd.read_csv(f\"{base_file_dir}/train.csv\")\ntest_df = pd.read_csv(f\"{base_file_dir}/test.csv\")\nsub_df = pd.read_csv(f\"{base_file_dir}/sample_submission.csv\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-06T11:38:02.649228Z","iopub.execute_input":"2024-12-06T11:38:02.649939Z","iopub.status.idle":"2024-12-06T11:38:14.13662Z","shell.execute_reply.started":"2024-12-06T11:38:02.649895Z","shell.execute_reply":"2024-12-06T11:38:14.135392Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# train_df = pd.get_dummies(train_df, columns=['Gender','Marital Status','Education Level','Occupation','Location','Policy Type','Smoking Status','Exercise Frequency','Property Type','Customer Feedback'])\n# test_df = pd.get_dummies(test_df, columns=['Gender','Marital Status','Education Level','Occupation','Location','Policy Type','Smoking Status','Exercise Frequency','Property Type','Customer Feedback'])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-06T11:38:14.138881Z","iopub.execute_input":"2024-12-06T11:38:14.139335Z","iopub.status.idle":"2024-12-06T11:38:14.144747Z","shell.execute_reply.started":"2024-12-06T11:38:14.139288Z","shell.execute_reply":"2024-12-06T11:38:14.14358Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_df['Policy Start Date'] = pd.to_datetime(train_df['Policy Start Date'])\ntest_df['Policy Start Date'] = pd.to_datetime(test_df['Policy Start Date'])\n\ntrain_df['Year'] = train_df['Policy Start Date'].dt.year\ntrain_df['Month'] = train_df['Policy Start Date'].dt.month\ntrain_df['Day'] = train_df['Policy Start Date'].dt.day\ntrain_df['Hour'] = train_df['Policy Start Date'].dt.hour\ntrain_df['Minute'] = train_df['Policy Start Date'].dt.minute\ntrain_df['Weekday'] = train_df['Policy Start Date'].dt.weekday\n\ntest_df['Year'] = test_df['Policy Start Date'].dt.year\ntest_df['Month'] = test_df['Policy Start Date'].dt.month\ntest_df['Day'] = test_df['Policy Start Date'].dt.day\ntest_df['Hour'] = test_df['Policy Start Date'].dt.hour\ntest_df['Minute'] = test_df['Policy Start Date'].dt.minute\ntest_df['Weekday'] = test_df['Policy Start Date'].dt.weekday\n\n\ntrain_df = train_df.drop('Policy Start Date', axis=1)\ntest_df = test_df.drop('Policy Start Date', axis=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-06T11:38:14.146148Z","iopub.execute_input":"2024-12-06T11:38:14.146573Z","iopub.status.idle":"2024-12-06T11:38:15.88645Z","shell.execute_reply.started":"2024-12-06T11:38:14.146528Z","shell.execute_reply":"2024-12-06T11:38:15.885267Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Categorical Variables","metadata":{}},{"cell_type":"code","source":"from sklearn.preprocessing import StandardScaler, FunctionTransformer, LabelEncoder, OneHotEncoder\nfrom sklearn.pipeline import make_pipeline, Pipeline\nfrom sklearn.compose import ColumnTransformer, make_column_selector, make_column_transformer\nfrom sklearn.experimental import enable_iterative_imputer\nfrom sklearn.impute import SimpleImputer, IterativeImputer\nimport category_encoders as ce\n\ncategorical_features = train_df.drop('Premium Amount', axis=1).select_dtypes(include='object').columns.values\nnumerical_features = train_df.drop(\"Premium Amount\", axis=1).select_dtypes(include=np.number).columns.values\n\npreprocessing = ColumnTransformer([\n    ('num', make_pipeline(SimpleImputer(strategy='mean'), FunctionTransformer(), StandardScaler()), numerical_features),\n    ('cat', make_pipeline(SimpleImputer(strategy='most_frequent'), ce.cat_boost.CatBoostEncoder()), categorical_features)\n], remainder='drop')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-06T11:38:15.889213Z","iopub.execute_input":"2024-12-06T11:38:15.889706Z","iopub.status.idle":"2024-12-06T11:38:18.278927Z","shell.execute_reply.started":"2024-12-06T11:38:15.889654Z","shell.execute_reply":"2024-12-06T11:38:18.277687Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X = train_df.drop(columns=['Premium Amount'])\ny = np.log1p(train_df['Premium Amount'])\n\nX = preprocessing.fit_transform(X, y)\ntestProcessed = preprocessing.transform(test_df)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-06T11:38:18.280442Z","iopub.execute_input":"2024-12-06T11:38:18.281138Z","iopub.status.idle":"2024-12-06T11:38:31.51468Z","shell.execute_reply.started":"2024-12-06T11:38:18.281087Z","shell.execute_reply":"2024-12-06T11:38:31.513545Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# from sklearn.linear_model import LinearRegression\n\n# model = LinearRegression()\n# model.fit(X,y)\n# y_pred=model.predict(testProcessed)\n\n# sub = pd.read_csv(\"/kaggle/input/playground-series-s4e12/sample_submission.csv\")\n# sub[\"Premium Amount\"] = np.expm1(y_pred)\n# sub.to_csv(\"submission.csv\", index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-06T11:38:31.515862Z","iopub.execute_input":"2024-12-06T11:38:31.516209Z","iopub.status.idle":"2024-12-06T11:38:31.522153Z","shell.execute_reply.started":"2024-12-06T11:38:31.516176Z","shell.execute_reply":"2024-12-06T11:38:31.520712Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.ensemble import StackingRegressor\nfrom sklearn.linear_model import LinearRegression, Ridge, Lasso\nfrom sklearn.tree import DecisionTreeRegressor\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.model_selection import cross_val_score\nimport numpy as np\nimport pandas as pd\n\n# Define base models for stacking\nbase_models = [\n    ('linear', LinearRegression()),\n    ('ridge', Ridge(alpha=1.0)),\n    ('lasso', Lasso(alpha=0.01)),\n    ('decision_tree', DecisionTreeRegressor(max_depth=5))\n]\n\n# Define the meta-model (stacker)\nmeta_model = RandomForestRegressor(n_estimators=100, random_state=42)\n\n# Create the stacking regressor\nstacking_model = StackingRegressor(estimators=base_models, final_estimator=meta_model, cv=5)\n\n# Train the stacking model\nstacking_model.fit(X, y)\n\n# Predict on the test set\ny_pred = stacking_model.predict(testProcessed)\n\n# Convert predictions back to the original scale if target transformation was applied\nsub = pd.read_csv(\"/kaggle/input/playground-series-s4e12/sample_submission.csv\")\nsub[\"Premium Amount\"] = np.expm1(y_pred) \nsub.to_csv(\"submission.csv\", index=False)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-06T11:38:41.590997Z","iopub.execute_input":"2024-12-06T11:38:41.591463Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sub","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}