{"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":30786,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:32.560604Z","iopub.execute_input":"2024-12-05T06:32:32.561634Z","iopub.status.idle":"2024-12-05T06:32:34.317896Z","shell.execute_reply.started":"2024-12-05T06:32:32.561588Z","shell.execute_reply":"2024-12-05T06:32:34.316724Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# import pandas as pd\n# import numpy as np\n# import matplotlib.pyplot as plt\n# import seaborn as sns\n# from sklearn.model_selection import train_test_split\n# from sklearn.ensemble import RandomForestClassifier\n# from sklearn.metrics import classification_report, confusion_matrix\n# from sklearn.preprocessing import StandardScaler\n# from sklearn.preprocessing import LabelEncoder\n# # from sklearn.decomposition import PCA\n# from sklearn.metrics import accuracy_score","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.320274Z","iopub.execute_input":"2024-12-05T06:32:34.321180Z","iopub.status.idle":"2024-12-05T06:32:34.326123Z","shell.execute_reply.started":"2024-12-05T06:32:34.321133Z","shell.execute_reply":"2024-12-05T06:32:34.324887Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# train_data = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv')\n# test_data = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv')\n# train_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.327342Z","iopub.execute_input":"2024-12-05T06:32:34.327690Z","iopub.status.idle":"2024-12-05T06:32:34.338869Z","shell.execute_reply.started":"2024-12-05T06:32:34.327652Z","shell.execute_reply":"2024-12-05T06:32:34.337797Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# train_data.describe().transpose()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.341426Z","iopub.execute_input":"2024-12-05T06:32:34.342089Z","iopub.status.idle":"2024-12-05T06:32:34.349045Z","shell.execute_reply.started":"2024-12-05T06:32:34.342053Z","shell.execute_reply":"2024-12-05T06:32:34.348053Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# train_data.info()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.350347Z","iopub.execute_input":"2024-12-05T06:32:34.351042Z","iopub.status.idle":"2024-12-05T06:32:34.361653Z","shell.execute_reply.started":"2024-12-05T06:32:34.350998Z","shell.execute_reply":"2024-12-05T06:32:34.360688Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# threshold = 0.5 * len(train_data)\n# columns_with_data = train_data.columns[train_data.isnull().sum() < threshold]\n# train_data = train_data[columns_with_data]\n# # Replace all missing values with 0\n# train_data = train_data.fillna(0)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.363031Z","iopub.execute_input":"2024-12-05T06:32:34.363304Z","iopub.status.idle":"2024-12-05T06:32:34.372106Z","shell.execute_reply.started":"2024-12-05T06:32:34.363278Z","shell.execute_reply":"2024-12-05T06:32:34.371090Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# threshold = 0.5 * len(test_data)\n# columns_with_dt = test_data.columns[test_data.isnull().sum() < threshold]\n# test_data = test_data[columns_with_dt]\n# # Replace all missing values with 0\n# train_data = train_data.fillna(0)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.373040Z","iopub.execute_input":"2024-12-05T06:32:34.373332Z","iopub.status.idle":"2024-12-05T06:32:34.382913Z","shell.execute_reply.started":"2024-12-05T06:32:34.373303Z","shell.execute_reply":"2024-12-05T06:32:34.381984Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# target_column = 'sii'\n# # Remove rows where the target column 'sii' is NaN (if there are any)\n# train_data_cleaned = train_data.dropna(subset=[target_column])\n# # Check the results\n# train_data_cleaned.head()\n# train_data_cleaned.info()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.384230Z","iopub.execute_input":"2024-12-05T06:32:34.384671Z","iopub.status.idle":"2024-12-05T06:32:34.397554Z","shell.execute_reply.started":"2024-12-05T06:32:34.384629Z","shell.execute_reply":"2024-12-05T06:32:34.396606Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# categorical_columns = ['Basic_Demos-Enroll_Season', 'CGAS-Season', 'Physical-Season', \n#                        'FGC-Season', 'BIA-Season', 'PCIAT-Season', 'SDS-Season', 'PreInt_EduHx-Season']\n# # Plotting boxplots for 'sii' against each categorical column\n# plt.figure(figsize=(16, 24))\n# for i, col in enumerate(categorical_columns, 1):\n#     plt.subplot(4, 2, i)  # 4 rows, 2 columns, plot i\n#     sns.boxplot(x=col, y='sii', data=train_data_cleaned)\n#     plt.xticks(rotation=45)\n#     plt.title(f\"'sii' vs {col}\")\n# plt.tight_layout()\n# plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.399223Z","iopub.execute_input":"2024-12-05T06:32:34.399996Z","iopub.status.idle":"2024-12-05T06:32:34.408671Z","shell.execute_reply.started":"2024-12-05T06:32:34.399935Z","shell.execute_reply":"2024-12-05T06:32:34.407609Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# numerical_cols = train_data_cleaned.select_dtypes(include=['float64', 'int64']).columns\n# # Set the number of plots per row\n# plots_per_row = 5\n# n_rows = (len(numerical_cols) + plots_per_row - 1) // plots_per_row\n# plt.figure(figsize=(20, 4 * n_rows))\n# for i, col in enumerate(numerical_cols):\n#     plt.subplot(n_rows, plots_per_row, i + 1)\n#     sns.boxplot(x='sii', y=col, data=train_data_cleaned)\n#     plt.title(col)\n#     plt.tight_layout()\n# plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.413273Z","iopub.execute_input":"2024-12-05T06:32:34.413577Z","iopub.status.idle":"2024-12-05T06:32:34.419302Z","shell.execute_reply.started":"2024-12-05T06:32:34.413548Z","shell.execute_reply":"2024-12-05T06:32:34.418399Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Identify categorical columns for seasons\n# season_cols = [\n#     'Basic_Demos-Enroll_Season', \n#     'CGAS-Season', \n#     'Physical-Season', \n#     'FGC-Season', \n#     'BIA-Season', \n#     'PCIAT-Season', \n#     'SDS-Season', \n#     'PreInt_EduHx-Season'\n# ]\n# # Create a mapping dictionary for seasons\n# season_mapping = {\n#     'Spring': 0,\n#     'Summer': 1,\n#     'Fall': 2,\n#     'Winter': 3\n# }\n# # Apply manual encoding to the categorical columns\n# for col in season_cols:\n#     if col in train_data_cleaned.columns:\n#         train_data_cleaned[col] = train_data_cleaned[col].apply(lambda x: season_mapping.get(x, -1)).astype(int)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.420363Z","iopub.execute_input":"2024-12-05T06:32:34.420680Z","iopub.status.idle":"2024-12-05T06:32:34.431055Z","shell.execute_reply.started":"2024-12-05T06:32:34.420644Z","shell.execute_reply":"2024-12-05T06:32:34.430098Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\n# import matplotlib.pyplot as plt\n\n# class SingleLayerPerceptron:\n#     def __init__(self, my_weights, my_bias, learningRate=0.05):\n#         self.weights = my_weights\n#         self.bias = my_bias\n#         self.learningRate = learningRate\n        \n#     def activation(self, net):\n#         answer = 1 if net > 0 else 0\n#         return answer\n    \n#     def neuron(self, inputs):\n#         neuronArchitecture = np.dot(self.weights, inputs) + self.bias\n#         return neuronArchitecture\n    \n#     def neuron_propagate(self, inputs):\n#         processing = self.neuron(inputs)\n#         return self.activation(processing) \n    \n#     def training(self, inputs, output):\n#         output_prev = self.neuron_propagate(inputs)\n#         self.weights = [W + X * self.learningRate * (output - output_prev)\n#                        for (W, X) in zip(self.weights, inputs)]\n#         self.bias += self.learningRate * (output - output_prev)\n#         error_calculation = np.abs(output_prev - output)\n#         return error_calculation","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.432341Z","iopub.execute_input":"2024-12-05T06:32:34.432632Z","iopub.status.idle":"2024-12-05T06:32:34.447413Z","shell.execute_reply.started":"2024-12-05T06:32:34.432601Z","shell.execute_reply":"2024-12-05T06:32:34.446399Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# import numpy as np\n# import pandas as pd\n# import matplotlib.pyplot as plt\n# import seaborn as sns\n\n# # Inisialisasi SingleLayerPerceptron\n# class SingleLayerPerceptron:\n#     def __init__(self, my_weights, my_bias, learningRate=0.05):\n#         self.weights = my_weights\n#         self.bias = my_bias\n#         self.learningRate = learningRate\n        \n#     def activation(self, net):\n#         return 1 if net > 0 else 0\n    \n#     def neuron(self, inputs):\n#         return np.dot(self.weights, inputs) + self.bias\n    \n#     def neuron_propagate(self, inputs):\n#         return self.activation(self.neuron(inputs))\n    \n#     def training(self, inputs, output):\n#         output_prev = self.neuron_propagate(inputs)\n#         self.weights = [W + X * self.learningRate * (output - output_prev)\n#                         for (W, X) in zip(self.weights, inputs)]\n#         self.bias += self.learningRate * (output - output_prev)\n#         error_calculation = np.abs(output_prev - output)\n#         return error_calculation\n\n# # Baca Data\n# train_data = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.448700Z","iopub.execute_input":"2024-12-05T06:32:34.449052Z","iopub.status.idle":"2024-12-05T06:32:34.459270Z","shell.execute_reply.started":"2024-12-05T06:32:34.449023Z","shell.execute_reply":"2024-12-05T06:32:34.458230Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# print(train_data.columns)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.460589Z","iopub.execute_input":"2024-12-05T06:32:34.460909Z","iopub.status.idle":"2024-12-05T06:32:34.473980Z","shell.execute_reply.started":"2024-12-05T06:32:34.460878Z","shell.execute_reply":"2024-12-05T06:32:34.472581Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Proses Data\n# threshold = 0.5 * len(train_data)\n# columns_with_data = train_data.columns[train_data.isnull().sum() < threshold]\n# train_data = train_data[columns_with_data].fillna(0)\n# train_data_cleaned = train_data.dropna(subset=['sii'])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.475517Z","iopub.execute_input":"2024-12-05T06:32:34.475897Z","iopub.status.idle":"2024-12-05T06:32:34.484220Z","shell.execute_reply.started":"2024-12-05T06:32:34.475858Z","shell.execute_reply":"2024-12-05T06:32:34.483270Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Encoding Kolom Kategorikal\n# season_mapping = {'Spring': 0, 'Summer': 1, 'Fall': 2, 'Winter': 3}\n# season_cols = [\n#     'Basic_Demos-Enroll_Season', \n#     'CGAS-Season', \n#     'Physical-Season', \n#     'FGC-Season', \n#     'BIA-Season', \n#     'PCIAT-Season', \n#     'SDS-Season', \n#     'PreInt_EduHx-Season'\n# ]\n\n# for col in season_cols:\n#     if col in train_data_cleaned.columns:\n#         train_data_cleaned[col] = train_data_cleaned[col].apply(lambda x: season_mapping.get(x, -1)).astype(int)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.485650Z","iopub.execute_input":"2024-12-05T06:32:34.486055Z","iopub.status.idle":"2024-12-05T06:32:34.495013Z","shell.execute_reply.started":"2024-12-05T06:32:34.486020Z","shell.execute_reply":"2024-12-05T06:32:34.494110Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# print(train_data_cleaned.dtypes)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.496117Z","iopub.execute_input":"2024-12-05T06:32:34.496429Z","iopub.status.idle":"2024-12-05T06:32:34.505639Z","shell.execute_reply.started":"2024-12-05T06:32:34.496386Z","shell.execute_reply":"2024-12-05T06:32:34.504791Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# for col in train_data_cleaned.select_dtypes(include=['object']).columns:\n#     print(f\"Kolom: {col}, Nilai Unik: {train_data_cleaned[col].unique()}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.506695Z","iopub.execute_input":"2024-12-05T06:32:34.507006Z","iopub.status.idle":"2024-12-05T06:32:34.516974Z","shell.execute_reply.started":"2024-12-05T06:32:34.506974Z","shell.execute_reply":"2024-12-05T06:32:34.516068Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Pilih hanya kolom numerik untuk X\n# X = train_data_cleaned.select_dtypes(include=['float64', 'int64']).drop(columns=['sii']).values","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.518038Z","iopub.execute_input":"2024-12-05T06:32:34.518372Z","iopub.status.idle":"2024-12-05T06:32:34.531384Z","shell.execute_reply.started":"2024-12-05T06:32:34.518345Z","shell.execute_reply":"2024-12-05T06:32:34.530502Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Pilih hanya kolom numerik\n# X = train_data_cleaned.select_dtypes(include=['float64', 'int64']).drop(columns=['sii']).values\n# y = train_data_cleaned['sii'].apply(lambda x: 1 if x >= 50 else 0).values\n\n# # Konversi Input ke Tipe Float\n# X = X.astype(float)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.532546Z","iopub.execute_input":"2024-12-05T06:32:34.532955Z","iopub.status.idle":"2024-12-05T06:32:34.544552Z","shell.execute_reply.started":"2024-12-05T06:32:34.532909Z","shell.execute_reply":"2024-12-05T06:32:34.543552Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Inisialisasi Model\n# num_features = X.shape[1]\n# initial_weights = [0.1] * num_features\n# initial_bias = 0.1\n# slp = SingleLayerPerceptron(my_weights=initial_weights, my_bias=initial_bias, learningRate=0.01)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.546004Z","iopub.execute_input":"2024-12-05T06:32:34.547074Z","iopub.status.idle":"2024-12-05T06:32:34.555153Z","shell.execute_reply.started":"2024-12-05T06:32:34.547028Z","shell.execute_reply":"2024-12-05T06:32:34.554112Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Proses Training\n# epochs = 10\n# for epoch in range(epochs):\n#     total_error = 0\n#     for inputs, target in zip(X, y):\n#         error = slp.training(inputs, target)\n#         total_error += error\n#     print(f\"Epoch {epoch + 1}, Total Error: {total_error}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.556398Z","iopub.execute_input":"2024-12-05T06:32:34.556668Z","iopub.status.idle":"2024-12-05T06:32:34.566950Z","shell.execute_reply.started":"2024-12-05T06:32:34.556642Z","shell.execute_reply":"2024-12-05T06:32:34.565983Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Menggunakan Model pada Data Uji\n# test_data = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv')\n# test_data = test_data.fillna(0)\n# predictions = []","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.568103Z","iopub.execute_input":"2024-12-05T06:32:34.568546Z","iopub.status.idle":"2024-12-05T06:32:34.577920Z","shell.execute_reply.started":"2024-12-05T06:32:34.568442Z","shell.execute_reply":"2024-12-05T06:32:34.577169Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# print(test_data.columns)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.579397Z","iopub.execute_input":"2024-12-05T06:32:34.579655Z","iopub.status.idle":"2024-12-05T06:32:34.589943Z","shell.execute_reply.started":"2024-12-05T06:32:34.579629Z","shell.execute_reply":"2024-12-05T06:32:34.588941Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Proses Data\n# threshold = 0.5 * len(test_data)\n# columns_with_data = test_data.columns[test_data.isnull().sum() < threshold]\n# test_data_cleaned = test_data[columns_with_data].fillna(0)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.591194Z","iopub.execute_input":"2024-12-05T06:32:34.591474Z","iopub.status.idle":"2024-12-05T06:32:34.603288Z","shell.execute_reply.started":"2024-12-05T06:32:34.591446Z","shell.execute_reply":"2024-12-05T06:32:34.602214Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Encoding Kolom Kategorikal\n# season_mapping = {'Spring': 0, 'Summer': 1, 'Fall': 2, 'Winter': 3}\n# season_cols = [\n#     'Basic_Demos-Enroll_Season', \n#     'CGAS-Season', \n#     'Physical-Season', \n#     'FGC-Season', \n#     'BIA-Season', \n#     'PCIAT-Season', \n#     'SDS-Season', \n#     'PreInt_EduHx-Season'\n# ]\n\n# for col in season_cols:\n#     if col in test_data_cleaned.columns:\n#         test_data_cleaned[col] = test_data_cleaned[col].apply(lambda x: season_mapping.get(x, -1)).astype(int)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.604716Z","iopub.execute_input":"2024-12-05T06:32:34.605081Z","iopub.status.idle":"2024-12-05T06:32:34.616071Z","shell.execute_reply.started":"2024-12-05T06:32:34.605049Z","shell.execute_reply":"2024-12-05T06:32:34.615086Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# print(test_data_cleaned.dtypes)  # Tampilkan tipe data setiap kolom","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.617315Z","iopub.execute_input":"2024-12-05T06:32:34.617626Z","iopub.status.idle":"2024-12-05T06:32:34.626061Z","shell.execute_reply.started":"2024-12-05T06:32:34.617596Z","shell.execute_reply":"2024-12-05T06:32:34.625168Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# for col in test_data_cleaned.select_dtypes(include=['object']).columns:\n#     print(f\"Kolom: {col}, Nilai Unik: {test_data_cleaned[col].unique()}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.632865Z","iopub.execute_input":"2024-12-05T06:32:34.633198Z","iopub.status.idle":"2024-12-05T06:32:34.641983Z","shell.execute_reply.started":"2024-12-05T06:32:34.633167Z","shell.execute_reply":"2024-12-05T06:32:34.641059Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Pilih hanya kolom numerik untuk X\n# test_data_cleaned = test_data_cleaned.select_dtypes(include=['float64', 'int64'])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.643179Z","iopub.execute_input":"2024-12-05T06:32:34.643936Z","iopub.status.idle":"2024-12-05T06:32:34.652257Z","shell.execute_reply.started":"2024-12-05T06:32:34.643863Z","shell.execute_reply":"2024-12-05T06:32:34.651350Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\n# # Konversi Input ke Tipe Float\n# test_data_cleaned = test_data_cleaned.astype(float)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.653498Z","iopub.execute_input":"2024-12-05T06:32:34.654293Z","iopub.status.idle":"2024-12-05T06:32:34.662995Z","shell.execute_reply.started":"2024-12-05T06:32:34.654246Z","shell.execute_reply":"2024-12-05T06:32:34.662060Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Hanya ambil kolom yang ada di train_data\n# test_data_cleaned = test_data_cleaned[test_data.columns]\n\n# # Pastikan urutan kolom sama persis\n# assert list(test_data_cleaned.columns) == list(test_data.columns), \"Kolom tidak sesuai!\"\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.664095Z","iopub.execute_input":"2024-12-05T06:32:34.664393Z","iopub.status.idle":"2024-12-05T06:32:34.677965Z","shell.execute_reply.started":"2024-12-05T06:32:34.664365Z","shell.execute_reply":"2024-12-05T06:32:34.677083Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# import numpy as np\n\n# # Konversi weights ke array NumPy\n# slp.weights = np.array(slp.weights)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.679194Z","iopub.execute_input":"2024-12-05T06:32:34.679601Z","iopub.status.idle":"2024-12-05T06:32:34.689228Z","shell.execute_reply.started":"2024-12-05T06:32:34.679557Z","shell.execute_reply":"2024-12-05T06:32:34.688374Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# print(f\"Jumlah fitur pada data uji: {test_data_cleaned.shape[1]}\")\n# print(f\"Jumlah bobot model: {slp.weights.shape[0]}\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.690416Z","iopub.execute_input":"2024-12-05T06:32:34.690705Z","iopub.status.idle":"2024-12-05T06:32:34.699799Z","shell.execute_reply.started":"2024-12-05T06:32:34.690674Z","shell.execute_reply":"2024-12-05T06:32:34.698817Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Pastikan data uji memiliki kolom yang sama dengan data pelatihan\n# missing_columns = set(train_data.columns) - set(test_data_cleaned.columns)\n# for col in missing_columns:\n#     test_data_cleaned[col] = 0  # Tambahkan kolom yang hilang dengan nilai default\n\n# # Hanya ambil kolom yang ada di train_data\n# test_data_cleaned = test_data_cleaned[train_data.columns]\n\n# # Validasi jumlah fitur\n# assert test_data_cleaned.shape[1] == slp.weights.shape[0], \"Jumlah fitur tidak sesuai!\"\n\n# # Prediksi\n# predictions = []\n# for _, row in test_data_cleaned.iterrows():\n#     inputs = row.values.astype(float)  # Konversi input test\n#     prediction = slp.neuron_propagate(inputs)\n#     predictions.append(prediction)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.700919Z","iopub.execute_input":"2024-12-05T06:32:34.701249Z","iopub.status.idle":"2024-12-05T06:32:34.711732Z","shell.execute_reply.started":"2024-12-05T06:32:34.701219Z","shell.execute_reply":"2024-12-05T06:32:34.710791Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Pastikan jumlah fitur pada data uji sama dengan data pelatihan\n# missing_columns = set(train_data.columns) - set(test_data_cleaned.columns)\n# for col in missing_columns:\n#     test_data_cleaned[col] = 0  # Tambahkan kolom dengan nilai default\n# test_data_cleaned = test_data_cleaned[train_data.columns]  # Sesuaikan urutan kolom\n\n# predictions = []\n# for _, row in test_data_cleaned.iterrows():\n#     inputs = row.values.astype(float)  # Konversi input test\n#     prediction = slp.neuron_propagate(inputs)\n#     predictions.append(prediction)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.713017Z","iopub.execute_input":"2024-12-05T06:32:34.713412Z","iopub.status.idle":"2024-12-05T06:32:34.723353Z","shell.execute_reply.started":"2024-12-05T06:32:34.713366Z","shell.execute_reply":"2024-12-05T06:32:34.722394Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# for _, row in test_data_cleaned.iterrows():\n#     inputs = row.values.astype(float)  # Konversi input test\n#     prediction = slp.neuron_propagate(inputs)\n#     predictions.append(prediction)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.724475Z","iopub.execute_input":"2024-12-05T06:32:34.724855Z","iopub.status.idle":"2024-12-05T06:32:34.738826Z","shell.execute_reply.started":"2024-12-05T06:32:34.724823Z","shell.execute_reply":"2024-12-05T06:32:34.737670Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Tampilkan Prediksi\n# print(\"Prediksi pada Data Uji:\", predictions[:10])  # Contoh 10 prediksi pertama","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.740211Z","iopub.execute_input":"2024-12-05T06:32:34.740626Z","iopub.status.idle":"2024-12-05T06:32:34.750947Z","shell.execute_reply.started":"2024-12-05T06:32:34.740580Z","shell.execute_reply":"2024-12-05T06:32:34.749980Z"},"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pandas as pd\nfrom sklearn.decomposition import PCA\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.neural_network import MLPRegressor\nfrom sklearn.metrics import mean_squared_error, r2_score","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:34.752027Z","iopub.execute_input":"2024-12-05T06:32:34.752326Z","iopub.status.idle":"2024-12-05T06:32:35.271819Z","shell.execute_reply.started":"2024-12-05T06:32:34.752287Z","shell.execute_reply":"2024-12-05T06:32:35.270655Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def encode_string_columns(df):\n    for column in df.columns:\n        if df[column].dtype == object:\n            codes, _ = pd.factorize(df[column])\n            df[column] = codes\n    return df\n\ndf = 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\")\nid = df_test['id']\ndf = df.drop(columns=['id', 'sii'])\ndf_test = df_test.drop(columns=['id'])\ndf = encode_string_columns(df)\ndf.fillna(0, inplace=True)\ndf_test = encode_string_columns(df_test)\ndf_test.fillna(0, inplace=True)\n\ncommon_columns = df.columns.intersection(df_test.columns)\nprint(common_columns)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:35.273221Z","iopub.execute_input":"2024-12-05T06:32:35.273847Z","iopub.status.idle":"2024-12-05T06:32:35.437695Z","shell.execute_reply.started":"2024-12-05T06:32:35.273800Z","shell.execute_reply":"2024-12-05T06:32:35.436681Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Set up features and target\nX = df[common_columns]\ny = df.drop(columns=common_columns)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:35.439187Z","iopub.execute_input":"2024-12-05T06:32:35.440000Z","iopub.status.idle":"2024-12-05T06:32:35.447406Z","shell.execute_reply.started":"2024-12-05T06:32:35.439952Z","shell.execute_reply":"2024-12-05T06:32:35.446356Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Split data into training and validation sets\nX_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:35.448497Z","iopub.execute_input":"2024-12-05T06:32:35.448922Z","iopub.status.idle":"2024-12-05T06:32:35.461985Z","shell.execute_reply.started":"2024-12-05T06:32:35.448884Z","shell.execute_reply":"2024-12-05T06:32:35.460911Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Standardize features\nscaler = StandardScaler()\nX_train = scaler.fit_transform(X_train)\nX_val = scaler.transform(X_val)\nX_test = scaler.transform(df_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:35.463223Z","iopub.execute_input":"2024-12-05T06:32:35.463611Z","iopub.status.idle":"2024-12-05T06:32:35.490976Z","shell.execute_reply.started":"2024-12-05T06:32:35.463581Z","shell.execute_reply":"2024-12-05T06:32:35.490132Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Define the neural network model for regression\nmodel = MLPRegressor(hidden_layer_sizes=(10, 5), max_iter=1000, random_state=42)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:35.492069Z","iopub.execute_input":"2024-12-05T06:32:35.492334Z","iopub.status.idle":"2024-12-05T06:32:35.497196Z","shell.execute_reply.started":"2024-12-05T06:32:35.492307Z","shell.execute_reply":"2024-12-05T06:32:35.496235Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Train the model\nmodel.fit(X_train, y_train)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:35.498591Z","iopub.execute_input":"2024-12-05T06:32:35.499040Z","iopub.status.idle":"2024-12-05T06:32:44.385317Z","shell.execute_reply.started":"2024-12-05T06:32:35.498994Z","shell.execute_reply":"2024-12-05T06:32:44.384272Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Predict on validation set\ny_pred = model.predict(X_val)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.386822Z","iopub.execute_input":"2024-12-05T06:32:44.387228Z","iopub.status.idle":"2024-12-05T06:32:44.398179Z","shell.execute_reply.started":"2024-12-05T06:32:44.387183Z","shell.execute_reply":"2024-12-05T06:32:44.396812Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Evaluate the model\nmse = mean_squared_error(y_val, y_pred)\nr2 = r2_score(y_val, y_pred)\nprint(f'Mean Squared Error: {mse:.2f}')\nprint(f'R2 Score: {r2:.2f}')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.400270Z","iopub.execute_input":"2024-12-05T06:32:44.401792Z","iopub.status.idle":"2024-12-05T06:32:44.426817Z","shell.execute_reply.started":"2024-12-05T06:32:44.401706Z","shell.execute_reply":"2024-12-05T06:32:44.425046Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Predict on the test set\ny_test_predict = model.predict(X_test)\ny_test_predict_df = pd.DataFrame(y_test_predict, columns=y.columns)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.428436Z","iopub.execute_input":"2024-12-05T06:32:44.428977Z","iopub.status.idle":"2024-12-05T06:32:44.446481Z","shell.execute_reply.started":"2024-12-05T06:32:44.428916Z","shell.execute_reply":"2024-12-05T06:32:44.444649Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Concatenate the predicted values with the original test DataFrame\ndf_test_with_predictions = pd.concat([df_test.reset_index(drop=True), y_test_predict_df], axis=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.448299Z","iopub.execute_input":"2024-12-05T06:32:44.449530Z","iopub.status.idle":"2024-12-05T06:32:44.463137Z","shell.execute_reply.started":"2024-12-05T06:32:44.449479Z","shell.execute_reply":"2024-12-05T06:32:44.461733Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Reorder columns to match train DataFrame\ndf_test_with_predictions = df_test_with_predictions[df.columns]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.464620Z","iopub.execute_input":"2024-12-05T06:32:44.467713Z","iopub.status.idle":"2024-12-05T06:32:44.482576Z","shell.execute_reply.started":"2024-12-05T06:32:44.467577Z","shell.execute_reply":"2024-12-05T06:32:44.481223Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(df_test_with_predictions.head())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.484180Z","iopub.execute_input":"2024-12-05T06:32:44.484594Z","iopub.status.idle":"2024-12-05T06:32:44.517919Z","shell.execute_reply.started":"2024-12-05T06:32:44.484551Z","shell.execute_reply":"2024-12-05T06:32:44.516771Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Load the CSV file into a DataFrame\ndf = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/train.csv\")\ndf_test = df_test_with_predictions","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.519541Z","iopub.execute_input":"2024-12-05T06:32:44.519976Z","iopub.status.idle":"2024-12-05T06:32:44.571296Z","shell.execute_reply.started":"2024-12-05T06:32:44.519932Z","shell.execute_reply":"2024-12-05T06:32:44.570172Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df = pd.DataFrame(df)\ndf_test = pd.DataFrame(df_test)\n\nprint(df.shape)\ncol = df.columns\n\n\n\n\nprint(id)\ndf = df.drop(columns = [\"id\",'sii'])\n\nstring_columns = df.select_dtypes(include='object').columns\nprint(df)\nprint(df_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.572616Z","iopub.execute_input":"2024-12-05T06:32:44.572963Z","iopub.status.idle":"2024-12-05T06:32:44.607563Z","shell.execute_reply.started":"2024-12-05T06:32:44.572929Z","shell.execute_reply":"2024-12-05T06:32:44.606560Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\n# Encode the string columns in DataFrame\nencoded_df = encode_string_columns(df)\n# print(encoded_df.head())\nencoded_df_test = encode_string_columns(df_test)\nencoded_df_test.fillna(0, inplace=True)\nencoded_df.fillna(0, inplace=True)\n\nprint(encoded_df.shape)\nprint(encoded_df_test.shape)\ndef choose_optimal_components(explained_variance_ratio, threshold=0.95):\n    cumulative_variance = explained_variance_ratio.cumsum()\n    optimal_components = (cumulative_variance >= threshold).argmax() + 1\n    return optimal_components, cumulative_variance\n\n\ndef perform_pca(data, data_2, threshold=0.95):\n    # Excluding the last column\n    features = data.iloc[:, :-1]\n    features_test = data_2.iloc[:,:-1]\n\n    # Standardize the features\n    scaler = StandardScaler()\n    standardized_data = scaler.fit_transform(features)\n    standardized_data_test = scaler.transform(features_test)\n\n    # Perform PCA without specifying the number of components\n    pca = PCA()\n    pca.fit(standardized_data)\n\n    # Determine the optimal number of components\n    optimal_components, cumulative_variance = choose_optimal_components(pca.explained_variance_ratio_, threshold)\n\n    # Perform PCA with the optimal number of components\n    pca = PCA(n_components=optimal_components)\n    principal_components = pca.fit_transform(standardized_data)\n\n    # Create a DataFrame with the principal components\n    columns = [f\"PC{i+1}\" for i in range(optimal_components)]\n    pca_df = pd.DataFrame(data=principal_components, columns=columns)\n    \n    principle_components_test= pca.transform(standardized_data_test)\n    columns_test = [f\"PC{i+1}\" for i in range(optimal_components)]\n    pca_test_df = pd.DataFrame(data = principle_components_test, columns = columns_test)\n\n    return pca_df, optimal_components, cumulative_variance, pca_test_df\n\n\n    \ndata = encoded_df\ndata_2 = encoded_df_test\n\n    # Perform PCA excluding the last column\nthreshold = 0.95  # Desired level of explained variance\npca_result, optimal_components, cumulative_variance, pca_test_df= perform_pca(data, data_2, threshold)\n\n   \n    \nprint(pca_result)\n\npca_result.fillna(0, inplace=True)\nprint(pca_result)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:44.608919Z","iopub.execute_input":"2024-12-05T06:32:44.609196Z","iopub.status.idle":"2024-12-05T06:32:45.037205Z","shell.execute_reply.started":"2024-12-05T06:32:44.609167Z","shell.execute_reply":"2024-12-05T06:32:45.035771Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nfrom sklearn.neural_network import MLPClassifier\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.metrics import accuracy_score\nfrom sklearn.metrics import mean_squared_error, r2_score","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:45.039584Z","iopub.execute_input":"2024-12-05T06:32:45.040354Z","iopub.status.idle":"2024-12-05T06:32:45.064816Z","shell.execute_reply.started":"2024-12-05T06:32:45.040296Z","shell.execute_reply":"2024-12-05T06:32:45.061136Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X = pca_result\nX.fillna(method = 'ffill', inplace = True)\ndf_test = pca_test_df\ndf_test.fillna(method = 'ffill', inplace = True)\n\ny = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/train.csv\")\n# Features and target\n\ny = y['sii']\ny.fillna(0, inplace = True)\nprint(X)\nprint(y)\n\n# Split data into training and validation sets\nX_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\nX_test = df_test\n\n# Standardize features\nscaler = StandardScaler()\nX_train = scaler.fit_transform(X_train)\nX_val = scaler.transform(X_val)\nX_test = scaler.transform(X_test)\n\n# Define the neural network model\nmodel = MLPClassifier(hidden_layer_sizes=(10, 5), max_iter=1000, random_state=42)\n\n# Train the model\nmodel.fit(X_train, y_train)\n\n# Predict on validation set\ny_pred = model.predict(X_val)\n\nmse = mean_squared_error(y_val, y_pred)\nr2 = r2_score(y_val, y_pred)\n\n# Evaluate the model\naccuracy = accuracy_score(y_val, y_pred)\nprint(f'Validation Accuracy: {accuracy:.2f}')\nprint(mse)\nprint(r2)\n\n\ny_test_predict = model.predict(X_test)\nprint(y_test_predict)\n\ny_test_predict = pd.DataFrame(y_test_predict.astype(int), columns = [\"sii\"])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:45.067875Z","iopub.execute_input":"2024-12-05T06:32:45.073477Z","iopub.status.idle":"2024-12-05T06:32:48.502704Z","shell.execute_reply.started":"2024-12-05T06:32:45.073405Z","shell.execute_reply":"2024-12-05T06:32:48.500710Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submission = pd.concat([id, y_test_predict], axis=1)\n\nprint(submission.head())\n\nsubmission.to_csv(\"/kaggle/working/submission.csv\", index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T06:32:48.504855Z","iopub.execute_input":"2024-12-05T06:32:48.507025Z","iopub.status.idle":"2024-12-05T06:32:48.524556Z","shell.execute_reply.started":"2024-12-05T06:32:48.506946Z","shell.execute_reply":"2024-12-05T06:32:48.522084Z"}},"outputs":[],"execution_count":null}]}