{"metadata":{"colab":{"provenance":[],"gpuType":"T4"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"accelerator":"GPU"},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import average_precision_score\nfrom sklearn.ensemble import RandomForestClassifier","metadata":{"id":"4oHSS7C1zO53"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_events = pd.read_csv('/kaggle/input/child-mind-institute-detect-sleep-states/train_events.csv')","metadata":{"id":"dTkGpIsPzT9z"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_series = pd.read_parquet('/kaggle/input/child-mind-institute-detect-sleep-states/train_series.parquet')","metadata":{"id":"0GtyedIh09gc"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_submission = pd.read_csv('/kaggle/input/child-mind-institute-detect-sleep-states/sample_submission.csv')","metadata":{"id":"EUu1VIrE09jL"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_events.head(10)","metadata":{"id":"Q3pSLFaC0uoY","outputId":"cf5ac45c-dab8-4ecb-e7f5-a50c5f948fa9"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_series.head(10)","metadata":{"id":"TGUa2A1-0w-A"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_submission.head(10)","metadata":{"id":"S1CO2u7Q0xCf"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"missing_values = train_series.isnull().sum()\n\ntrain_series.dropna(inplace=True)\n\ntrain_series.fillna(train_series.mean(), inplace=True)","metadata":{"id":"olx5yO-ZzUAu"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.preprocessing import StandardScaler\n\nscaler = StandardScaler()\ntrain_series['accelerometer_data'] = scaler.fit_transform(train_series['accelerometer_data'].values.reshape(-1, 1))","metadata":{"id":"UfCSpQSAzUDx"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_series['mean_acceleration'] = train_series['accelerometer_data'].rolling(window=10).mean()\n\ntrain_events['sleep_duration'] = (train_events['wakeup_timestamp'] - train_events['onset_timestamp']).dt.total_seconds()","metadata":{"id":"YPva59lMzUGp"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_events_encoded = pd.get_dummies(train_events, columns=['event'], prefix=['event'])","metadata":{"id":"kzg5TTWYzUJZ"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"merged_data = pd.merge(train_series, train_events, on='series_id', how='inner')","metadata":{"id":"PavS--G6znDq"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train, X_val, y_train, y_val = train_test_split(train_series, train_events, test_size=0.2, random_state=42)","metadata":{"id":"1_mtY7waznIY"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = RandomForestClassifier()\nmodel.fit(X_train, y_train)","metadata":{"id":"r-8ZgTmIzrM7"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = model.predict(X_val)","metadata":{"id":"7Sc66JgqzrPv"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ap_scores = []\n\nfor event_tolerance_group in event_tolerance_groups:\n    ap_score = average_precision_score(y_val[event_tolerance_group], y_pred[event_tolerance_group])\n    ap_scores.append(ap_score)\n\nfinal_score = np.mean(ap_scores)","metadata":{"id":"JSaQH2vZzrSb"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.DataFrame({\n    'series_id': test_series['series_id'],\n    'event': test_predictions\n})\n\nsubmission.to_csv('submission.csv', index=False)","metadata":{"id":"xIRzeNdszrVi"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import precision_recall_curve\nfrom sklearn.metrics import average_precision_score\nimport matplotlib.pyplot as plt\n\nprecision, recall, _ = precision_recall_curve(y_val[event_tolerance_group], y_pred[event_tolerance_group])\n\nap_score = average_precision_score(y_val[event_tolerance_group], y_pred[event_tolerance_group])\n\nplt.figure()\nplt.step(recall, precision, color='b', alpha=0.2, where='post')\nplt.fill_between(recall, precision, step='post', alpha=0.2, color='b')\nplt.xlabel('Recall')\nplt.ylabel('Precision')\nplt.title(f'Precision-Recall Curve (AP={ap_score:.2f})')\nplt.show()","metadata":{"id":"ifN6ZAS4zUMV"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"feature_importances = model.feature_importances_\nfeature_names = train_series.columns  # Replace with actual feature names\n\nsorted_idx = np.argsort(feature_importances)\n\nplt.figure(figsize=(10, 6))\nplt.barh(range(len(sorted_idx)), feature_importances[sorted_idx], align='center')\nplt.yticks(range(len(sorted_idx)), [feature_names[i] for i in sorted_idx])\nplt.xlabel('Feature Importance')\nplt.ylabel('Feature')\nplt.title('Feature Importance')\nplt.show()","metadata":{"id":"t4whFfEHz9Mp"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import confusion_matrix\nimport seaborn as sns\n\ncm = confusion_matrix(y_val[event_tolerance_group], y_pred[event_tolerance_group])\n\nplt.figure(figsize=(8, 6))\nsns.heatmap(cm, annot=True, fmt='d', cmap='Blues')\nplt.xlabel('Predicted')\nplt.ylabel('Actual')\nplt.title('Confusion Matrix')\nplt.show()\n","metadata":{"id":"IFeRlVSYz9PS"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"false_positives = X_val[y_pred == 1]\nfalse_negatives = X_val[y_pred == 0]\n","metadata":{"id":"4FOZrnmyz9SE"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"id":"QbufV_tQz9UI"},"execution_count":null,"outputs":[]}],"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}}