{"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":"gpu","dataSources":[{"sourceId":84896,"databundleVersionId":10305135,"sourceType":"competition"},{"sourceId":10274354,"sourceType":"datasetVersion","datasetId":6357304},{"sourceId":10281890,"sourceType":"datasetVersion","datasetId":6362706},{"sourceId":10281942,"sourceType":"datasetVersion","datasetId":6362739},{"sourceId":10283001,"sourceType":"datasetVersion","datasetId":6363415}],"dockerImageVersionId":30823,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"from lightgbm import LGBMRegressor, early_stopping, log_evaluation\nfrom ydf import GradientBoostedTreesLearner\nfrom catboost import CatBoostRegressor, Pool\nfrom xgboost import XGBRegressor\nfrom sklearn.ensemble import HistGradientBoostingRegressor\nfrom sklearn.base import BaseEstimator, RegressorMixin\nfrom sklearn.preprocessing import OrdinalEncoder\nfrom sklearn.linear_model import Ridge, Lasso\nfrom sklearn.model_selection import KFold\nfrom sklearn.base import clone\nimport matplotlib.pyplot as plt\nimport contextlib, io\nimport seaborn as sns\nimport pandas as pd\nimport numpy as np\nimport warnings\nimport pickle\nimport shutil\nimport optuna\nimport json\nimport glob\nimport ydf\nimport os\nimport gc\n\nfrom sklearn.model_selection import *\nfrom sklearn.metrics import *\nfrom tqdm import tqdm\nfrom termcolor import colored\n\nfrom functools import partial\nimport scipy as sp\n\nimport matplotlib.pyplot as plt\nimport joblib\nimport warnings\nwarnings.filterwarnings('ignore')\npd.options.display.max_columns = None","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:14.530704Z","iopub.execute_input":"2024-12-24T02:05:14.530986Z","iopub.status.idle":"2024-12-24T02:05:20.367082Z","shell.execute_reply.started":"2024-12-24T02:05:14.530949Z","shell.execute_reply":"2024-12-24T02:05:20.366172Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%time\n\ndata_train = pd.read_csv('/kaggle/input/playground-series-s4e12/train.csv')\ndata_test = pd.read_csv('/kaggle/input/playground-series-s4e12/test.csv')\nsample = pd.read_csv('/kaggle/input/playground-series-s4e12/sample_submission.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:20.367852Z","iopub.execute_input":"2024-12-24T02:05:20.368271Z","iopub.status.idle":"2024-12-24T02:05:28.258228Z","shell.execute_reply.started":"2024-12-24T02:05:20.368249Z","shell.execute_reply":"2024-12-24T02:05:28.257423Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_cat , test_cat = joblib.load(\"/kaggle/input/modelos/CATBOOST_ENSEMBLE_V4_BEST_TRIAL_CV_5_SPLITS_ROUND_2_RETUNE.pkl\")\ntrain_lgbm , test_lgbm = joblib.load(\"/kaggle/input/modelos/LBGM_ENSEMBLE_V7_1_CV_5_SPLITS_ROUND_2.pkl\")\ntrain_xgb , test_xgb = joblib.load(\"/kaggle/input/modelos/XGB_ENSEMBLE_V1_CV_5_SPLITS_ROUND_1.pkl\")\n\ntrain_cat_0 , test_cat_0 = joblib.load(\"/kaggle/input/baseline/CATBOOST_BASELINE_V1.pkl\")\ntrain_lgbm_0 , test_lgbm_0 = joblib.load(\"/kaggle/input/baseline/LBGM_BASELINE_V2_TUNE.pkl\")\ntrain_xgb_0 , test_xgb_0 = joblib.load(\"/kaggle/input/baseline/XGB_BASELINE_V1.pkl\")\n\ntrain_lgbm_stack , test_lgbm_stack = joblib.load(\"/kaggle/input/ensemble/STACK_LGBM_V1_CV_5_SPLITS_ROUND_1.pkl\")\n\ntrain_w_v3 , test_w_v3 = joblib.load(\"/kaggle/input/ensemble-2/ENSEMBLE_WEIGHT_v3.pkl\")\ntrain_lgbm_nonlog_v3 , test_lgbm_nonlog_v3 = joblib.load(\"/kaggle/input/ensemble-2/LGBM_NONLOG_V5.pkl\")\ntrain_lgbm_stack_goss , test_lgbm_stack_goss = joblib.load(\"/kaggle/input/ensemble-2/STACK_LGBM_V2_CV_5_SPLITS_GOSS_ROUND_3.pkl\")\ntrain_cat_nolog , test_cat_nolog = joblib.load(\"/kaggle/input/ensemble-2/cat_non_loged.pkl\")\ntrain_cat_v1_1 , test_cat_v1_1 = joblib.load(\"/kaggle/input/ensemble-2/catboost_ensemble_nonlog_model_v1_1.pkl\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:28.259069Z","iopub.execute_input":"2024-12-24T02:05:28.259328Z","iopub.status.idle":"2024-12-24T02:05:29.293916Z","shell.execute_reply.started":"2024-12-24T02:05:28.259294Z","shell.execute_reply":"2024-12-24T02:05:29.293008Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train['premium_amount_cat'] = train_cat\ndata_test['premium_amount_cat'] = test_cat\n\ndata_train['premium_amount_lgbm'] = train_lgbm\ndata_test['premium_amount_lgbm'] = test_lgbm\n\ndata_train['premium_amount_xgb'] = train_xgb\ndata_test['premium_amount_xgb'] = test_xgb\n\ndata_train['premium_amount_lgbm_0'] = train_lgbm_0\ndata_test['premium_amount_lgbm_0'] = test_lgbm_0\n\ndata_train['premium_amount_cat_0'] = train_cat_0\ndata_test['premium_amount_cat_0'] = test_cat_0\n\ndata_train['premium_amount_xgb_0'] = train_xgb_0\ndata_test['premium_amount_xgb_0'] = test_xgb_0\n\ndata_train['premium_amount_lgbm_stack'] = train_lgbm_stack\ndata_test['premium_amount_lgbm_stack'] = test_lgbm_stack\n\ndata_train['premium_amount_w_v3'] = train_w_v3\ndata_test['premium_amount_w_v3'] = test_w_v3\n\ndata_train['premium_amount_lgbm_nonlog_v3'] = train_lgbm_nonlog_v3\ndata_test['premium_amount_lgbm_nonlog_v3'] = test_lgbm_nonlog_v3\n\ndata_train['premium_amount_lgbm_stack_goss'] = train_lgbm_stack_goss\ndata_test['premium_amount_lgbm_stack_goss'] = test_lgbm_stack_goss\n\ndata_train['premium_amount_cat_nolog'] = train_cat_nolog\ndata_test['premium_amount_cat_nolog'] = test_cat_nolog\n\ndata_train['premium_amount_cat_v1_1'] = train_cat_v1_1\ndata_test['premium_amount_cat_v1_1'] = test_cat_v1_1","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.294698Z","iopub.execute_input":"2024-12-24T02:05:29.294904Z","iopub.status.idle":"2024-12-24T02:05:29.396589Z","shell.execute_reply.started":"2024-12-24T02:05:29.294888Z","shell.execute_reply":"2024-12-24T02:05:29.395963Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train = pd.DataFrame()\ntrain['premium_amount_cat'] = data_train['premium_amount_cat']\ntrain['premium_amount_lgbm'] = data_train['premium_amount_lgbm']\ntrain['premium_amount_xgb'] = data_train['premium_amount_xgb']\ntrain['premium_amount_lgbm_0'] = data_train['premium_amount_lgbm_0']\ntrain['premium_amount_cat_0'] = data_train['premium_amount_cat_0']\ntrain['premium_amount_xgb_0'] = data_train['premium_amount_xgb_0']\ntrain['premium_amount_lgbm_stack'] = data_train['premium_amount_lgbm_stack']\ntrain['premium_amount_w_v3'] = data_train['premium_amount_w_v3']\ntrain['premium_amount_lgbm_nonlog_v3'] = data_train['premium_amount_lgbm_nonlog_v3']\ntrain['premium_amount_lgbm_stack_goss'] = data_train['premium_amount_lgbm_stack_goss']\ntrain['premium_amount_cat_nolog'] = data_train['premium_amount_cat_nolog']\ntrain['premium_amount_cat_v1_1'] = data_train['premium_amount_cat_v1_1']\n\ntrain['Premium Amount'] = data_train['Premium Amount']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.397284Z","iopub.execute_input":"2024-12-24T02:05:29.397495Z","iopub.status.idle":"2024-12-24T02:05:29.488492Z","shell.execute_reply.started":"2024-12-24T02:05:29.397477Z","shell.execute_reply":"2024-12-24T02:05:29.487822Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test = pd.DataFrame()\ntest['premium_amount_cat'] = data_test['premium_amount_cat']\ntest['premium_amount_lgbm'] = data_test['premium_amount_lgbm']\ntest['premium_amount_xgb'] = data_test['premium_amount_xgb']\ntest['premium_amount_lgbm_0'] = data_test['premium_amount_lgbm_0']\ntest['premium_amount_cat_0'] = data_test['premium_amount_cat_0']\ntest['premium_amount_xgb_0'] = data_test['premium_amount_xgb_0']\ntest['premium_amount_lgbm_stack'] = data_test['premium_amount_lgbm_stack']\n\ntest['premium_amount_w_v3'] = data_test['premium_amount_w_v3']\ntest['premium_amount_lgbm_nonlog_v3'] = data_test['premium_amount_lgbm_nonlog_v3']\ntest['premium_amount_lgbm_stack_goss'] = data_test['premium_amount_lgbm_stack_goss']\ntest['premium_amount_cat_nolog'] = data_test['premium_amount_cat_nolog']\ntest['premium_amount_cat_v1_1'] = data_test['premium_amount_cat_v1_1']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.490712Z","iopub.execute_input":"2024-12-24T02:05:29.490944Z","iopub.status.idle":"2024-12-24T02:05:29.548368Z","shell.execute_reply.started":"2024-12-24T02:05:29.490924Z","shell.execute_reply":"2024-12-24T02:05:29.547427Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X = train.drop(['Premium Amount'], axis=1)\ny = train['Premium Amount']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.549891Z","iopub.execute_input":"2024-12-24T02:05:29.550166Z","iopub.status.idle":"2024-12-24T02:05:29.621731Z","shell.execute_reply.started":"2024-12-24T02:05:29.550146Z","shell.execute_reply":"2024-12-24T02:05:29.620742Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 1 - Weighted ensemble","metadata":{}},{"cell_type":"code","source":"features = test.columns.values","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.622517Z","iopub.execute_input":"2024-12-24T02:05:29.622801Z","iopub.status.idle":"2024-12-24T02:05:29.635194Z","shell.execute_reply.started":"2024-12-24T02:05:29.622778Z","shell.execute_reply":"2024-12-24T02:05:29.634324Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"features","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.636121Z","iopub.execute_input":"2024-12-24T02:05:29.636413Z","iopub.status.idle":"2024-12-24T02:05:29.651464Z","shell.execute_reply.started":"2024-12-24T02:05:29.636382Z","shell.execute_reply":"2024-12-24T02:05:29.650691Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"class Averager(object):\n\n    def __init__(self, method='nelder-mead', round_avg=False, options={}):\n        self.weights_ = []\n        self.opt_ = ''\n        self.method_ = method\n        self.round_avg_ = round_avg\n        self.options_ = options\n\n    def _weighted_average(self, weights, values):\n        qty = len(values)\n        sum_values = values[0] * weights[0]\n        sum_weights = weights[0]\n        for i in range(1, qty):\n            sum_values += values[i] * weights[i]\n            sum_weights += weights[i]\n        if self.round_avg_:\n            return int(np.round(sum_values / sum_weights, 0))\n        return sum_values / sum_weights\n\n    def _score(self, weights, values, true_labels):\n        preds = self._weighted_average(weights, values)\n        return np.sqrt(mean_squared_log_error(true_labels, np.clip(preds, 20, 4999) ))\n\n    def fit(self, values, true_labels):\n        qty = len(values)\n        initial_weights = [1 for _ in range(qty)]\n        score_partial = partial(self._score, values=values, true_labels=true_labels)\n        self.opt_ = sp.optimize.minimize(score_partial, initial_weights, method=self.method_, options=self.options_)\n        self.weights_ = self.opt_['x']\n\n    def predict(self, values):\n        assert len(self.weights_) == len(values), 'Averager error, must be fitted before predict'\n        return self._weighted_average(self.weights_, values)\n\n    def fit_predict(self, values, true_labels):\n        self.fit(values, true_labels)\n        return self.predict(values)\n\n    def weights(self):\n        return self.weights_\n\n    def optimization(self):\n        return self.opt_","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.652169Z","iopub.execute_input":"2024-12-24T02:05:29.65243Z","iopub.status.idle":"2024-12-24T02:05:29.665313Z","shell.execute_reply.started":"2024-12-24T02:05:29.65241Z","shell.execute_reply":"2024-12-24T02:05:29.664495Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def blend(train, test, members, verbose=1):\n    X = [train[col].values for col in members]\n    if verbose > 0:\n        print('train arrays:')\n        for a in X:\n            print(a)\n            \n    maxiter = len(members) * 500\n    \n    y = train['Premium Amount'].values\n    \n    averager = Averager(options={'maxiter':maxiter})\n    \n    x_valid = np.clip(averager.fit_predict(X, y), 20.0, 4999.0)\n    \n    if verbose > 0:\n        print('\\nWEIGHTS:\\n', averager.weights())\n        print('weighted average:\\n', x_valid)\n\n    score = np.sqrt(mean_squared_log_error(y, x_valid))\n\n    X_test = [test[col].values for col in members]\n    if verbose > 0:\n        print('arrays to blend:')\n        for a in X_test:\n            print(a)\n            \n    result_train = np.clip(averager.predict(X), 20, 4999)\n        \n    result_test = np.clip(averager.predict(X_test), 20, 4999)\n    \n    if verbose > 0:\n        print('weighted average test:\\n', result_test, '\\n')\n\n    print(f'RMSLE: {score}')\n    \n    return result_train, result_test, score\n\ndef blend_score(members):\n    _, score = blend(TRAIN, TEST, members, verbose=0)\n    return score","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.666201Z","iopub.execute_input":"2024-12-24T02:05:29.666404Z","iopub.status.idle":"2024-12-24T02:05:29.683676Z","shell.execute_reply.started":"2024-12-24T02:05:29.66638Z","shell.execute_reply":"2024-12-24T02:05:29.683071Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_pred, test_pred, score_averager = blend(train, test, features) ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:05:29.684456Z","iopub.execute_input":"2024-12-24T02:05:29.684749Z","iopub.status.idle":"2024-12-24T02:07:56.285101Z","shell.execute_reply.started":"2024-12-24T02:05:29.684729Z","shell.execute_reply":"2024-12-24T02:07:56.28418Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sample['Premium Amount'] = test_pred\nsample.to_csv('ENSEMBLE_WEIGHT_v3_3.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:07:56.28604Z","iopub.execute_input":"2024-12-24T02:07:56.286374Z","iopub.status.idle":"2024-12-24T02:07:57.566596Z","shell.execute_reply.started":"2024-12-24T02:07:56.28635Z","shell.execute_reply":"2024-12-24T02:07:57.565712Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sample","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:07:57.567483Z","iopub.execute_input":"2024-12-24T02:07:57.567789Z","iopub.status.idle":"2024-12-24T02:07:57.579416Z","shell.execute_reply.started":"2024-12-24T02:07:57.567754Z","shell.execute_reply":"2024-12-24T02:07:57.578597Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"joblib.dump([train_pred,test_pred],\"ENSEMBLE_WEIGHT_v3_3.pkl\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:07:57.580202Z","iopub.execute_input":"2024-12-24T02:07:57.580484Z","iopub.status.idle":"2024-12-24T02:07:57.604419Z","shell.execute_reply.started":"2024-12-24T02:07:57.580457Z","shell.execute_reply":"2024-12-24T02:07:57.603845Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 3 - Stack LGBM","metadata":{}},{"cell_type":"code","source":"modelos = []","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:12:10.538912Z","iopub.execute_input":"2024-12-24T02:12:10.539231Z","iopub.status.idle":"2024-12-24T02:12:10.543624Z","shell.execute_reply.started":"2024-12-24T02:12:10.539206Z","shell.execute_reply":"2024-12-24T02:12:10.542693Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def TrainLGBM(params, n_splits, SEED):\n     kfold = RepeatedKFold(n_splits=n_splits, n_repeats=1, random_state=SEED)\n     train_rmse_scores = []\n     val_rmse_scores = []\n     models = []\n     oof = np.zeros(len(X))\n\n     for fold, (train_idx, val_idx) in enumerate(tqdm(kfold.split(X, y), desc=\"Training Folds\", total=n_splits)):\n         X_train, X_val = X.iloc[train_idx], X.iloc[val_idx]\n         y_train, y_val = y.iloc[train_idx], y.iloc[val_idx]\n\n         print(f\"-------- Woking on fold {fold} --------\")\n         \n         y_train_log = np.log1p(y_train)\n         y_val_log = np.log1p(y_val)\n\n         model = LGBMRegressor(**params, device='gpu', verbose=-1, n_jobs=-1)\n         model.fit(X_train, y_train_log, \n                   eval_set=[(X_val, y_val_log)], \n                  eval_metric='rmse')\n         \n         models.append(model)\n         modelos.append(model)\n         \n         y_train_log_pred = model.predict(X_train)\n         y_val_log_pred = model.predict(X_val)\n        \n         y_train_pred = np.expm1(y_train_log_pred)\n         y_val_pred = np.expm1(y_val_log_pred)\n\n         y_train_pred = np.clip(y_train_pred, 20, 4999)\n         y_val_pred = np.clip(y_val_pred, 20, 4999)\n         \n         train_rmse = np.sqrt(mean_squared_log_error(y_train, y_train_pred))\n         val_rmse = np.sqrt(mean_squared_log_error(y_val, y_val_pred))\n\n         train_rmse_scores.append(train_rmse)\n         val_rmse_scores.append(val_rmse)\n         \n         oof[val_idx] = y_val_pred\n         \n         print(f\"\\n Scores Fold: {fold}\")\n         print(f\"Train RMSLE: {train_rmse:.4f}\")\n         print(f\"Validation RMSLE: {val_rmse:.4f}\")\n\n         if val_rmse > 1.035:\n             return 9999, 9999, models, oof\n    \n     mean_train_rmse = np.mean(train_rmse_scores)\n     mean_val_rmse = np.mean(val_rmse_scores)\n     print(\"\\n Final Mean Scores:\")\n     print(f\"Mean Train RMSLE: {mean_train_rmse:.4f}\")\n     print(f\"Mean Validation RMSLE: {mean_val_rmse:.4f}\")\n\n     return mean_train_rmse, mean_val_rmse, models, oof","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:12:11.911294Z","iopub.execute_input":"2024-12-24T02:12:11.911571Z","iopub.status.idle":"2024-12-24T02:12:11.919137Z","shell.execute_reply.started":"2024-12-24T02:12:11.911551Z","shell.execute_reply":"2024-12-24T02:12:11.918422Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def objectiveLGBM(trial):\n  params = {\n        #'boosting_type': trial.suggest_categorical('boosting_type', [\"gbdt\", \"dart\", \"goss\"]),\n        'n_estimators': trial.suggest_int('n_estimators', 100, 20000, step=100),\n        'num_iterations': trial.suggest_int('iterations', 100, 2000, step=50),\n        'learning_rate': trial.suggest_float('learning_rate', 0.005, 0.2, log=True),\n        #'num_leaves': trial.suggest_int('num_leaves', 20, 150),\n        #'max_depth': trial.suggest_int('max_depth', 3, 15),\n        #'min_child_samples': trial.suggest_int('min_child_samples', 5, 100),\n        #'subsample': trial.suggest_float('subsample', 0.5, 1.0),\n        #'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 1.0),\n        #'reg_alpha': trial.suggest_float('reg_alpha', 1e-4, 10.0, log=True),\n        #'reg_lambda': trial.suggest_float('reg_lambda', 1e-4, 10.0, log=True),\n        #'lambda_l2': trial.suggest_loguniform('l2_leaf_reg', 1e-3, 10.0),\n        #'device': 'gpu',\n    }\n\n  SEED = 42\n  n_splits = 5\n\n  mean_train_rmse, mean_val_rmse, models, oof = TrainLGBM(params, n_splits, SEED)\n  trial.set_user_attr('train_rmse', mean_train_rmse)\n  trial.set_user_attr('val_rmse', mean_val_rmse)\n  return mean_val_rmse","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:07:57.61377Z","iopub.execute_input":"2024-12-24T02:07:57.614047Z","iopub.status.idle":"2024-12-24T02:07:57.630132Z","shell.execute_reply.started":"2024-12-24T02:07:57.614016Z","shell.execute_reply":"2024-12-24T02:07:57.62931Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"RETUNE_LGBM = True  \n\nlgbm_params = {'n_estimators': 4800, 'iterations': 600, 'learning_rate': 0.009099534668516625}\n\n# Trial 0 finished with value: 1.0317003133537483 and parameters: {'boosting_type': 'gbdt', 'n_estimators': 8700, 'iterations': 400, 'learning_rate': 0.01804801308044478}\n#Mean Train RMSLE: 1.0293\n\n# Trial 2 finished with value: 1.0316630522223655 and parameters: {'boosting_type': 'goss', 'n_estimators': 12000, 'iterations': 1700, 'learning_rate': 0.006316286199485347}\n#Mean Train RMSLE: 1.0284\n\n\n# V3_3\n\n# Trial 0 finished with value: 1.0315496072718915 and parameters: {'n_estimators': 12800, 'iterations': 800, 'learning_rate': 0.030913605866330233}\n# Trial 4 finished with value: 1.031363419774444 and parameters: {'n_estimators': 4800, 'iterations': 600, 'learning_rate': 0.009099534668516625}\n\n\n\nif RETUNE_LGBM:\n    study = optuna.create_study(direction='minimize')\n    #study.enqueue_trial(lgbm_params)\n    study.optimize(objectiveLGBM, n_trials=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:12:23.900782Z","iopub.execute_input":"2024-12-24T02:12:23.901058Z","iopub.status.idle":"2024-12-24T02:16:43.801385Z","shell.execute_reply.started":"2024-12-24T02:12:23.901038Z","shell.execute_reply":"2024-12-24T02:16:43.800723Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"SEED = 42\nn_splits = 5\nmean_train_rmse, mean_val_rmse, models, oof = TrainLGBM(lgbm_params, n_splits, SEED)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:08:18.157721Z","iopub.execute_input":"2024-12-24T02:08:18.158048Z","iopub.status.idle":"2024-12-24T02:11:33.988929Z","shell.execute_reply.started":"2024-12-24T02:08:18.158024Z","shell.execute_reply":"2024-12-24T02:11:33.987682Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"len(modelos)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:17:04.76639Z","iopub.execute_input":"2024-12-24T02:17:04.766734Z","iopub.status.idle":"2024-12-24T02:17:04.77162Z","shell.execute_reply.started":"2024-12-24T02:17:04.766704Z","shell.execute_reply":"2024-12-24T02:17:04.770902Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_predictions = np.zeros(len(test))\n\nfor model in modelos:\n    test_predictions += np.clip(np.expm1(model.predict(test)), 20, 4999) / len(modelos)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:17:10.255272Z","iopub.execute_input":"2024-12-24T02:17:10.255552Z","iopub.status.idle":"2024-12-24T02:18:57.546434Z","shell.execute_reply.started":"2024-12-24T02:17:10.25553Z","shell.execute_reply":"2024-12-24T02:18:57.54571Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sample['Premium Amount'] = test_predictions\nsample.to_csv('STACK_LGBM_V2_CV_5_SPLITS_GOSS_ROUND_5.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:19:02.89159Z","iopub.execute_input":"2024-12-24T02:19:02.891919Z","iopub.status.idle":"2024-12-24T02:19:04.175139Z","shell.execute_reply.started":"2024-12-24T02:19:02.891896Z","shell.execute_reply":"2024-12-24T02:19:04.174462Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sample","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:19:06.843619Z","iopub.execute_input":"2024-12-24T02:19:06.843942Z","iopub.status.idle":"2024-12-24T02:19:06.852598Z","shell.execute_reply.started":"2024-12-24T02:19:06.843918Z","shell.execute_reply":"2024-12-24T02:19:06.851913Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"joblib.dump([train_pred,test_pred],\"STACK_LGBM_V2_CV_5_SPLITS_GOSS_ROUND_5.pkl\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:19:21.58499Z","iopub.execute_input":"2024-12-24T02:19:21.58529Z","iopub.status.idle":"2024-12-24T02:19:21.606101Z","shell.execute_reply.started":"2024-12-24T02:19:21.585266Z","shell.execute_reply":"2024-12-24T02:19:21.605442Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for model in modelos:\n    # Obtener la importancia de las características\n    importance = model.feature_importances_\n\n    # Crear un DataFrame para mostrar las importancias junto con los nombres de características\n    importance_df = pd.DataFrame({'feature': X.columns, 'importance': importance})\n\n    # Mostrar las importancias\n    print(importance_df.sort_values(by='importance', ascending=False))\n    print(' ')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-24T02:21:09.114134Z","iopub.execute_input":"2024-12-24T02:21:09.11445Z","iopub.status.idle":"2024-12-24T02:21:09.131836Z","shell.execute_reply.started":"2024-12-24T02:21:09.114427Z","shell.execute_reply":"2024-12-24T02:21:09.130851Z"}},"outputs":[],"execution_count":null}]}