{"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":"none","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30775,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"#import library that needed\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.impute import KNNImputer\n# check installed version (must be >3.0)\nimport pycaret\npycaret.__version__\n\n#import data in csv files\ndf_train = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv')\ndf_test = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv')\n\n# From the information of each dataframe (train.csv and test.csv), the train dataset has 82 columns,meanwhile the test dataset has 59 columns. \n\n### Feature Selection\n#drop too specific column (id)\ndf_train.drop(columns = ['id'], inplace = True)\n\n# Set up the KNN Imputer\nknn_imputer = KNNImputer(n_neighbors=80) \ndf_train['sii'] = knn_imputer.fit_transform(df_train[['sii']])\n\n### Model\n\n# import pycaret regression and init setup\nfrom pycaret.regression import *\ns = setup(df_train, target = 'sii', session_id = 123)\n\n# compare baseline models\nbest = compare_models()\n\n# plot error\nplot_model(best, plot = 'error')\n\n# plot feature importance\nplot_model(best, plot = 'feature')\n\nevaluate_model(best)\n# predict on test set\nholdout_pred = predict_model(best)\n\n### Predict\n\n# Add features that exist in train dataset, but test dataset does not have it.\ncolumns_to_add = [col for col in df_train.columns if col not in df_test.columns and col != 'sii']\n\n# Fill the new features values with empty (NaN)\nfor col in columns_to_add:\n    df_test[col] = np.nan \n    \n#drop too specify column (id)\ndf_test1 = df_test.copy()\ndf_test1.drop(columns = ['id'], inplace = True)\n\n# predict model on new_data\npredictions = predict_model(best, data = df_test1)\npredictions.head()\n\n#create submision dataframe\ndf_submit = predictions.copy()\ndf_submit['id'] = df_test['id']\ndf_submit.rename(columns = {'prediction_label' : 'sii'}, inplace = True)\ndf_submit = df_submit[['id', 'sii']]\ndf_submit.to_csv('/kaggle/working/submission.csv', index = False)\ndf_submit","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-09-29T14:02:21.414819Z","iopub.execute_input":"2024-09-29T14:02:21.415443Z","iopub.status.idle":"2024-09-29T14:06:38.189888Z","shell.execute_reply.started":"2024-09-29T14:02:21.415384Z","shell.execute_reply":"2024-09-29T14:06:38.188286Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"---------","metadata":{}}]}