{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30761,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import mean_squared_error\nimport lightgbm as lgb\n\n# Load the training data\ntrain_df = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv')\ntest_df = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv')\n\n# Combine train and test data for preprocessing\ncombined_df = pd.concat([train_df, test_df], ignore_index=True).drop_duplicates(subset='id', keep='first')\n\n# Perform data preprocessing and feature engineering\n# Rename 'PCIAT-PCIAT_Total' to 'sii'\ncombined_df.rename(columns={'PCIAT-PCIAT_Total': 'sii'}, inplace=True)\n\n# Remove duplicate columns if any\ncombined_df = combined_df.loc[:, ~combined_df.columns.duplicated()]\n\n# Define feature columns and categorical columns\nfeaturesCols = ['Basic_Demos-Enroll_Season', 'Basic_Demos-Age', 'Basic_Demos-Sex',\n                'CGAS-Season', 'CGAS-CGAS_Score', 'Physical-Season', 'Physical-BMI',\n                'Physical-Height', 'Physical-Weight', 'Physical-Waist_Circumference',\n                'Physical-Diastolic_BP', 'Physical-HeartRate', 'Physical-Systolic_BP',\n                'Fitness_Endurance-Season', 'Fitness_Endurance-Max_Stage',\n                'Fitness_Endurance-Time_Mins', 'Fitness_Endurance-Time_Sec',\n                'FGC-Season', 'FGC-FGC_CU', 'FGC-FGC_CU_Zone', 'FGC-FGC_GSND',\n                'FGC-FGC_GSND_Zone', 'FGC-FGC_GSD', 'FGC-FGC_GSD_Zone', 'FGC-FGC_PU',\n                'FGC-FGC_PU_Zone', 'FGC-FGC_SRL', 'FGC-FGC_SRL_Zone', 'FGC-FGC_SRR',\n                'FGC-FGC_SRR_Zone', 'FGC-FGC_TL', 'FGC-FGC_TL_Zone', 'BIA-Season',\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-Season', 'PAQ_A-PAQ_A_Total', 'PAQ_C-Season',\n                'PAQ_C-PAQ_C_Total', 'SDS-Season', 'SDS-SDS_Total_Raw',\n                'SDS-SDS_Total_T', 'PreInt_EduHx-Season',\n                'PreInt_EduHx-computerinternet_hoursday']\n\ncat_c = ['Basic_Demos-Enroll_Season', 'CGAS-Season', 'Physical-Season', \n          'Fitness_Endurance-Season', 'FGC-Season', 'BIA-Season', \n          'PAQ_A-Season', 'PAQ_C-Season', 'SDS-Season', 'PreInt_EduHx-Season']\n\n# Fill missing values in categorical columns with '0'\nfor col in cat_c:\n    combined_df[col].fillna(0, inplace=True)\n    combined_df[col] = combined_df[col].astype('category')\n\n# Fill missing values in numerical columns with the median\nfor col in featuresCols:\n    if col not in cat_c:\n        combined_df[col].fillna(combined_df[col].median(), inplace=True)\n        combined_df[col] = pd.to_numeric(combined_df[col], errors='coerce')\n\n# Separate the preprocessed train and test data\ntrain_df = combined_df[combined_df['sii'].notna()].copy()\ntest_df = combined_df[combined_df['sii'].isna()].copy()\n\n# Reset indices\ntrain_df.reset_index(drop=True, inplace=True)\ntest_df.reset_index(drop=True, inplace=True)\n\n# Create LightGBM model\nfeatures = [col for col in featuresCols if col in train_df.columns]\nx_train = train_df[features]\ny_train = train_df['sii']\nx_test = test_df[features]\n\n# Convert categorical features to numeric\nfor col in cat_c:\n    if col in x_train.columns:\n        x_train.loc[:, col] = x_train[col].cat.codes\n        x_test.loc[:, col] = x_test[col].cat.codes\n\n# Train LightGBM model\nparams = {'objective': 'regression', 'learning_rate': 0.03, 'boosting_type': 'gbdt', 'seed': 42}\nlgb_train = lgb.Dataset(x_train, label=y_train)\nlgb_model = lgb.train(params, lgb_train)\n\n# Make predictions using LightGBM model\nlgb_preds = lgb_model.predict(x_test)\n\n# Create the submission dataframe\nsubmission_df = pd.DataFrame({'id': test_df['id'], 'sii': lgb_preds.round().clip(0, 3).astype(int)})\nsubmission_df = submission_df.iloc[:20]\nsubmission_df.to_csv('submission.csv', index=False)\n\n# Print the submission dataframe\nprint(submission_df)","metadata":{"execution":{"iopub.status.busy":"2024-10-11T01:45:33.050664Z","iopub.execute_input":"2024-10-11T01:45:33.051688Z","iopub.status.idle":"2024-10-11T01:45:33.590494Z","shell.execute_reply.started":"2024-10-11T01:45:33.051627Z","shell.execute_reply":"2024-10-11T01:45:33.589358Z"},"trusted":true},"execution_count":null,"outputs":[]}]}