{"metadata":{"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":53666,"databundleVersionId":6589269,"sourceType":"competition"},{"sourceId":6684565,"sourceType":"datasetVersion","datasetId":3714177}],"dockerImageVersionId":30587,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Machine Learning","metadata":{}},{"cell_type":"code","source":"%%time \n\nfrom IPython.display import display_html, clear_output, Markdown;\nfrom gc import collect;\nfrom copy import deepcopy;\nimport pandas as pd\nfrom typing import Dict, List, Tuple;\nimport numpy as np;\nfrom datetime import datetime;\nimport numpy as np;\n# import cudf\nfrom pprint import pprint;\nimport os;\nfrom functools import partial;\nfrom collections import Counter;\nfrom itertools import product;\nfrom colorama import Fore, Style, init;\nfrom warnings import filterwarnings;\nfilterwarnings('ignore');\n\nfrom tqdm.notebook import tqdm;\nimport seaborn as sns;\n\nimport matplotlib.pyplot as plt;\n%matplotlib inline\n\nclear_output();\nprint();","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:23:51.466216Z","iopub.execute_input":"2023-11-27T20:23:51.466482Z","iopub.status.idle":"2023-11-27T20:23:52.877628Z","shell.execute_reply.started":"2023-11-27T20:23:51.466456Z","shell.execute_reply":"2023-11-27T20:23:52.876550Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time \n\n# Data engineering and pipeline development:-\nfrom sklearn.model_selection import (RepeatedStratifiedKFold as RSKF, \n                                     StratifiedKFold as SKF,\n                                     KFold, \n                                     RepeatedKFold as RKF, \n                                     cross_val_score,\n                                     train_test_split\n                                    );\n\nfrom sklearn.pipeline import Pipeline, make_pipeline;\nfrom sklearn.base import BaseEstimator, TransformerMixin;\nfrom sklearn.compose import ColumnTransformer;\nfrom sklearn.metrics import average_precision_score as aps, accuracy_score, classification_report, mean_squared_error\n\n# Model development:-\nfrom xgboost import XGBClassifier;\nfrom lightgbm import LGBMClassifier, log_evaluation, early_stopping;\nfrom catboost import CatBoostClassifier;\nfrom sklearn.ensemble import (RandomForestClassifier as RFC,\n                              ExtraTreesClassifier as ETC,\n                              GradientBoostingClassifier as GBC,\n                              HistGradientBoostingClassifier as HGBC,\n                             );\nimport pickle","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:51:16.047779Z","iopub.execute_input":"2023-11-27T20:51:16.048913Z","iopub.status.idle":"2023-11-27T20:51:16.057050Z","shell.execute_reply.started":"2023-11-27T20:51:16.048867Z","shell.execute_reply":"2023-11-27T20:51:16.056051Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\nseries = pd.read_parquet(\"/kaggle/input/detect-sleep-states-memory-decrease/train_series.parquet\")\nevents = pd.read_parquet(r\"/kaggle/input/detect-sleep-states-memory-decrease/train_events.parquet\")\nchildsr = series[series['id_map'] == 127]\nchildev = events[events['id_map'] == 127]    \n\n\n# series.drop(['timestamp'], axis=1, inplace=True)\nseries.drop('step', inplace=True, axis=1)\nevents.drop(['timestamp', 'step'], inplace=True, axis=1)\nseries.dropna(inplace=True)\n# events.drop(, axis=1, inplace=True)\nevents.dropna(inplace=True)\nseries.reset_index(inplace=True, drop=True)\nevents.reset_index(inplace=True, drop=True)\n\nholdout_frac = 0.2  # 20% of data as holdout set\nseries_train, series_holdout = train_test_split(series, test_size=holdout_frac, random_state=42)\nevents_train, events_holdout = train_test_split(events, test_size=holdout_frac, random_state=42)","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:51:22.351274Z","iopub.execute_input":"2023-11-27T20:51:22.351651Z","iopub.status.idle":"2023-11-27T20:51:50.447374Z","shell.execute_reply.started":"2023-11-27T20:51:22.351621Z","shell.execute_reply":"2023-11-27T20:51:50.446395Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"series.isna().sum()","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:51:50.449440Z","iopub.execute_input":"2023-11-27T20:51:50.450200Z","iopub.status.idle":"2023-11-27T20:51:51.005148Z","shell.execute_reply.started":"2023-11-27T20:51:50.450164Z","shell.execute_reply":"2023-11-27T20:51:51.004022Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"events.isna().sum()/len(events)","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:51:51.006285Z","iopub.execute_input":"2023-11-27T20:51:51.006567Z","iopub.status.idle":"2023-11-27T20:51:51.014403Z","shell.execute_reply.started":"2023-11-27T20:51:51.006543Z","shell.execute_reply":"2023-11-27T20:51:51.013521Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# events[events.isna()].to_csv(\"Nan_events.parquet\", index=False)","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:37:54.934687Z","iopub.execute_input":"2023-11-27T20:37:54.935595Z","iopub.status.idle":"2023-11-27T20:37:54.989456Z","shell.execute_reply.started":"2023-11-27T20:37:54.935559Z","shell.execute_reply":"2023-11-27T20:37:54.988505Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# events.id_map.nunique()","metadata":{"execution":{"iopub.status.busy":"2023-11-26T23:15:59.029139Z","iopub.status.idle":"2023-11-26T23:15:59.030003Z","shell.execute_reply.started":"2023-11-26T23:15:59.029809Z","shell.execute_reply":"2023-11-26T23:15:59.029829Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"Series columns:\", series.columns)\nprint(\"Events columns:\", events.columns)","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:52:43.331539Z","iopub.execute_input":"2023-11-27T20:52:43.332352Z","iopub.status.idle":"2023-11-27T20:52:43.337640Z","shell.execute_reply.started":"2023-11-27T20:52:43.332320Z","shell.execute_reply":"2023-11-27T20:52:43.336636Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# len(series[series.id_map == 3 ])","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:52:56.754376Z","iopub.execute_input":"2023-11-27T20:52:56.755240Z","iopub.status.idle":"2023-11-27T20:52:56.759108Z","shell.execute_reply.started":"2023-11-27T20:52:56.755207Z","shell.execute_reply":"2023-11-27T20:52:56.758084Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# events[events.id_map == 3].step.max()","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:52:57.244695Z","iopub.execute_input":"2023-11-27T20:52:57.245080Z","iopub.status.idle":"2023-11-27T20:52:57.249206Z","shell.execute_reply.started":"2023-11-27T20:52:57.245047Z","shell.execute_reply":"2023-11-27T20:52:57.248213Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"events.head()","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:52:58.344761Z","iopub.execute_input":"2023-11-27T20:52:58.345124Z","iopub.status.idle":"2023-11-27T20:52:58.354281Z","shell.execute_reply.started":"2023-11-27T20:52:58.345095Z","shell.execute_reply":"2023-11-27T20:52:58.353307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"series.head()","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:53:00.014365Z","iopub.execute_input":"2023-11-27T20:53:00.014722Z","iopub.status.idle":"2023-11-27T20:53:00.025547Z","shell.execute_reply.started":"2023-11-27T20:53:00.014694Z","shell.execute_reply":"2023-11-27T20:53:00.024541Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"childsr = series[series['id_map'] == 127]\nchildev = events[events['id_map'] == 127]    \n\njoined_frame = pd.merge(childsr, childev, on='id_map')\n# joined_frame = pd.merge(events, series, on='id_map')\n# joined_frame.drop([\"id_map\", \"night\"], axis=1, inplace=True)\n# joined_frame.reset_index(inplace=True, drop=True)\nprint(joined_frame.shape)\njoined_frame.sample(6)","metadata":{"execution":{"iopub.status.busy":"2023-11-27T20:53:03.035993Z","iopub.execute_input":"2023-11-27T20:53:03.036404Z","iopub.status.idle":"2023-11-27T20:53:32.791787Z","shell.execute_reply.started":"2023-11-27T20:53:03.036373Z","shell.execute_reply":"2023-11-27T20:53:32.789476Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# child_ids = series.id_map.unique()\n# for sample_percent in range(10, 100, 10):\n#     sample_data = pd.DataFrame(columns = ['step_x', 'anglez', 'enmo', 'id_map', 'night', 'event', 'step_y'])\n#     for child_id in tqdm(child_ids):\n#         child_series = series_train[series.id_map == child_id].sample(frac=0.05)\n#         child_events = events_train[events.id_map == child_id].sample(frac = 0.05)\n        \n#         joined_frame = pd.merge(childsr, childev, how='left', on='id_map')\n    \n#         sample_data = pd.concat([sample_data, joined_frame])\n#     break","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:55:28.771773Z","iopub.execute_input":"2023-11-24T16:55:28.772165Z","iopub.status.idle":"2023-11-24T16:55:28.778886Z","shell.execute_reply.started":"2023-11-24T16:55:28.772133Z","shell.execute_reply":"2023-11-24T16:55:28.777269Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.impute import SimpleImputer\n\n# joined_frame = pd.merge(childsr, childev, how='left', on='id_map')\njoined_frame.dropna(inplace=True)\njoined_frame.reset_index(inplace=True, drop=True)\n\nfloat16_columns = ['step', 'anglez', 'enmo', 'event']\njoined_frame[float16_columns] = joined_frame[float16_columns].astype('float32')\nprint(joined_frame.shape)\njoined_frame.head()\n","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:55:28.780499Z","iopub.execute_input":"2023-11-24T16:55:28.780880Z","iopub.status.idle":"2023-11-24T16:55:28.816528Z","shell.execute_reply.started":"2023-11-24T16:55:28.780850Z","shell.execute_reply":"2023-11-24T16:55:28.815726Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = joined_frame.drop(\"event\", axis=1).to_numpy()\ny = joined_frame.event.to_numpy()\nX_train, X_val, y_train, y_val = train_test_split( X, y, test_size=0.2,random_state=42)\n\nimputer = SimpleImputer(strategy='mean')\nX_train = imputer.fit_transform(X_train)\nX_val = imputer.fit_transform(X_val)\n\nX_train.shape, X_val.shape, y_train.shape, y_val.shape","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:55:28.818043Z","iopub.execute_input":"2023-11-24T16:55:28.818619Z","iopub.status.idle":"2023-11-24T16:55:28.837608Z","shell.execute_reply.started":"2023-11-24T16:55:28.818581Z","shell.execute_reply":"2023-11-24T16:55:28.835985Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Check data balancing\n# df = pd.DataFrame(list(y_train.items()), columns=['ID', 'Value'])\n\n# plt.figure(figsize=(10, 6))\n# sns.countplot(x='Value', data=df, palette='viridis')\n# plt.title('Value Counts')\n# plt.xlabel('Value')\n# plt.ylabel('Count')\n# plt.show()","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:55:28.839135Z","iopub.execute_input":"2023-11-24T16:55:28.839733Z","iopub.status.idle":"2023-11-24T16:55:28.845911Z","shell.execute_reply.started":"2023-11-24T16:55:28.839700Z","shell.execute_reply":"2023-11-24T16:55:28.844846Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Base model (Gradient Boosting Classifier)","metadata":{}},{"cell_type":"code","source":"n_splits = 30\nkf = KFold(n_splits=n_splits, shuffle=True, random_state=42)\n\ngbc = GBC(n_estimators=500)\n# gbc.fit(X_train, y_train)\n\n# train_preds = gbc.predict(X_train)\n# test_preds = gbc.predict(X_val)\n# print(\"Train Classification report: \")\n# print(classification_report(y_train, train_preds))\n# print(\"Test Classification report: \")\n# print(classification_report(y_val, test_preds))\nmse_scores = []\nacc_scores = []\nbest_acc = 0\n\nfor fold_num, (train_index, test_index) in tqdm(enumerate(kf.split(X), 1), total=n_splits):\n    X_train, X_test = X[train_index], X[test_index]\n    y_train, y_test = y[train_index], y[test_index]\n    gbc.fit(X_train, y_train)\n    y_pred = gbc.predict(X_test)\n    mse = mean_squared_error(y_test, y_pred)\n    acc = accuracy_score(y_test, y_pred)\n    mse_scores.append(mse)\n    acc_scores.append(acc)\n    if best_acc < acc:\n        best_acc = acc\n        pickle.dump(gbc, open(\"GBC.pkl\", 'wb'))\n    print(\"Accuracy:\", acc)\n    print(\"MSE:\", mse)\n#     plt.figure(figsize=(10, 6))\n#     plt.scatter(y_test, y_pred)\n#     plt.title(f'Fold {fold_num} - True vs Predicted Values')\n#     plt.xlabel('True Values')\n#     plt.ylabel('Predicted Values')\n#     plt.show()\n\n\nn_splits = len(mse_scores)\n\nfig, ax1 = plt.subplots(figsize=(10, 6))\nax1.plot(range(1, n_splits + 1), mse_scores, marker='o', linestyle='-', color='b', label='MSE')\nax1.set_xlabel('Fold Number')\nax1.set_ylabel('Mean Squared Error', color='b')\nax1.tick_params('y', colors='b')\nax1.set_title('Mean Squared Error and Accuracy for Each Fold')\n\nax2 = ax1.twinx()\nax2.plot(range(1, n_splits + 1), acc_scores, marker='o', linestyle='-', color='r', label='Accuracy')\nax2.set_ylabel('Accuracy', color='r')\nax2.tick_params('y', colors='r')\n\n# Displaying the legend\nlines, labels = ax1.get_legend_handles_labels()\nlines2, labels2 = ax2.get_legend_handles_labels()\nax2.legend(lines + lines2, labels + labels2, loc='upper left')\n\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:55:28.850276Z","iopub.execute_input":"2023-11-24T16:55:28.851012Z","iopub.status.idle":"2023-11-24T16:58:18.599258Z","shell.execute_reply.started":"2023-11-24T16:55:28.850978Z","shell.execute_reply":"2023-11-24T16:58:18.598158Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# from tqdm import tqdm\n# from sklearn.model_selection import KFold\n# from sklearn.metrics import accuracy_score\n# from sklearn.ensemble import StackingClassifier\n# from sklearn.linear_model import LogisticRegression\n\n# # Define base classifiers\n# base_classifiers = [\n#     ('xgb', XGBClassifier()),\n#     ('lgbm', LGBMClassifier()),\n#     ('catboost', CatBoostClassifier(verbose=False)),\n#     ('rfc', RFC()),\n#     ('etc', ETC()),\n#     ('gbc', GBC()),\n#     ('hgbc', HGBC())\n# ]\n\n# # Create a stacking classifier with a logistic regression meta-classifier\n# stacking_classifier = StackingClassifier(estimators=base_classifiers,\n#                                          final_estimator=LogisticRegression(),\n#                                          cv=KFold(n_splits=25, shuffle=True, random_state=42))\n\n# # Perform KFold cross-validation\n# kf = KFold(n_splits=25, shuffle=True, random_state=42)\n\n# accuracies = []\n# errors = []\n# for train_index, test_index in tqdm(kf.split(X), total=kf.get_n_splits(), desc='KFold Progress'):\n#     X_train, X_test = X[train_index], X[test_index]\n#     y_train, y_test = y[train_index], y[test_index]\n\n#     # Fit the stacking classifier on the training set\n#     stacking_classifier.fit(X_train, y_train)\n\n#     # Make predictions on the test set\n#     y_pred = stacking_classifier.predict(X_test)\n\n#     # Evaluate the accuracy\n#     accuracy = accuracy_score(y_test, y_pred)\n#     error = mean_squared_error(y_test, y_pred)\n    \n#     accuracies.append(accuracy)\n#     errors.append(error)\n#     print(f'Accuracy: {accuracy}')\n","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:58:18.600903Z","iopub.execute_input":"2023-11-24T16:58:18.601523Z","iopub.status.idle":"2023-11-24T16:58:18.607542Z","shell.execute_reply.started":"2023-11-24T16:58:18.601485Z","shell.execute_reply":"2023-11-24T16:58:18.606715Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# %%time\n# from sklearn.neighbors import KNeighborsClassifier\n# from sklearn.linear_model import LogisticRegressionCV\n# from sklearn.naive_bayes import MultinomialNB\n\n# rf_model = RFC(n_estimators=10, max_depth=10)\n# knn_model = KNeighborsClassifier(n_neighbors=5)\n# lr_model = LogisticRegressionCV(cv=4)\n# mnb = MultinomialNB()\n\n# rf_model.fit(X_train, y_train)\n# lr_model.fit(X_train, y_train)\n# knn_model.fit(X_train, y_train)\n\n# y_pred_rf = rf_model.predict(X_val)\n# y_pred_knn = knn_model.predict(X_val)\n\n# X_stack = np.column_stack((y_pred_rf, y_pred_knn))\n\n# final_model = RFC(n_estimators=500, max_depth=10)\n# final_model.fit(X_stack, y_val)\n\n# y_pred_stacked = final_model.predict(X_stack)\n\n# accuracy = accuracy_score(y_val, y_pred_stacked)\n# print(f'Stacked Model Accuracy: {accuracy:.4f}')","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:58:18.608912Z","iopub.execute_input":"2023-11-24T16:58:18.609800Z","iopub.status.idle":"2023-11-24T16:58:18.625231Z","shell.execute_reply.started":"2023-11-24T16:58:18.609759Z","shell.execute_reply":"2023-11-24T16:58:18.624285Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# from sklearn.metrics import roc_curve, auc, classification_report\n# import matplotlib.pyplot as plt\n\n# y_prob = final_model.predict_proba(X_val)[:, 1]\n\n# fpr, tpr, thresholds = roc_curve(y_val, y_prob)\n# roc_auc = auc(fpr, tpr)\n\n# plt.figure(figsize=(8, 6))\n# plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (AUC = {:.2f})'.format(roc_auc))\n# plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')\n# plt.xlabel('False Positive Rate')\n# plt.ylabel('True Positive Rate')\n# plt.title('Receiver Operating Characteristic (ROC) Curve')\n# plt.legend(loc='lower right')\n# plt.show()\n\n# threshold = 0.5\n# y_pred_binary = (y_prob > threshold).astype(int)\n\n# class_report = classification_report(y_val, y_pred_binary)\n# print(f'Classification Report:\\n{class_report}')\n","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:58:18.626395Z","iopub.execute_input":"2023-11-24T16:58:18.627605Z","iopub.status.idle":"2023-11-24T16:58:18.642058Z","shell.execute_reply.started":"2023-11-24T16:58:18.627568Z","shell.execute_reply":"2023-11-24T16:58:18.641059Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Plot decision boundaries","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.gridspec as gridspec\nimport itertools\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import SVC\nfrom sklearn.ensemble import RandomForestClassifier\nfrom mlxtend.classifier import EnsembleVoteClassifier\nfrom mlxtend.data import iris_data\nfrom mlxtend.plotting import plot_decision_regions\n\n# Initializing Classifiers\nclf1 = LogisticRegression(random_state=0)\nclf2 = RandomForestClassifier(random_state=0)\nclf3 = SVC(random_state=0, probability=True)\neclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[2, 1, 1], voting='soft')\n\n# Loading some example data\nX, y = iris_data()\nX = X[:,[0, 2]]\n\n# Plotting Decision Regions\ngs = gridspec.GridSpec(2, 2)\nfig = plt.figure(figsize=(10, 8))\n\nfor clf, lab, grd in zip([clf1, clf2, clf3, eclf],\n                         ['Logistic Regression', 'Random Forest', 'RBF kernel SVM', 'Ensemble'],\n                         itertools.product([0, 1], repeat=2)):\n    clf.fit(X, y)\n    ax = plt.subplot(gs[grd[0], grd[1]])\n    fig = plot_decision_regions(X=X, y=y, clf=clf, legend=2)\n    plt.title(lab)\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Creating test submission","metadata":{}},{"cell_type":"code","source":"event_mapper = lambda ev: 'onset' if ev==1 else \"wakeup\"","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:58:18.643619Z","iopub.execute_input":"2023-11-24T16:58:18.644190Z","iopub.status.idle":"2023-11-24T16:58:18.655068Z","shell.execute_reply.started":"2023-11-24T16:58:18.644159Z","shell.execute_reply":"2023-11-24T16:58:18.653837Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_series = pd.read_parquet(\"/kaggle/input/child-mind-institute-detect-sleep-states/test_series.parquet\")\nsr_id = test_series.series_id\ntest_sub = pd.DataFrame({\"series_id\": sr_id})\ntest_series.drop(['series_id', \"timestamp\"], axis=1, inplace=True)\ntest_series.sample(4)","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:58:18.656614Z","iopub.execute_input":"2023-11-24T16:58:18.657021Z","iopub.status.idle":"2023-11-24T16:58:18.701097Z","shell.execute_reply.started":"2023-11-24T16:58:18.656991Z","shell.execute_reply":"2023-11-24T16:58:18.700070Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_series.reset_index(inplace=True, drop=True)\nmodel = pickle.load(open(\"GBC.pkl\", 'rb'))\ntest_sub['event'] = gbc.predict(test_series)\ntest_sub['score'] = gbc.predict_proba(test_series)[:, 1]\ntest_sub['event'] = test_sub['event'].apply(event_mapper)\ntest_sub['step'] = test_series['step']\ntest_sub['row_index'] = test_sub.index\ntest_sub.sample(4)","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:58:18.702554Z","iopub.execute_input":"2023-11-24T16:58:18.703232Z","iopub.status.idle":"2023-11-24T16:58:18.754459Z","shell.execute_reply.started":"2023-11-24T16:58:18.703200Z","shell.execute_reply":"2023-11-24T16:58:18.753589Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_sub.to_csv('submission.csv', index=False)\npd.read_csv('submission.csv')","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:58:18.755891Z","iopub.execute_input":"2023-11-24T16:58:18.756198Z","iopub.status.idle":"2023-11-24T16:58:18.785441Z","shell.execute_reply.started":"2023-11-24T16:58:18.756171Z","shell.execute_reply":"2023-11-24T16:58:18.784117Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.read_csv(\"/kaggle/input/child-mind-institute-detect-sleep-states/sample_submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2023-11-24T16:58:18.786978Z","iopub.execute_input":"2023-11-24T16:58:18.787319Z","iopub.status.idle":"2023-11-24T16:58:18.807069Z","shell.execute_reply.started":"2023-11-24T16:58:18.787291Z","shell.execute_reply":"2023-11-24T16:58:18.805804Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}