{"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":"nvidiaTeslaT4","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30822,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"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-04-10T15:39:04.587528Z","iopub.execute_input":"2025-04-10T15:39:04.587798Z","iopub.status.idle":"2025-04-10T15:39:06.304676Z","shell.execute_reply.started":"2025-04-10T15:39:04.587776Z","shell.execute_reply":"2025-04-10T15:39:06.303702Z"}},"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\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-04-10T15:39:10.800569Z","iopub.execute_input":"2025-04-10T15:39:10.801171Z","iopub.status.idle":"2025-04-10T15:39:10.874195Z","shell.execute_reply.started":"2025-04-10T15:39:10.801138Z","shell.execute_reply":"2025-04-10T15:39:10.873442Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Các feature có giá trị kiểu số (int, float, categorical int)\nfeature_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\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# Định nghĩa pipeline xử lý dữ liệu số \nnum_transformer = Pipeline(steps=[\n    ('imputer', SimpleImputer(strategy='mean')), # giá trị trung bình của từng cột\n    ('scaler', StandardScaler()) # chuẩn hóa dữ liệu sao cho có giá trị trung bình là 0 và độ lệch chuẩn là 1\n])\n\n# Định nghĩa bộ xự lý cột\npreprocessor = ColumnTransformer(transformers=[\n    ('num', num_transformer, feature_cols)\n])\n\n# Áp dụng tiền xử lý lên dữ liệu đầu vào (X)\npreprocessor.fit(X)\nX = pd.DataFrame(preprocessor.transform(X), columns=feature_cols)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-10T15:39:12.949566Z","iopub.execute_input":"2025-04-10T15:39:12.949893Z","iopub.status.idle":"2025-04-10T15:39:13.000105Z","shell.execute_reply.started":"2025-04-10T15:39:12.949868Z","shell.execute_reply":"2025-04-10T15:39:12.999310Z"}},"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-04-10T15:39:15.927192Z","iopub.execute_input":"2025-04-10T15:39:15.927641Z","iopub.status.idle":"2025-04-10T15:39:15.936951Z","shell.execute_reply.started":"2025-04-10T15:39:15.927603Z","shell.execute_reply":"2025-04-10T15:39:15.935411Z"}},"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=20000, 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-04-10T15:39:17.991061Z","iopub.execute_input":"2025-04-10T15:39:17.991383Z","iopub.status.idle":"2025-04-10T15:40:25.595691Z","shell.execute_reply.started":"2025-04-10T15:39:17.991358Z","shell.execute_reply":"2025-04-10T15:40:25.594729Z"}},"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 =  LogisticRegression(solver='liblinear', max_iter=1000)\nbest_model.fit(X_train, y_train)\ny_test_pred = best_model.predict(X_test).astype(int)\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.\") \n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-10T15:46:51.974335Z","iopub.execute_input":"2025-04-10T15:46:51.974627Z","iopub.status.idle":"2025-04-10T15:46:52.111874Z","shell.execute_reply.started":"2025-04-10T15:46:51.974597Z","shell.execute_reply":"2025-04-10T15:46:52.111109Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-10T15:47:22.245128Z","iopub.execute_input":"2025-04-10T15:47:22.245433Z","iopub.status.idle":"2025-04-10T15:47:22.253922Z","shell.execute_reply.started":"2025-04-10T15:47:22.245411Z","shell.execute_reply":"2025-04-10T15:47:22.252898Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-10T15:42:49.768482Z","iopub.execute_input":"2025-04-10T15:42:49.768810Z","iopub.status.idle":"2025-04-10T15:42:49.781062Z","shell.execute_reply.started":"2025-04-10T15:42:49.768783Z","shell.execute_reply":"2025-04-10T15:42:49.780098Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}