{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"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":"none","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30822,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom sklearn.model_selection import train_test_split\nfrom xgboost import XGBClassifier\nimport pandas as pd\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.pipeline import Pipeline\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-03T15:31:52.418162Z","iopub.execute_input":"2025-01-03T15:31:52.418539Z","iopub.status.idle":"2025-01-03T15:31:55.160610Z","shell.execute_reply.started":"2025-01-03T15:31:52.418500Z","shell.execute_reply":"2025-01-03T15:31:55.159375Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import os\n\ntrain_path = '/kaggle/input/child-mind-institute-problematic-internet-use/train.csv'\ntest_path = '/kaggle/input/child-mind-institute-problematic-internet-use/test.csv'\n\nif os.path.exists(train_path) and os.path.exists(test_path):\n\ttrain_df = pd.read_csv(train_path)\n\ttest_df = pd.read_csv(test_path)\nelse:\n\tprint(\"One or both files do not exist.\")\n    \n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-03T15:38:42.584668Z","iopub.execute_input":"2025-01-03T15:38:42.584993Z","iopub.status.idle":"2025-01-03T15:38:42.637709Z","shell.execute_reply.started":"2025-01-03T15:38:42.584969Z","shell.execute_reply":"2025-01-03T15:38:42.636504Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"feature_cols = [\n    'Basic_Demos-Age', 'Basic_Demos-Sex', 'CGAS-CGAS_Score', \n    'Physical-BMI', 'Physical-Height', 'Physical-Weight', \n    'Physical-Waist_Circumference', 'Physical-Diastolic_BP', \n    'Physical-HeartRate', 'Physical-Systolic_BP',  \n    'Fitness_Endurance-Max_Stage', 'Fitness_Endurance-Time_Mins', \n    'Fitness_Endurance-Time_Sec', 'FGC-FGC_CU', 'FGC-FGC_CU_Zone', \n    'FGC-FGC_GSND', 'FGC-FGC_GSND_Zone', 'FGC-FGC_GSD', \n    'FGC-FGC_GSD_Zone', 'FGC-FGC_PU', 'FGC-FGC_PU_Zone', \n    'FGC-FGC_SRL', 'FGC-FGC_SRL_Zone', 'FGC-FGC_SRR', \n    'FGC-FGC_SRR_Zone', 'FGC-FGC_TL', 'FGC-FGC_TL_Zone', \n    'BIA-BIA_Activity_Level_num', 'BIA-BIA_BMC', 'BIA-BIA_BMI', \n    'BIA-BIA_BMR', 'BIA-BIA_DEE', 'BIA-BIA_ECW', 'BIA-BIA_FFM', \n    'BIA-BIA_FFMI', 'BIA-BIA_FMI', 'BIA-BIA_Fat', 'BIA-BIA_Frame_num', \n    'BIA-BIA_ICW', 'BIA-BIA_LDM', 'BIA-BIA_LST', 'BIA-BIA_SMM', \n    'BIA-BIA_TBW', 'PAQ_A-PAQ_A_Total', 'PAQ_C-PAQ_C_Total', \n    'SDS-SDS_Total_Raw', 'SDS-SDS_Total_T', \n    'PreInt_EduHx-computerinternet_hoursday'\n]\n# Loại bỏ các hàng có giá trị NaN trong y\ntrain_df = train_df.dropna(subset=['sii'])\nX = train_df[feature_cols]\ny = train_df['sii']\n\n# Define the preprocessing pipeline\nnum_transformer = Pipeline(steps=[\n    ('imputer', SimpleImputer(strategy='mean')),\n    ('scaler', StandardScaler())\n])\n\npreprocessor = ColumnTransformer(transformers=[\n    ('num', num_transformer, feature_cols)\n])\n\n# Fit and transform X\npreprocessor.fit(X)\nX = pd.DataFrame(preprocessor.transform(X), columns=feature_cols)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-03T15:38:45.989939Z","iopub.execute_input":"2025-01-03T15:38:45.990265Z","iopub.status.idle":"2025-01-03T15:38:46.024221Z","shell.execute_reply.started":"2025-01-03T15:38:45.990240Z","shell.execute_reply":"2025-01-03T15:38:46.023371Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nX_train, X_val, y_train, y_val = train_test_split(X,y, test_size=0.2)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-03T15:38:48.699659Z","iopub.execute_input":"2025-01-03T15:38:48.700024Z","iopub.status.idle":"2025-01-03T15:38:48.707608Z","shell.execute_reply.started":"2025-01-03T15:38:48.699995Z","shell.execute_reply":"2025-01-03T15:38:48.706530Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.svm import LinearSVC, SVC\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier, ExtraTreesClassifier, AdaBoostClassifier\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.tree import DecisionTreeClassifier\nfrom xgboost import XGBClassifier\nfrom sklearn.model_selection import StratifiedKFold, cross_val_score\n\n\n# Random seed\nseed = 2023\n\n# List of models\nmodels = [\n    LinearSVC(max_iter=10000, random_state=seed),\n    SVC(random_state=seed),\n    KNeighborsClassifier(metric='minkowski', p=2),\n    LogisticRegression(solver='liblinear', max_iter=1000),\n    DecisionTreeClassifier(random_state=seed),\n    RandomForestClassifier(random_state=seed),\n    ExtraTreesClassifier(random_state=seed),\n    AdaBoostClassifier(random_state=seed),\n    XGBClassifier(eval_metric='logloss', random_state=seed)    \n]\n\n# Function to generate baseline results\ndef generate_baseline_results(models, X, y, metrics='accuracy', cv=5, plot_results=False):\n    # Define k-fold\n    kfold = StratifiedKFold(n_splits=cv, shuffle=True, random_state=42)\n    entries = []\n    \n    # Loop through each model\n    for model in models:\n        model_name = model.__class__.__name__\n        print(f\"Training: {model_name}\")\n        scores = cross_val_score(model, X, y, scoring=metrics, cv=kfold)\n        # Lưu kết quả của tất cả các mô hình vào entries\n        entries.extend([(model_name, fold_idx, score) for fold_idx, score in enumerate(scores)])\n    \n    # Create DataFrame\n    cv_df = pd.DataFrame(entries, columns=['model_name', 'fold_id', 'accuracy_score'])\n    \n    # Optional: Plot results if specified\n    if plot_results:\n        sns.boxplot(x='model_name', y='accuracy_score', data=cv_df, color='lightblue', showmeans=True)\n        plt.title(\"Boxplot of baseline Model Accuracy using 5-fold cross-validation\")\n        plt.xticks(rotation=45)\n        plt.show()\n    \n    # Summary result\n    mean = cv_df.groupby('model_name')['accuracy_score'].mean()\n    std = cv_df.groupby('model_name')['accuracy_score'].std()\n\n    baseline_results = pd.concat([mean, std], axis=1)\n    baseline_results.columns = ['Mean', 'Standard Deviation']\n\n    # Sort results\n    baseline_results.sort_values(by='Mean', ascending=False, inplace=True)\n\n    return baseline_results\n\n# Chạy hàm và hiển thị kết quả\ncv_results = generate_baseline_results(models, X, y, metrics='accuracy', cv=5, plot_results=False)\n\n# In toàn bộ kết quả\nprint(cv_results)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-03T15:38:56.615105Z","iopub.execute_input":"2025-01-03T15:38:56.615494Z","iopub.status.idle":"2025-01-03T15:39:59.532996Z","shell.execute_reply.started":"2025-01-03T15:38:56.615463Z","shell.execute_reply":"2025-01-03T15:39:59.532197Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Preprocess the test data\nX_test = test_df[feature_cols]\nX_test = pd.DataFrame(preprocessor.transform(X_test), columns=feature_cols)\n\n# Use the trained model to make predictions\nbest_model = XGBClassifier(eval_metric='logloss', random_state=2023)\nbest_model.fit(X_train, y_train)\ny_test_pred = best_model.predict(X_test)\n\n# Create a submission DataFrame\nsubmission = pd.DataFrame({\n    'id': test_df['id'],\n    'sii': y_test_pred\n})\n\n# Save the submission DataFrame to a CSV file\nsubmission.to_csv('submission.csv', index=False)\n\nprint(\"Submission file created successfully.\")  # In ra thông báo khi hoàn thành","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-03T15:34:04.007500Z","iopub.execute_input":"2025-01-03T15:34:04.007863Z","iopub.status.idle":"2025-01-03T15:34:04.801127Z","shell.execute_reply.started":"2025-01-03T15:34:04.007809Z","shell.execute_reply":"2025-01-03T15:34:04.799548Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}