{"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"},{"sourceId":9685789,"sourceType":"datasetVersion","datasetId":5920922}],"dockerImageVersionId":30786,"isInternetEnabled":true,"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","execution":{"iopub.status.busy":"2024-11-07T05:49:39.662093Z","iopub.execute_input":"2024-11-07T05:49:39.662516Z","iopub.status.idle":"2024-11-07T05:49:41.924980Z","shell.execute_reply.started":"2024-11-07T05:49:39.662476Z","shell.execute_reply":"2024-11-07T05:49:41.923642Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport torch\nimport os\nfrom torch.utils.data import DataLoader\nfrom torch.utils.data import Dataset\nfrom sklearn.preprocessing import StandardScaler\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torch.utils.data import DataLoader, Dataset\nfrom torch.utils.data import random_split\n\n\nscaler = StandardScaler()","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:41.926958Z","iopub.execute_input":"2024-11-07T05:49:41.928613Z","iopub.status.idle":"2024-11-07T05:49:45.967082Z","shell.execute_reply.started":"2024-11-07T05:49:41.928556Z","shell.execute_reply":"2024-11-07T05:49:45.965922Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import copy","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:45.968937Z","iopub.execute_input":"2024-11-07T05:49:45.969860Z","iopub.status.idle":"2024-11-07T05:49:45.974872Z","shell.execute_reply.started":"2024-11-07T05:49:45.969808Z","shell.execute_reply":"2024-11-07T05:49:45.973439Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.impute import KNNImputer","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:45.976880Z","iopub.execute_input":"2024-11-07T05:49:45.977324Z","iopub.status.idle":"2024-11-07T05:49:46.270191Z","shell.execute_reply.started":"2024-11-07T05:49:45.977276Z","shell.execute_reply":"2024-11-07T05:49:46.268921Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_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\")","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.274090Z","iopub.execute_input":"2024-11-07T05:49:46.274557Z","iopub.status.idle":"2024-11-07T05:49:46.359989Z","shell.execute_reply.started":"2024-11-07T05:49:46.274517Z","shell.execute_reply":"2024-11-07T05:49:46.358860Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df.shape","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:57:11.692077Z","iopub.execute_input":"2024-11-07T08:57:11.692516Z","iopub.status.idle":"2024-11-07T08:57:11.700555Z","shell.execute_reply.started":"2024-11-07T08:57:11.692475Z","shell.execute_reply":"2024-11-07T08:57:11.699140Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"imputer = KNNImputer(n_neighbors=10)\ndef csv_data_process():\n    train_df = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/train.csv\")\n    test_df = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/test.csv\")\n    y_train_0 = train_df['sii']\n    x_train_0 = train_df.drop(columns=['sii'])\n    \n    columns_to_exclude = ['PCIAT-Season', 'PCIAT-PCIAT_01', 'PCIAT-PCIAT_02',\n       'PCIAT-PCIAT_03', 'PCIAT-PCIAT_04', 'PCIAT-PCIAT_05', 'PCIAT-PCIAT_06',\n       'PCIAT-PCIAT_07', 'PCIAT-PCIAT_08', 'PCIAT-PCIAT_09', 'PCIAT-PCIAT_10',\n       'PCIAT-PCIAT_11', 'PCIAT-PCIAT_12', 'PCIAT-PCIAT_13', 'PCIAT-PCIAT_14',\n       'PCIAT-PCIAT_15', 'PCIAT-PCIAT_16', 'PCIAT-PCIAT_17', 'PCIAT-PCIAT_18',\n       'PCIAT-PCIAT_19', 'PCIAT-PCIAT_20', 'PCIAT-PCIAT_Total']\n    \n    x_train_0 = x_train_0.drop(columns=columns_to_exclude)\n    x_train_copy = copy.deepcopy(x_train_0)\n    n = len(x_train_0)\n    for column in x_train_copy.columns:\n        if x_train_0[f\"{column}\"].isna().sum() > 0.8*n:\n            test_df.drop(columns=[f\"{column}\"], inplace=True)\n            x_train_0.drop(columns=[f'{column}'], inplace=True)\n    x_train_0.drop(columns=\"id\", inplace=True)\n    test_df.drop(columns=\"id\", inplace=True)\n    \n    \"\"\" Training set Processing \"\"\"\n    # categorical to integer\n    season_map = {\n        \"Spring\":0,\n        \"Winter\":1,\n        \"Summer\":2,\n        \"Fall\"  :3\n    }\n    \n    for col in x_train_0.select_dtypes(include='object').columns:\n        x_train_0[col] = x_train_0[col].map(season_map)\n    \n    # KNN imputing nan values\n    x_train_imputed = imputer.fit_transform(x_train_0)\n    \n    x_train_imputed_df = pd.DataFrame(x_train_imputed, columns=x_train_0.columns)\n    \n    \n    # feature scaling\n    x_train_scaled = scaler.fit_transform(x_train_imputed_df)\n    \n    x_train_scaled_df = pd.DataFrame(x_train_scaled, columns=x_train_imputed_df.columns)\n    \n    \n    \"\"\" Test set Processing \"\"\"\n    for col in test_df.select_dtypes(include='object').columns:\n        test_df[col] = test_df[col].map(season_map)\n        \n        \n    test_imputed = imputer.fit_transform(test_df)\n    \n    test_imputed_df = pd.DataFrame(test_imputed, columns=test_df.columns)\n    \n    test_scaled = scaler.fit_transform(test_imputed_df)\n    \n    test_scaled_df = pd.DataFrame(test_scaled, columns=test_imputed_df.columns)\n    \n    return x_train_scaled_df.values, y_train_0, test_scaled_df.values","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:56:28.252076Z","iopub.execute_input":"2024-11-07T08:56:28.252596Z","iopub.status.idle":"2024-11-07T08:56:28.267306Z","shell.execute_reply.started":"2024-11-07T08:56:28.252551Z","shell.execute_reply":"2024-11-07T08:56:28.265962Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X, y, test = csv_data_process()","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:56:31.217073Z","iopub.execute_input":"2024-11-07T08:56:31.217555Z","iopub.status.idle":"2024-11-07T08:56:37.864117Z","shell.execute_reply.started":"2024-11-07T08:56:31.217510Z","shell.execute_reply":"2024-11-07T08:56:37.862795Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test.shape","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:56:49.346820Z","iopub.execute_input":"2024-11-07T08:56:49.347250Z","iopub.status.idle":"2024-11-07T08:56:49.355253Z","shell.execute_reply.started":"2024-11-07T08:56:49.347210Z","shell.execute_reply":"2024-11-07T08:56:49.353862Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:53:23.401209Z","iopub.execute_input":"2024-11-07T05:53:23.401637Z","iopub.status.idle":"2024-11-07T05:53:23.409649Z","shell.execute_reply.started":"2024-11-07T05:53:23.401591Z","shell.execute_reply":"2024-11-07T05:53:23.408516Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class KMeans:\n    def __init__(self, n_clusters=4, n_iters=100, tol=1e-4, device='cpu'):\n        self.n_clusters = n_clusters\n        self.n_iters = n_iters\n        self.tol = tol\n        self.device = device\n        \n        self.centroids = None\n        \n    def shard_initialising(self, data):\n        \"\"\"\n        performs naive sharding initialization for kmeans clustering\n        params:\n            data ( will be in arrays not pandas DataFrame )\n        return:\n            centroids (array)\n        \"\"\"\n        # computing composite sum of each instances/row\n        composite_sum = torch.sum(data, axis=1)\n        \n        # get the sorted index\n        sorted_indices = torch.argsort(composite_sum)\n        \n        # sort the data based on sorted indices\n        sorted_data = data[sorted_indices]\n        \n        # spliting data into shards\n        shards = torch.tensor_split(sorted_data, self.n_clusters)\n        \n        # calculate the centroids for each shard\n        centroids = torch.stack([torch.mean(shard, axis=0) for shard in shards])\n        \n        return centroids.to(self.device)\n    \n    def calculate_distance(self, data, centroids):\n        \"\"\"\n        params:\n            data->(tensor) shape; [num_data_points, n_features]\n            centroids->(tensor) shape: [n_clusters, n_features]\n        returns:\n            distance: [num_data_points, n_clusters]\n        \"\"\"\n        distances = torch.cdist(data, centroids, p=2) # shape-> [num_data_points, n_clusters]\n        return distances\n    \n    def assign_clusters(self, distances):\n        return torch.argmin(distances, dim=1) # shape: [n_points]\n    \n    def update_centroids(self,data, labels):\n        new_centroids = []\n        \n        for i in range(self.n_clusters):\n            cluster_points = data[labels == i]\n            new_centroids.append(cluster_points.mean(dim=0))\n        return torch.stack(new_centroids, dim=0)\n    \n    def fit(self, data):\n        data = torch.tensor(data).to(self.device)\n        print(data.shape)\n        self.centroids = self.shard_initialising(data)\n        \n        for i in range(self.n_iters):\n            distance = self.calculate_distance(data, self.centroids)\n            labels = self.assign_clusters(distance)\n            new_centroids = self.update_centroids(data, labels)\n            \n            if torch.norm(self.centroids - new_centroids) < self.tol:\n                print(f\"Convergence at iteration {i}\")\n                break\n            \n            self.centroids = new_centroids\n        return labels\n    \n    def predict(self, data):\n        data = torch.tensor(data).to(self.device)\n        \n        distances = self.calculate_distance(data, self.centroids)\n        predicted_labels = self.assign_clusters(distances)\n        return predicted_labels","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:45:19.773674Z","iopub.execute_input":"2024-11-07T08:45:19.774100Z","iopub.status.idle":"2024-11-07T08:45:19.788402Z","shell.execute_reply.started":"2024-11-07T08:45:19.774059Z","shell.execute_reply":"2024-11-07T08:45:19.786908Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class cmi_dataset(Dataset):\n    def __init__(self, csv_file, root_dir):\n        self.root_dir = root_dir\n        self.annotations_csv = pd.read_csv(os.path.join(self.root_dir, csv_file))\n#         self.annotations_parquet = ps.read_parquet(os.path.join(root_dir, ))\n        self.processed_data = self.process_data(self.annotations_csv)\n    \n    def process_data(self):\n        pass\n    \n    def __len__(self):\n        return len(self.processed_data)\n    \n    def __getitem__(self, index):\n        sample = self.processed_data[index][:-1]\n        label = self.processed_data[index][-1]\n        \n        return sample, label\n        ","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.384863Z","iopub.execute_input":"2024-11-07T05:49:46.385295Z","iopub.status.idle":"2024-11-07T05:49:46.402463Z","shell.execute_reply.started":"2024-11-07T05:49:46.385253Z","shell.execute_reply":"2024-11-07T05:49:46.401105Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"path = '../input/child-mind-institute-problematic-internet-use/series_train.parquet'\ndef ts_data_extraction(path, train_df):\n    sii_labels = []\n    time_series_all = []\n    for folder in os.listdir(path):\n        id = f\"{folder[3:]}\"\n        sii_labels.append(train_df.loc[id, \"sii\"])\n        \n        parquet_df = pd.read_parquet(f\"{path}/{folder}/part-0.parquet\")\n        scaled_parquet_df = pd.DataFrame(scaler.fit_transform(parquet_df), columns=parquet.columns)\n        df = scaled_parquet_df.describe()\n        train_ts = df[['enmo', 'anglez', 'time_of_day']]\n        train_ts_arr = train_ts.values\n        train_ts_extracted = train_ts_arr[4:-1]\n        time_series_all.append(train_ts_extracted)\n    \n    ts_ip_tensor = torch.tensor(time_series_all)\n    sii_labels_tensor = torch.tensor(sii_labels)\n    \n    return ts_ip_tensor, sii_labels_tensor\n\n\"\"\"\ninputs, outputs = ts_data_extraction(path, train_df)   the inputs & outputs are saved as they were extracted in another notebook, just download it and load it\n\n\"\"\"\n","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.404016Z","iopub.execute_input":"2024-11-07T05:49:46.404515Z","iopub.status.idle":"2024-11-07T05:49:46.427475Z","shell.execute_reply.started":"2024-11-07T05:49:46.404467Z","shell.execute_reply":"2024-11-07T05:49:46.426083Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"inputs = torch.load(\"../input/ts-data/inputs.pt\").float()\noutputs = torch.load(\"../input/ts-data/outputs.pt\").float()\ninputs, outputs","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.429003Z","iopub.execute_input":"2024-11-07T05:49:46.429490Z","iopub.status.idle":"2024-11-07T05:49:46.568579Z","shell.execute_reply.started":"2024-11-07T05:49:46.429443Z","shell.execute_reply":"2024-11-07T05:49:46.567316Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"inputs[0].dtype","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.570130Z","iopub.execute_input":"2024-11-07T05:49:46.570576Z","iopub.status.idle":"2024-11-07T05:49:46.578641Z","shell.execute_reply.started":"2024-11-07T05:49:46.570528Z","shell.execute_reply":"2024-11-07T05:49:46.577299Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"inputs.shape, outputs.shape","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.580514Z","iopub.execute_input":"2024-11-07T05:49:46.580956Z","iopub.status.idle":"2024-11-07T05:49:46.590606Z","shell.execute_reply.started":"2024-11-07T05:49:46.580894Z","shell.execute_reply":"2024-11-07T05:49:46.589442Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class TimeSeriesData(Dataset):\n    def __init__(self, inputs, labels):\n        self.inputs = inputs\n        self.labels = labels\n        \n    def __len__(self):\n        return len(self.inputs)\n    \n    def __getitem__(self, idx):\n        return self.inputs[idx], self.labels[idx]","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.591972Z","iopub.execute_input":"2024-11-07T05:49:46.592327Z","iopub.status.idle":"2024-11-07T05:49:46.599909Z","shell.execute_reply.started":"2024-11-07T05:49:46.592292Z","shell.execute_reply":"2024-11-07T05:49:46.598624Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ts_train_data = TimeSeriesData(inputs, outputs)\nts_train_data_loader = DataLoader(ts_train_data, batch_size=32, shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.605339Z","iopub.execute_input":"2024-11-07T05:49:46.606267Z","iopub.status.idle":"2024-11-07T05:49:46.611253Z","shell.execute_reply.started":"2024-11-07T05:49:46.606225Z","shell.execute_reply":"2024-11-07T05:49:46.610226Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for inputs, labels in ts_train_data_loader:\n    print(inputs.size())\n    print(labels.size())\n    print(inputs)\n    print(labels)\n    break","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.612563Z","iopub.execute_input":"2024-11-07T05:49:46.612896Z","iopub.status.idle":"2024-11-07T05:49:46.639329Z","shell.execute_reply.started":"2024-11-07T05:49:46.612862Z","shell.execute_reply":"2024-11-07T05:49:46.638088Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"input_size = 3\nhidden_size = 6\nlayer_size = 1\noutput_size = 4\n\nclass model_lstm(nn.Module):\n    def __init__(self, input_dim, hidden_dim, layer_dim, output_dim):\n        super(model_lstm, self).__init__()\n        self.hidden_dim = hidden_dim\n        self.layer_dim = layer_dim\n        \n        # LSTM layer\n        self.lstm = nn.LSTM(input_dim, hidden_dim, layer_dim, batch_first=True)\n        self.fc = nn.Linear(hidden_dim, output_dim)\n        \n    def forward(self, x):\n        # initialize hidden states and cell states\n        h0 = torch.zeros(self.layer_dim, x.size(0), self.hidden_dim).requires_grad_()\n        c0 = torch.zeros(self.layer_dim, x.size(0), self.hidden_dim).requires_grad_()\n        \n        out, (hn, cn) = self.lstm(x, (h0.detach(), c0.detach()))\n        \n        out = self.fc(out[:, -1, :])\n        \n        return out\n    \nLSTM_model = model_lstm(input_size, hidden_size, layer_size, output_size)","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.640798Z","iopub.execute_input":"2024-11-07T05:49:46.641222Z","iopub.status.idle":"2024-11-07T05:49:46.654855Z","shell.execute_reply.started":"2024-11-07T05:49:46.641175Z","shell.execute_reply":"2024-11-07T05:49:46.653641Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(ts_train_data)","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.656670Z","iopub.execute_input":"2024-11-07T05:49:46.657018Z","iopub.status.idle":"2024-11-07T05:49:46.664234Z","shell.execute_reply.started":"2024-11-07T05:49:46.656982Z","shell.execute_reply":"2024-11-07T05:49:46.662923Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dataset_size = len(ts_train_data)\ntrain_size = int(0.85 * dataset_size)\nval_size = dataset_size - train_size\n\ntrain_size, val_size","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.665523Z","iopub.execute_input":"2024-11-07T05:49:46.665867Z","iopub.status.idle":"2024-11-07T05:49:46.678608Z","shell.execute_reply.started":"2024-11-07T05:49:46.665831Z","shell.execute_reply":"2024-11-07T05:49:46.677220Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_dataset, val_dataset = random_split(ts_train_data,\n                                          [train_size, val_size])","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.680007Z","iopub.execute_input":"2024-11-07T05:49:46.680813Z","iopub.status.idle":"2024-11-07T05:49:46.686537Z","shell.execute_reply.started":"2024-11-07T05:49:46.680772Z","shell.execute_reply":"2024-11-07T05:49:46.685390Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(train_dataset), len(val_dataset)","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.687867Z","iopub.execute_input":"2024-11-07T05:49:46.688256Z","iopub.status.idle":"2024-11-07T05:49:46.699603Z","shell.execute_reply.started":"2024-11-07T05:49:46.688217Z","shell.execute_reply":"2024-11-07T05:49:46.698246Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)\nval_loader = DataLoader(val_dataset, batch_size=32, shuffle=False)","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.701242Z","iopub.execute_input":"2024-11-07T05:49:46.701885Z","iopub.status.idle":"2024-11-07T05:49:46.708831Z","shell.execute_reply.started":"2024-11-07T05:49:46.701830Z","shell.execute_reply":"2024-11-07T05:49:46.707711Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"LSTM_model.parameters","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.710477Z","iopub.execute_input":"2024-11-07T05:49:46.711299Z","iopub.status.idle":"2024-11-07T05:49:46.720214Z","shell.execute_reply.started":"2024-11-07T05:49:46.711246Z","shell.execute_reply":"2024-11-07T05:49:46.719204Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"loss_func = nn.CrossEntropyLoss()\noptimizer = optim.Adam(LSTM_model.parameters(), lr=0.01)","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:46.721655Z","iopub.execute_input":"2024-11-07T05:49:46.722079Z","iopub.status.idle":"2024-11-07T05:49:47.879429Z","shell.execute_reply.started":"2024-11-07T05:49:46.722041Z","shell.execute_reply":"2024-11-07T05:49:47.878351Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# training lstm model\nnum_epochs = 10\nloss_log = []\nfor epoch in range(num_epochs):\n    for inputs, labels in train_loader:\n        # forward pass\n        outputs = LSTM_model(inputs)\n        labels_reshaped = labels.view(-1).long()\n#         print(outputs.size(), labels.size())\n        loss = loss_func(outputs, labels_reshaped)\n        \n        # backward pass\n        optimizer.zero_grad()\n        loss.backward()\n        \n        # optimizer step(update weights)\n        optimizer.step()\n        \n    loss_log.append(loss.item())\n    print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}') ","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:47.881049Z","iopub.execute_input":"2024-11-07T05:49:47.881756Z","iopub.status.idle":"2024-11-07T05:49:48.897460Z","shell.execute_reply.started":"2024-11-07T05:49:47.881704Z","shell.execute_reply":"2024-11-07T05:49:48.896175Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# validating test set \nLSTM_model.eval()\nval_loss = 0\ntotal = 0\ncorrect = 0\npredicted_arr = []\nwith torch.no_grad():\n    for inputs, labels in val_loader:\n        outputs = LSTM_model(inputs)\n        labels_reshaped_long = labels.view(-1).long()\n        loss = loss_func(outputs, labels_reshaped_long)\n        val_loss += loss.item()\n        \n        _, predicted = torch.max(outputs.data, 1)\n        predicted_arr.append(predicted)\n        total += labels.size(0)\n        correct += (predicted == labels).sum().item()\nval_loss /= len(val_loader)\nval_accuracy = correct / total\nprint(f'Validation Loss: {val_loss:.4f}, Validation Accuracy: {val_accuracy:.4f}')\n        ","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:48.899503Z","iopub.execute_input":"2024-11-07T05:49:48.899956Z","iopub.status.idle":"2024-11-07T05:49:48.933302Z","shell.execute_reply.started":"2024-11-07T05:49:48.899907Z","shell.execute_reply":"2024-11-07T05:49:48.931939Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predicted_arr","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:48.934813Z","iopub.execute_input":"2024-11-07T05:49:48.935647Z","iopub.status.idle":"2024-11-07T05:49:48.946044Z","shell.execute_reply.started":"2024-11-07T05:49:48.935594Z","shell.execute_reply":"2024-11-07T05:49:48.944875Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"true_labels = []\ncnt = 0\nfor _,labels in val_loader:\n    true_labels.append(labels)\n    cnt += 1","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:48.947148Z","iopub.execute_input":"2024-11-07T05:49:48.947582Z","iopub.status.idle":"2024-11-07T05:49:48.957186Z","shell.execute_reply.started":"2024-11-07T05:49:48.947546Z","shell.execute_reply":"2024-11-07T05:49:48.955780Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"left here\")","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:48.959111Z","iopub.execute_input":"2024-11-07T05:49:48.960064Z","iopub.status.idle":"2024-11-07T05:49:48.966155Z","shell.execute_reply.started":"2024-11-07T05:49:48.960010Z","shell.execute_reply":"2024-11-07T05:49:48.964933Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_test = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/train.csv\")\ntrain_test","metadata":{"execution":{"iopub.status.busy":"2024-11-07T05:49:48.967511Z","iopub.execute_input":"2024-11-07T05:49:48.968414Z","iopub.status.idle":"2024-11-07T05:49:49.074179Z","shell.execute_reply.started":"2024-11-07T05:49:48.968343Z","shell.execute_reply":"2024-11-07T05:49:49.072902Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"kmean = KMeans()\ny_train_predicted = kmean.fit(X)","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:45:25.289434Z","iopub.execute_input":"2024-11-07T08:45:25.289869Z","iopub.status.idle":"2024-11-07T08:45:25.370406Z","shell.execute_reply.started":"2024-11-07T08:45:25.289829Z","shell.execute_reply":"2024-11-07T08:45:25.368796Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train_predicted","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:45:38.953756Z","iopub.execute_input":"2024-11-07T08:45:38.954194Z","iopub.status.idle":"2024-11-07T08:45:38.963784Z","shell.execute_reply.started":"2024-11-07T08:45:38.954156Z","shell.execute_reply":"2024-11-07T08:45:38.962609Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_predicted_sii = kmean.predict(test) ","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:58:21.092557Z","iopub.execute_input":"2024-11-07T08:58:21.093026Z","iopub.status.idle":"2024-11-07T08:58:21.102890Z","shell.execute_reply.started":"2024-11-07T08:58:21.092982Z","shell.execute_reply":"2024-11-07T08:58:21.101464Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_predicted_sii","metadata":{"execution":{"iopub.status.busy":"2024-11-07T08:58:30.076471Z","iopub.execute_input":"2024-11-07T08:58:30.076908Z","iopub.status.idle":"2024-11-07T08:58:30.085756Z","shell.execute_reply.started":"2024-11-07T08:58:30.076867Z","shell.execute_reply":"2024-11-07T08:58:30.084519Z"},"trusted":true},"execution_count":null,"outputs":[]}]}