{"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":"gpu","dataSources":[{"sourceId":84896,"databundleVersionId":10305135,"sourceType":"competition"},{"sourceId":8566505,"sourceType":"datasetVersion","datasetId":5121438},{"sourceId":10106706,"sourceType":"datasetVersion","datasetId":3959915}],"dockerImageVersionId":30786,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# End-to-end flow with BlueCast","metadata":{"_uuid":"4f0cdeb7-a9be-4295-9970-f903799bccaf","_cell_guid":"2a3a87ea-c656-4e80-bb42-10ecb2f4d2c1","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"markdown","source":"![Bildschirmfoto vom 2024-12-01 06-17-35.png](attachment:d3ce61fe-e150-45a2-ac25-d230a941417b.png)","metadata":{"_uuid":"bfaa82a0-f5c7-4c3b-a3cb-ce550ec031f3","_cell_guid":"2e01b624-9336-48f9-91ef-43cec585730a","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"code","source":"from IPython.core.display import HTML\n\n# Define custom CSS directly in Python variable\ncustom_css = \"\"\"\n<style>\n  :root {\n    --header1_color: #204709;\n    --header2_color: #42841F;\n    --header3_color: #6EAF4B;\n    --keyword_color: #cc241d; /* import */\n    --string_color: #79740e;\n    --number_color: #b16286;\n    --def_color: #689d6a; /* class name */\n    --property_color: #458588; /* python properties */\n    --builtin_color: #689d6a;\n    --comment_color: #9f9f9f;\n    --comment_color_2: #458588; /* equals sign */\n    --operator_color: #a221f2;\n    --font_color: #3c3836; /* general font */\n    --variable2_color: #b16286; /*self keyworda */\n    --box_color: #fffdee; /* Remove opacity */\n  }\n\n  /* Add the following style for headers with background color */\n  h1,\n  .h1 {\n    font-family: \"Trebuchet MS\", sans-serif;\n    font-size: 2em !important;\n    letter-spacing: 1px;\n    color: var(--header1_color);\n    border-bottom: 3px solid var(--header1_color);\n    background-color: #000080;\n    padding: 0.5em;\n    color: #ffff00 !important;\n  }\n\n  h2,\n  .h2 {\n    font-family: \"Trebuchet MS\";\n    font-size: 1.7em !important;\n    color: var(--header2_color);\n    background-color: #000080;\n    padding: 0.5em;\n    color: #ffff00 !important;\n  }\n\n  h3,\n  .h3 {\n    font-family: \"Trebuchet MS\";\n    font-size: 1.4em !important;\n    color: var(--header3_color);\n    background-color: #000080;\n    padding: 0.5em;\n    color: #ffff00 !important;\n  }\n\n  /* Rest of your existing styles... */\n\n  body[data-jp-theme-light=\"true\"] .jp-Notebook .CodeMirror.cm-s-jupyter {\n    background-color: var(--box_color) !important;\n  }\n\n  div.input_area {\n    background-color: var(--box_color) !important;\n  }\n</style>\n\"\"\"\n\n# Apply custom CSS\nHTML(custom_css)","metadata":{"_uuid":"cd30e4b3-ed28-4d03-be11-bbcc92b40432","_cell_guid":"ac7cfc58-7ff4-42ac-aeb5-f32faf1aac3a","trusted":true,"collapsed":false,"_kg_hide-input":true,"execution":{"iopub.status.busy":"2024-12-01T05:14:21.087287Z","iopub.execute_input":"2024-12-01T05:14:21.087541Z","iopub.status.idle":"2024-12-01T05:14:21.099294Z","shell.execute_reply.started":"2024-12-01T05:14:21.087514Z","shell.execute_reply":"2024-12-01T05:14:21.098333Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"<h1 style=\"background-color: #000080; color: #ffff00;\">Table of contents</h1>\n\n* [Import libraries](#import-libraries)\n* [Load data and train model](#load-data-and-train-model)\n* [Inference and submission](#inference-and-submission)","metadata":{"_uuid":"9309969d-2faa-4c3a-8c44-e527ea9f144b","_cell_guid":"f00e3580-0f89-4b0a-a7f8-3df9d2f36868","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"markdown","source":"# Import libraries","metadata":{"_uuid":"85325523-e178-4f54-ac42-155fafebda56","_cell_guid":"9743c129-de00-4ade-baca-2236021d0640","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"code","source":"%%capture\n!pip install optuna-integration --no-index --find-links=file:/kaggle/input/optuna-integration/optuna_integration-3.6.0-py3-none-any.whl","metadata":{"_uuid":"42d2eba9-010d-4e94-b513-888dfdc2652e","_cell_guid":"17932a7d-042d-4875-8edb-4a5055b5f26b","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2024-12-01T05:14:21.101492Z","iopub.execute_input":"2024-12-01T05:14:21.101782Z","iopub.status.idle":"2024-12-01T05:14:30.348901Z","shell.execute_reply.started":"2024-12-01T05:14:21.101756Z","shell.execute_reply":"2024-12-01T05:14:30.347921Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%capture\n!pip install bluecast --no-index --find-links=file:/kaggle/input/bluecast-nightly/bluecast-1.6.4-py3-none-any.whl","metadata":{"_uuid":"3e1fd3e6-c4ab-4d16-86b5-c9bcb39657a0","_cell_guid":"5184691b-236c-4477-ad9f-cc1feede2354","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2024-12-01T05:14:30.350627Z","iopub.execute_input":"2024-12-01T05:14:30.350918Z","iopub.status.idle":"2024-12-01T05:14:38.868459Z","shell.execute_reply.started":"2024-12-01T05:14:30.350891Z","shell.execute_reply":"2024-12-01T05:14:38.867487Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import itertools\nimport numpy as np\nimport pandas as pd\nimport re\nfrom bluecast.blueprints.cast import BlueCast\nfrom bluecast.blueprints.cast_regression import BlueCastRegression\nfrom bluecast.blueprints.cast_cv import BlueCastCV\nfrom bluecast.blueprints.cast_cv_regression import BlueCastCVRegression\nfrom sklearn.model_selection import train_test_split","metadata":{"_uuid":"7de63ac5-bd20-45c1-96ed-4a83420a3d0e","_cell_guid":"f915e0a4-a82a-45e7-9385-a81b19e467ee","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2024-12-01T05:14:38.870002Z","iopub.execute_input":"2024-12-01T05:14:38.870297Z","iopub.status.idle":"2024-12-01T05:14:45.440177Z","shell.execute_reply.started":"2024-12-01T05:14:38.870268Z","shell.execute_reply":"2024-12-01T05:14:45.439116Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Load data and train model","metadata":{"_uuid":"f611b8d1-9307-4de5-9445-7eda4d67e13f","_cell_guid":"19c7c649-24b3-4456-b94d-207bb1ba73ef","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"code","source":"target = \"Premium Amount\"\n\n# Data Loading\ntrain = pd.read_csv(\"/kaggle/input/playground-series-s4e12/train.csv\")\ntest = pd.read_csv(\"/kaggle/input/playground-series-s4e12/test.csv\")\nsubmission = pd.read_csv(\"/kaggle/input/playground-series-s4e12/sample_submission.csv\")\n\ntrain[target] = np.log1p(train[target].values)\n\n\nautoml = BlueCastCVRegression(class_problem=\"regression\")\nautoml.conf_training.autotune_on_device = \"cpu\"\n\ndebug = False\nDO_ERROR_ANALYSIS = False\n\n\nif debug:\n    automl.conf_training.autotune_model = False\n    automl.conf_training.calculate_shap_values = False\n    train = train.sample(1000, random_state=80).reset_index(drop=True)\n    automl.conf_training.hyperparameter_tuning_rounds = 2\nelse:\n    automl.conf_training.out_of_fold_dataset_store_path = \"/kaggle/working/\" # only when using fit_eval afterwards\n    automl.conf_training.hypertuning_cv_repeats = 2\n    automl.conf_training.hyperparameter_tuning_max_runtime_secs = 60 * 60 * 2\n    automl.conf_training.autotune_on_device = \"gpu\"\n    #automl.conf_training.enable_feature_selection = True\n    automl.conf_xgboost.max_depth_min = 6\n    automl.conf_xgboost.max_depth_max = 9\n\n\nif not DO_ERROR_ANALYSIS:\n    automl.fit(train.copy(), target_col=target)\nelse:\n    automl.fit_eval(train.copy(), target_col=target)","metadata":{"_uuid":"d39adcd0-3cdf-4a88-9a13-8e287d70d878","_cell_guid":"f781e828-c03b-4e50-934f-227ae9c8d6ed","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2024-12-01T05:14:45.442443Z","iopub.execute_input":"2024-12-01T05:14:45.44341Z","iopub.status.idle":"2024-12-01T05:15:10.301915Z","shell.execute_reply.started":"2024-12-01T05:14:45.443366Z","shell.execute_reply":"2024-12-01T05:15:10.301109Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Inference and submission","metadata":{"_uuid":"408d1dd2-1719-40f9-af15-f8bf9ac6dc55","_cell_guid":"b97de308-debf-4559-9099-a6dc2106693a","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"code","source":"#probs = automl.predict_p_values(test)\ny_hat = automl.predict(test)\ny_hat","metadata":{"_uuid":"332a9f6d-845c-4b54-80e2-82c4c8b3cdc0","_cell_guid":"586b36b3-86d0-4293-8f6c-2a425cb27642","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2024-12-01T05:15:10.303198Z","iopub.execute_input":"2024-12-01T05:15:10.303779Z","iopub.status.idle":"2024-12-01T05:16:39.300598Z","shell.execute_reply.started":"2024-12-01T05:15:10.303738Z","shell.execute_reply":"2024-12-01T05:16:39.299734Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submission[target] = np.expm1(y_hat)\nsubmission.to_csv('submission.csv', index=False)\nprint(\"\\nSubmission file created: 'submission.csv'\")\nsubmission","metadata":{"_uuid":"7539f4ba-80d1-41a3-ba96-09215ad69125","_cell_guid":"83442d1c-ec96-4e52-801f-fc4fdce60a00","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2024-12-01T05:16:39.301718Z","iopub.execute_input":"2024-12-01T05:16:39.302034Z","iopub.status.idle":"2024-12-01T05:16:40.392857Z","shell.execute_reply.started":"2024-12-01T05:16:39.302006Z","shell.execute_reply":"2024-12-01T05:16:40.391728Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null}]}