From 9428d6a3a14f0501d86ce81214637c7aac5365f8 Mon Sep 17 00:00:00 2001 From: Cameron Mattson Date: Fri, 1 Sep 2023 07:13:51 -0600 Subject: [PATCH 1/3] Trained shuffled and unshuffled logistic regression and saved indices --- .../nbconverted/plate_4_classify_genotype.py | 255 ++++++++ .../plate_4/plate_4_classify_genotype.ipynb | 575 ++++++++++++++++++ 2 files changed, 830 insertions(+) create mode 100644 1.train_models/log_reg_plates_cp_fs_data/plate_4/nbconverted/plate_4_classify_genotype.py create mode 100644 1.train_models/log_reg_plates_cp_fs_data/plate_4/plate_4_classify_genotype.ipynb diff --git a/1.train_models/log_reg_plates_cp_fs_data/plate_4/nbconverted/plate_4_classify_genotype.py b/1.train_models/log_reg_plates_cp_fs_data/plate_4/nbconverted/plate_4_classify_genotype.py new file mode 100644 index 0000000..e9c4749 --- /dev/null +++ b/1.train_models/log_reg_plates_cp_fs_data/plate_4/nbconverted/plate_4_classify_genotype.py @@ -0,0 +1,255 @@ +#!/usr/bin/env python +# coding: utf-8 + +# # Train a logistic regression to classify genotypes for plate 4 + +# In[1]: + + +import pathlib +import warnings + +import numpy as np +import pandas as pd +from joblib import dump +from scipy.stats import uniform +from sklearn.exceptions import ConvergenceWarning +from sklearn.linear_model import LogisticRegression +from sklearn.model_selection import ( + RandomizedSearchCV, + StratifiedKFold, + train_test_split, +) +from sklearn.preprocessing import LabelEncoder +from sklearn.utils import parallel_backend + +# ## Find the root of the git repo on the host system + +# In[2]: + + +# Get the current working directory +cwd = pathlib.Path.cwd() + +if (cwd / ".git").is_dir(): + root_dir = cwd + +else: + root_dir = None + for parent in cwd.parents: + if (parent / ".git").is_dir(): + root_dir = parent + break + +# Check if a Git root directory was found +if root_dir is None: + raise FileNotFoundError("No Git root directory found.") + + +# ## Define and create paths + +# In[3]: + + +# Input paths +plate_path = "Plate_4_sc_norm_fs.parquet" +plate_path = pathlib.Path(f"{root_dir}/nf1_painting_repo/3.processing_features/data/feature_selected_data/{plate_path}") + +# Output paths +models_path = pathlib.Path("trained_models") +data_path = pathlib.Path("model_data") + +# Create output paths if nonexistent +models_path.mkdir(parents=True, exist_ok=True) +data_path.mkdir(parents=True, exist_ok=True) + + +# ## Load the dataframe + +# In[4]: + + +platedf = pd.read_parquet(plate_path) + + +# ## Define column names + +# In[5]: + + +well_column = "Metadata_Well" +gene_column = "Metadata_genotype" +concentration_column = "Metadata_Concentration" + + +# # Process data + +# ## Down-sample by genotype + +# In[6]: + + +# Filter data where the siRNA construct concentration is zero +platedf = platedf[platedf[concentration_column] == 0] + +min_gene = platedf[gene_column].value_counts().min() +platedf = platedf.groupby(gene_column, group_keys=False).apply(lambda x: x.sample(n=min_gene, random_state=0)) + + +# ## Encode genotypes + +# In[7]: + + +# Encode classes +le = LabelEncoder() +featdf = platedf.copy() +featdf[gene_column] = le.fit_transform(featdf[gene_column]) + + +# ## Remove Metadata and encode labels + +# In[8]: + + +# Create dataframe without Metadata +feat_columns = [col for col in platedf.columns if "Metadata" not in col] +featdf = platedf[feat_columns] + +# Encode labels +platedf[gene_column] = le.transform(platedf[gene_column]) + + +# ## Split the Data + +# In[9]: + + +test_frac = 0.2 +val_frac = 0.15 + +X_train, X_test, y_train, y_test = train_test_split(featdf, platedf[gene_column], test_size = test_frac, random_state=0, shuffle=True) + + +# ## Shuffle the training data for the shuffled model + +# In[10]: + + +X_train_shuf = X_train.copy() + +rng = np.random.default_rng(0) + +for column in X_train_shuf.columns: + X_train_shuf[column] = rng.permutation(X_train_shuf[column]) + + +# # Train Models + +# ## Define model variables + +# In[11]: + + +# Define the hyperparameter search space +param_dist = { + 'C': uniform(loc=0.5, scale=1.5), + "l1_ratio": uniform(loc=0, scale=1), +} + +# Define stratification method +strat_obj = StratifiedKFold(n_splits=5, shuffle=True, random_state=0) + +# Create a Logistic Regression model +logreg_params = { + "max_iter": 1000, + "multi_class": "ovr", + "penalty": 'elasticnet', + "solver": 'saga' +} + +# Initialize the RandomizedSearchCV +random_search_params = { + "param_distributions": param_dist, + "scoring": "precision", + "n_iter": 100, + "cv": strat_obj, + "random_state": 0, + "n_jobs": -1, +} + + +# ## Train the unshuffled model + +# In[12]: + + +logreg = LogisticRegression(**logreg_params) + +# Initialize the RandomizedSearchCV +random_search = RandomizedSearchCV(logreg, **random_search_params) + +# Prevent the convergence warning in sklearn +with parallel_backend("multiprocessing"): + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", category=ConvergenceWarning, module="sklearn" + ) + # Perform the random hyperparameter search + random_search.fit(X_train, y_train) + + +# ## Train the shuffled model + +# In[13]: + + +# Create a Logistic Regression model for shuffled data +shuf_logreg = LogisticRegression(**logreg_params) + +# Initialize the RandomizedSearchCV for shuffled data +shuf_random_search = RandomizedSearchCV(shuf_logreg, **random_search_params) + +# Prevent the convergence warning in sklearn +with parallel_backend("multiprocessing"): + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", category=ConvergenceWarning, module="sklearn" + ) + # Perform the random hyperparameter search + shuf_random_search.fit(X_train_shuf, y_train) + + +# # Save models and model data + +# In[14]: + + +data_suf = "log_reg_cp_fs_data_plate_4" + +# Save the models +dump(random_search.best_estimator_, f"{models_path}/{data_suf}.joblib") +dump(shuf_random_search.best_estimator_, f"{models_path}/log_reg_shuf_cp_fs_data_plate_4.joblib") + +# Save label encoder +dump(le, f"{data_path}/label_encoder_{data_suf}.joblib") + + +# ## Save data indices + +# In[15]: + + +# Assign indices and name each of the splits +X_train_shuf_idxdf = pd.DataFrame({"Metadata_split_name": "X_train_shuf"}, index=X_train_shuf.index) +X_train_idxdf = pd.DataFrame({"Metadata_split_name": "X_train"}, index=X_train.index) +y_train_idxdf = pd.DataFrame({"Metadata_split_name": "y_train"}, index=y_train.index) +y_test_idxdf = pd.DataFrame({"Metadata_split_name": "y_test"}, index=y_test.index) +X_test_idxdf = pd.DataFrame({"Metadata_split_name": "X_test"}, index=X_test.index) + +# Concatenate the splits +data_split_indices = pd.concat([X_train_shuf_idxdf, X_train_idxdf, y_train_idxdf, y_test_idxdf, X_test_idxdf]) + +# Save the splits to a tsv file +data_split_indices.to_csv(f"{data_path}/data_split_indices_{data_suf}.tsv", sep="\t") + diff --git a/1.train_models/log_reg_plates_cp_fs_data/plate_4/plate_4_classify_genotype.ipynb b/1.train_models/log_reg_plates_cp_fs_data/plate_4/plate_4_classify_genotype.ipynb new file mode 100644 index 0000000..d3dca30 --- /dev/null +++ b/1.train_models/log_reg_plates_cp_fs_data/plate_4/plate_4_classify_genotype.ipynb @@ -0,0 +1,575 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "RUaS7hws7w" + }, + "source": [ + "# Train a logistic regression to classify genotypes for plate 4" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:33.640054Z", + "iopub.status.busy": "2023-08-17T16:46:33.639955Z", + "iopub.status.idle": "2023-08-17T16:46:34.017899Z", + "shell.execute_reply": "2023-08-17T16:46:34.017500Z" + }, + "jukit_cell_id": "Uldv3YbqHx" + }, + "outputs": [], + "source": [ + "import pathlib\n", + "import warnings\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "from joblib import dump\n", + "from scipy.stats import uniform\n", + "from sklearn.exceptions import ConvergenceWarning\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import (\n", + " RandomizedSearchCV,\n", + " StratifiedKFold,\n", + " train_test_split,\n", + ")\n", + "from sklearn.preprocessing import LabelEncoder\n", + "from sklearn.utils import parallel_backend" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "pPalNPcUrw" + }, + "source": [ + "## Find the root of the git repo on the host system" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.019971Z", + "iopub.status.busy": "2023-08-17T16:46:34.019815Z", + "iopub.status.idle": "2023-08-17T16:46:34.022807Z", + "shell.execute_reply": "2023-08-17T16:46:34.022530Z" + }, + "jukit_cell_id": "6bmUxXR0eb" + }, + "outputs": [], + "source": [ + "# Get the current working directory\n", + "cwd = pathlib.Path.cwd()\n", + "\n", + "if (cwd / \".git\").is_dir():\n", + " root_dir = cwd\n", + "\n", + "else:\n", + " root_dir = None\n", + " for parent in cwd.parents:\n", + " if (parent / \".git\").is_dir():\n", + " root_dir = parent\n", + " break\n", + "\n", + "# Check if a Git root directory was found\n", + "if root_dir is None:\n", + " raise FileNotFoundError(\"No Git root directory found.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "JBaRt3jExj" + }, + "source": [ + "## Define and create paths" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.024421Z", + "iopub.status.busy": "2023-08-17T16:46:34.024164Z", + "iopub.status.idle": "2023-08-17T16:46:34.026483Z", + "shell.execute_reply": "2023-08-17T16:46:34.026219Z" + }, + "jukit_cell_id": "NVeszTxjt5" + }, + "outputs": [], + "source": [ + "# Input paths\n", + "plate_path = \"Plate_4_sc_norm_fs.parquet\"\n", + "plate_path = pathlib.Path(f\"{root_dir}/nf1_painting_repo/3.processing_features/data/feature_selected_data/{plate_path}\")\n", + "\n", + "# Output paths\n", + "models_path = pathlib.Path(\"trained_models\")\n", + "data_path = pathlib.Path(\"model_data\")\n", + "\n", + "# Create output paths if nonexistent\n", + "models_path.mkdir(parents=True, exist_ok=True)\n", + "data_path.mkdir(parents=True, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "HDCCDvAbvX" + }, + "source": [ + "## Load the dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.028051Z", + "iopub.status.busy": "2023-08-17T16:46:34.027799Z", + "iopub.status.idle": "2023-08-17T16:46:34.155147Z", + "shell.execute_reply": "2023-08-17T16:46:34.154776Z" + }, + "jukit_cell_id": "q2xQ1rmSbQ" + }, + "outputs": [], + "source": [ + "platedf = pd.read_parquet(plate_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "XfgLhC8kvj" + }, + "source": [ + "## Define column names" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.157148Z", + "iopub.status.busy": "2023-08-17T16:46:34.156899Z", + "iopub.status.idle": "2023-08-17T16:46:34.159366Z", + "shell.execute_reply": "2023-08-17T16:46:34.159035Z" + }, + "jukit_cell_id": "pwIe7C4Ax4" + }, + "outputs": [], + "source": [ + "well_column = \"Metadata_Well\"\n", + "gene_column = \"Metadata_genotype\"\n", + "concentration_column = \"Metadata_Concentration\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "wgULt453GT" + }, + "source": [ + "# Process data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "oktgCP29ar" + }, + "source": [ + "## Down-sample by genotype" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.160788Z", + "iopub.status.busy": "2023-08-17T16:46:34.160526Z", + "iopub.status.idle": "2023-08-17T16:46:34.180111Z", + "shell.execute_reply": "2023-08-17T16:46:34.179662Z" + }, + "jukit_cell_id": "sGkl0bhWnv" + }, + "outputs": [], + "source": [ + "# Filter data where the siRNA construct concentration is zero\n", + "platedf = platedf[platedf[concentration_column] == 0]\n", + "\n", + "min_gene = platedf[gene_column].value_counts().min()\n", + "platedf = platedf.groupby(gene_column, group_keys=False).apply(lambda x: x.sample(n=min_gene, random_state=0))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "W1pE36XauH" + }, + "source": [ + "## Encode genotypes" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.181968Z", + "iopub.status.busy": "2023-08-17T16:46:34.181718Z", + "iopub.status.idle": "2023-08-17T16:46:34.187517Z", + "shell.execute_reply": "2023-08-17T16:46:34.187199Z" + }, + "jukit_cell_id": "qcMAUWzcSj" + }, + "outputs": [], + "source": [ + "# Encode classes\n", + "le = LabelEncoder()\n", + "featdf = platedf.copy()\n", + "featdf[gene_column] = le.fit_transform(featdf[gene_column])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "nbEILT7wXY" + }, + "source": [ + "## Remove Metadata and encode labels" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.189001Z", + "iopub.status.busy": "2023-08-17T16:46:34.188784Z", + "iopub.status.idle": "2023-08-17T16:46:34.193131Z", + "shell.execute_reply": "2023-08-17T16:46:34.192708Z" + }, + "jukit_cell_id": "kbCV2fS53j" + }, + "outputs": [], + "source": [ + "# Create dataframe without Metadata\n", + "feat_columns = [col for col in platedf.columns if \"Metadata\" not in col]\n", + "featdf = platedf[feat_columns]\n", + "\n", + "# Encode labels\n", + "platedf[gene_column] = le.transform(platedf[gene_column])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "MfXHjGvcSp" + }, + "source": [ + "## Split the Data" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.194450Z", + "iopub.status.busy": "2023-08-17T16:46:34.194241Z", + "iopub.status.idle": "2023-08-17T16:46:34.199940Z", + "shell.execute_reply": "2023-08-17T16:46:34.199576Z" + }, + "jukit_cell_id": "MHDxE0uhWH" + }, + "outputs": [], + "source": [ + "test_frac = 0.2\n", + "val_frac = 0.15\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(featdf, platedf[gene_column], test_size = test_frac, random_state=0, shuffle=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "3pqmtkoWvR" + }, + "source": [ + "## Shuffle the training data for the shuffled model" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.201234Z", + "iopub.status.busy": "2023-08-17T16:46:34.200985Z", + "iopub.status.idle": "2023-08-17T16:46:34.315457Z", + "shell.execute_reply": "2023-08-17T16:46:34.314938Z" + }, + "jukit_cell_id": "EoWGvinowW" + }, + "outputs": [], + "source": [ + "X_train_shuf = X_train.copy()\n", + "\n", + "rng = np.random.default_rng(0)\n", + "\n", + "for column in X_train_shuf.columns:\n", + " X_train_shuf[column] = rng.permutation(X_train_shuf[column])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "kPw9YcKK2H" + }, + "source": [ + "# Train Models" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "U6eyLl0ZPH" + }, + "source": [ + "## Define model variables" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.317478Z", + "iopub.status.busy": "2023-08-17T16:46:34.317339Z", + "iopub.status.idle": "2023-08-17T16:46:34.321051Z", + "shell.execute_reply": "2023-08-17T16:46:34.320680Z" + }, + "jukit_cell_id": "4E094VqTVl" + }, + "outputs": [], + "source": [ + "# Define the hyperparameter search space\n", + "param_dist = {\n", + " 'C': uniform(loc=0.5, scale=1.5),\n", + " \"l1_ratio\": uniform(loc=0, scale=1),\n", + "}\n", + "\n", + "# Define stratification method\n", + "strat_obj = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)\n", + "\n", + "# Create a Logistic Regression model\n", + "logreg_params = {\n", + " \"max_iter\": 1000,\n", + " \"multi_class\": \"ovr\",\n", + " \"penalty\": 'elasticnet',\n", + " \"solver\": 'saga'\n", + "}\n", + "\n", + "# Initialize the RandomizedSearchCV\n", + "random_search_params = {\n", + " \"param_distributions\": param_dist,\n", + " \"scoring\": \"precision\",\n", + " \"n_iter\": 100,\n", + " \"cv\": strat_obj,\n", + " \"random_state\": 0,\n", + " \"n_jobs\": -1,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "mDLhwaTQV8" + }, + "source": [ + "## Train the unshuffled model" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:46:34.322867Z", + "iopub.status.busy": "2023-08-17T16:46:34.322625Z", + "iopub.status.idle": "2023-08-17T16:53:19.476298Z", + "shell.execute_reply": "2023-08-17T16:53:19.475891Z" + }, + "jukit_cell_id": "YY8qaxm1l1" + }, + "outputs": [], + "source": [ + "logreg = LogisticRegression(**logreg_params)\n", + "\n", + "# Initialize the RandomizedSearchCV\n", + "random_search = RandomizedSearchCV(logreg, **random_search_params)\n", + "\n", + "# Prevent the convergence warning in sklearn\n", + "with parallel_backend(\"multiprocessing\"):\n", + " with warnings.catch_warnings():\n", + " warnings.filterwarnings(\n", + " \"ignore\", category=ConvergenceWarning, module=\"sklearn\"\n", + " )\n", + " # Perform the random hyperparameter search\n", + " random_search.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "Olcix57UR4" + }, + "source": [ + "## Train the shuffled model" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:53:19.478510Z", + "iopub.status.busy": "2023-08-17T16:53:19.478352Z", + "iopub.status.idle": "2023-08-17T16:59:48.318350Z", + "shell.execute_reply": "2023-08-17T16:59:48.317710Z" + }, + "jukit_cell_id": "HoOPZ90KFZ" + }, + "outputs": [], + "source": [ + "# Create a Logistic Regression model for shuffled data\n", + "shuf_logreg = LogisticRegression(**logreg_params)\n", + "\n", + "# Initialize the RandomizedSearchCV for shuffled data\n", + "shuf_random_search = RandomizedSearchCV(shuf_logreg, **random_search_params)\n", + "\n", + "# Prevent the convergence warning in sklearn\n", + "with parallel_backend(\"multiprocessing\"):\n", + " with warnings.catch_warnings():\n", + " warnings.filterwarnings(\n", + " \"ignore\", category=ConvergenceWarning, module=\"sklearn\"\n", + " )\n", + " # Perform the random hyperparameter search\n", + " shuf_random_search.fit(X_train_shuf, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "oCendLQHaN" + }, + "source": [ + "# Save models and model data" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:59:48.321003Z", + "iopub.status.busy": "2023-08-17T16:59:48.320788Z", + "iopub.status.idle": "2023-08-17T16:59:48.328672Z", + "shell.execute_reply": "2023-08-17T16:59:48.328422Z" + }, + "jukit_cell_id": "XmQTfarxJe" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['model_data/label_encoder_log_reg_cp_fs_data_plate_4.joblib']" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_suf = \"log_reg_cp_fs_data_plate_4\"\n", + "\n", + "# Save the models\n", + "dump(random_search.best_estimator_, f\"{models_path}/{data_suf}.joblib\")\n", + "dump(shuf_random_search.best_estimator_, f\"{models_path}/log_reg_shuf_cp_fs_data_plate_4.joblib\")\n", + "\n", + "# Save label encoder\n", + "dump(le, f\"{data_path}/label_encoder_{data_suf}.joblib\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jukit_cell_id": "XKO1PYhtSW" + }, + "source": [ + "## Save data indices" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "execution": { + "iopub.execute_input": "2023-08-17T16:59:48.358203Z", + "iopub.status.busy": "2023-08-17T16:59:48.358037Z", + "iopub.status.idle": "2023-08-17T16:59:48.368806Z", + "shell.execute_reply": "2023-08-17T16:59:48.368428Z" + }, + "jukit_cell_id": "KRaXZbEIzO" + }, + "outputs": [], + "source": [ + "# Assign indices and name each of the splits\n", + "X_train_shuf_idxdf = pd.DataFrame({\"Metadata_split_name\": \"X_train_shuf\"}, index=X_train_shuf.index)\n", + "X_train_idxdf = pd.DataFrame({\"Metadata_split_name\": \"X_train\"}, index=X_train.index)\n", + "y_train_idxdf = pd.DataFrame({\"Metadata_split_name\": \"y_train\"}, index=y_train.index)\n", + "y_test_idxdf = pd.DataFrame({\"Metadata_split_name\": \"y_test\"}, index=y_test.index)\n", + "X_test_idxdf = pd.DataFrame({\"Metadata_split_name\": \"X_test\"}, index=X_test.index)\n", + "\n", + "# Concatenate the splits\n", + "data_split_indices = pd.concat([X_train_shuf_idxdf, X_train_idxdf, y_train_idxdf, y_test_idxdf, X_test_idxdf])\n", + "\n", + "# Save the splits to a tsv file\n", + "data_split_indices.to_csv(f\"{data_path}/data_split_indices_{data_suf}.tsv\", sep=\"\\t\")" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.17" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 4a7274bfbc30e5f3b87ff3af17a1181908716221 Mon Sep 17 00:00:00 2001 From: Cameron Mattson Date: Fri, 1 Sep 2023 07:30:12 -0600 Subject: [PATCH 2/3] Added the trained models and the data splits --- ...lit_indices_log_reg_cp_fs_data_plate_4.tsv | 4688 +++++++++++++++++ ..._encoder_log_reg_cp_fs_data_plate_4.joblib | Bin 0 -> 532 bytes .../log_reg_cp_fs_data_plate_4.joblib | Bin 0 -> 70879 bytes .../log_reg_shuf_cp_fs_data_plate_4.joblib | Bin 0 -> 70879 bytes 4 files changed, 4688 insertions(+) create mode 100644 1.train_models/log_reg_plates_cp_fs_data/plate_4/model_data/data_split_indices_log_reg_cp_fs_data_plate_4.tsv create mode 100644 1.train_models/log_reg_plates_cp_fs_data/plate_4/model_data/label_encoder_log_reg_cp_fs_data_plate_4.joblib create mode 100644 1.train_models/log_reg_plates_cp_fs_data/plate_4/trained_models/log_reg_cp_fs_data_plate_4.joblib create mode 100644 1.train_models/log_reg_plates_cp_fs_data/plate_4/trained_models/log_reg_shuf_cp_fs_data_plate_4.joblib diff --git a/1.train_models/log_reg_plates_cp_fs_data/plate_4/model_data/data_split_indices_log_reg_cp_fs_data_plate_4.tsv b/1.train_models/log_reg_plates_cp_fs_data/plate_4/model_data/data_split_indices_log_reg_cp_fs_data_plate_4.tsv new file mode 100644 index 0000000..d36837c --- /dev/null +++ b/1.train_models/log_reg_plates_cp_fs_data/plate_4/model_data/data_split_indices_log_reg_cp_fs_data_plate_4.tsv @@ -0,0 +1,4688 @@ + Metadata_split_name +1591 X_train_shuf +2117 X_train_shuf +1791 X_train_shuf +1220 X_train_shuf +6079 X_train_shuf +1526 X_train_shuf +2946 X_train_shuf +413 X_train_shuf +7477 X_train_shuf +2577 X_train_shuf +1180 X_train_shuf +2914 X_train_shuf +7423 X_train_shuf +7403 X_train_shuf +1852 X_train_shuf +2213 X_train_shuf +49 X_train_shuf +3279 X_train_shuf +2173 X_train_shuf +6066 X_train_shuf +768 X_train_shuf +79 X_train_shuf +3199 X_train_shuf +2141 X_train_shuf +2917 X_train_shuf +2981 X_train_shuf +3292 X_train_shuf +1251 X_train_shuf +394 X_train_shuf +2234 X_train_shuf +4533 X_train_shuf +5985 X_train_shuf +3304 X_train_shuf +3225 X_train_shuf +2091 X_train_shuf +3297 X_train_shuf +1205 X_train_shuf +2965 X_train_shuf +355 X_train_shuf +93 X_train_shuf +2609 X_train_shuf +404 X_train_shuf +4570 X_train_shuf +2551 X_train_shuf +1169 X_train_shuf +7420 X_train_shuf +2076 X_train_shuf +375 X_train_shuf +7428 X_train_shuf +1509 X_train_shuf +3321 X_train_shuf +440 X_train_shuf +1564 X_train_shuf +1226 X_train_shuf +1861 X_train_shuf +3280 X_train_shuf +2944 X_train_shuf +2130 X_train_shuf +6039 X_train_shuf +1130 X_train_shuf +2614 X_train_shuf +3315 X_train_shuf +1837 X_train_shuf +2918 X_train_shuf +438 X_train_shuf +20 X_train_shuf +2165 X_train_shuf +1586 X_train_shuf +6034 X_train_shuf +456 X_train_shuf +1855 X_train_shuf +396 X_train_shuf +4600 X_train_shuf +3223 X_train_shuf +354 X_train_shuf +3211 X_train_shuf +2915 X_train_shuf +108 X_train_shuf +2973 X_train_shuf +831 X_train_shuf +408 X_train_shuf +7446 X_train_shuf +2553 X_train_shuf +1545 X_train_shuf +4605 X_train_shuf +7479 X_train_shuf +3306 X_train_shuf +4599 X_train_shuf +1215 X_train_shuf +1496 X_train_shuf +2233 X_train_shuf +426 X_train_shuf +1067 X_train_shuf +465 X_train_shuf +1272 X_train_shuf +1871 X_train_shuf +1174 X_train_shuf +6041 X_train_shuf +771 X_train_shuf +7492 X_train_shuf +4643 X_train_shuf +1099 X_train_shuf +1115 X_train_shuf +4566 X_train_shuf +2226 X_train_shuf +3219 X_train_shuf +7471 X_train_shuf +9 X_train_shuf +1061 X_train_shuf +69 X_train_shuf +2241 X_train_shuf +2933 X_train_shuf +2115 X_train_shuf +1155 X_train_shuf +2223 X_train_shuf +3201 X_train_shuf +2542 X_train_shuf +2209 X_train_shuf +6078 X_train_shuf +4649 X_train_shuf +445 X_train_shuf +1570 X_train_shuf +1582 X_train_shuf +7394 X_train_shuf +1803 X_train_shuf +4608 X_train_shuf +59 X_train_shuf +3282 X_train_shuf +6003 X_train_shuf +1164 X_train_shuf +4526 X_train_shuf +1549 X_train_shuf +1279 X_train_shuf +4522 X_train_shuf +7430 X_train_shuf +2218 X_train_shuf +2911 X_train_shuf +1581 X_train_shuf +1495 X_train_shuf +1494 X_train_shuf +1116 X_train_shuf +434 X_train_shuf +1269 X_train_shuf +7473 X_train_shuf +783 X_train_shuf +1537 X_train_shuf +7496 X_train_shuf +5988 X_train_shuf +1136 X_train_shuf +1066 X_train_shuf +70 X_train_shuf +2902 X_train_shuf +403 X_train_shuf +2583 X_train_shuf +2216 X_train_shuf +45 X_train_shuf +2201 X_train_shuf +1890 X_train_shuf +2238 X_train_shuf +360 X_train_shuf +96 X_train_shuf +727 X_train_shuf +1571 X_train_shuf +3311 X_train_shuf +2174 X_train_shuf +3302 X_train_shuf +2903 X_train_shuf +2203 X_train_shuf +3194 X_train_shuf +778 X_train_shuf +7392 X_train_shuf +751 X_train_shuf +3222 X_train_shuf +6084 X_train_shuf +2200 X_train_shuf +2143 X_train_shuf +4597 X_train_shuf +2086 X_train_shuf +1555 X_train_shuf +2974 X_train_shuf +6075 X_train_shuf +7464 X_train_shuf +1183 X_train_shuf +467 X_train_shuf +780 X_train_shuf +6098 X_train_shuf +1513 X_train_shuf +1249 X_train_shuf +2983 X_train_shuf +2967 X_train_shuf +4639 X_train_shuf +471 X_train_shuf +2558 X_train_shuf +1597 X_train_shuf +826 X_train_shuf +3227 X_train_shuf +3296 X_train_shuf +2966 X_train_shuf +97 X_train_shuf +2190 X_train_shuf +2217 X_train_shuf +4585 X_train_shuf +1145 X_train_shuf +4603 X_train_shuf +1096 X_train_shuf +1889 X_train_shuf +1497 X_train_shuf +2924 X_train_shuf +1888 X_train_shuf +744 X_train_shuf +111 X_train_shuf +716 X_train_shuf +1502 X_train_shuf +3277 X_train_shuf +1148 X_train_shuf +1247 X_train_shuf +1577 X_train_shuf +2923 X_train_shuf +3251 X_train_shuf +14 X_train_shuf +1224 X_train_shuf +754 X_train_shuf +2189 X_train_shuf +769 X_train_shuf +2150 X_train_shuf +3291 X_train_shuf +3259 X_train_shuf +1554 X_train_shuf +4546 X_train_shuf +2144 X_train_shuf +782 X_train_shuf +2155 X_train_shuf +2089 X_train_shuf +7497 X_train_shuf +2166 X_train_shuf +3186 X_train_shuf +1843 X_train_shuf +6013 X_train_shuf +450 X_train_shuf +362 X_train_shuf +730 X_train_shuf +429 X_train_shuf +1266 X_train_shuf +7466 X_train_shuf +2590 X_train_shuf +1869 X_train_shuf +1821 X_train_shuf +1214 X_train_shuf +6018 X_train_shuf +370 X_train_shuf +2116 X_train_shuf +2579 X_train_shuf +455 X_train_shuf +3293 X_train_shuf +40 X_train_shuf +457 X_train_shuf +1804 X_train_shuf +4563 X_train_shuf +2913 X_train_shuf +6067 X_train_shuf +2537 X_train_shuf +1277 X_train_shuf +1242 X_train_shuf +4523 X_train_shuf +2235 X_train_shuf +3288 X_train_shuf +7391 X_train_shuf +1209 X_train_shuf +2206 X_train_shuf +1102 X_train_shuf +7494 X_train_shuf +814 X_train_shuf +3256 X_train_shuf +1278 X_train_shuf +1206 X_train_shuf +6049 X_train_shuf +6063 X_train_shuf +7443 X_train_shuf +6044 X_train_shuf +2100 X_train_shuf +1260 X_train_shuf +357 X_train_shuf +364 X_train_shuf +100 X_train_shuf +2565 X_train_shuf +4532 X_train_shuf +81 X_train_shuf +3192 X_train_shuf +7389 X_train_shuf +1540 X_train_shuf +4564 X_train_shuf +2123 X_train_shuf +1584 X_train_shuf +4582 X_train_shuf +1508 X_train_shuf +2889 X_train_shuf +3318 X_train_shuf +2941 X_train_shuf +2940 X_train_shuf +3197 X_train_shuf +24 X_train_shuf +6024 X_train_shuf +763 X_train_shuf +2585 X_train_shuf +25 X_train_shuf +1072 X_train_shuf +1565 X_train_shuf +3240 X_train_shuf +793 X_train_shuf +1165 X_train_shuf +397 X_train_shuf +1529 X_train_shuf +2597 X_train_shuf +1233 X_train_shuf +4641 X_train_shuf +2530 X_train_shuf +2615 X_train_shuf +7426 X_train_shuf +1552 X_train_shuf +1086 X_train_shuf +65 X_train_shuf +75 X_train_shuf +4580 X_train_shuf +3209 X_train_shuf +7490 X_train_shuf +1811 X_train_shuf +2534 X_train_shuf +3258 X_train_shuf +1084 X_train_shuf +2594 X_train_shuf +4586 X_train_shuf +1856 X_train_shuf +18 X_train_shuf +1500 X_train_shuf +1857 X_train_shuf +4602 X_train_shuf +2112 X_train_shuf +2177 X_train_shuf +2605 X_train_shuf +1575 X_train_shuf +6052 X_train_shuf +1507 X_train_shuf +2984 X_train_shuf +4593 X_train_shuf +382 X_train_shuf +2222 X_train_shuf +353 X_train_shuf +7404 X_train_shuf +427 X_train_shuf +2148 X_train_shuf +7498 X_train_shuf +4581 X_train_shuf +2240 X_train_shuf +1884 X_train_shuf +1106 X_train_shuf +4601 X_train_shuf +2197 X_train_shuf +4534 X_train_shuf +2567 X_train_shuf +7388 X_train_shuf +717 X_train_shuf +5984 X_train_shuf +804 X_train_shuf +5992 X_train_shuf +446 X_train_shuf +3205 X_train_shuf +1602 X_train_shuf +777 X_train_shuf +6088 X_train_shuf +2170 X_train_shuf +1530 X_train_shuf +2242 X_train_shuf +2942 X_train_shuf +4631 X_train_shuf +3284 X_train_shuf +3230 X_train_shuf +1227 X_train_shuf +359 X_train_shuf +4541 X_train_shuf +414 X_train_shuf +4632 X_train_shuf +3266 X_train_shuf +1808 X_train_shuf +759 X_train_shuf +7 X_train_shuf +2593 X_train_shuf +2232 X_train_shuf +770 X_train_shuf +3303 X_train_shuf +1139 X_train_shuf +6056 X_train_shuf +2236 X_train_shuf +6028 X_train_shuf +1280 X_train_shuf +789 X_train_shuf +63 X_train_shuf +1868 X_train_shuf +1504 X_train_shuf +34 X_train_shuf +358 X_train_shuf +73 X_train_shuf +5 X_train_shuf +1542 X_train_shuf +4615 X_train_shuf +50 X_train_shuf +417 X_train_shuf +1189 X_train_shuf +3246 X_train_shuf +5999 X_train_shuf +1190 X_train_shuf +794 X_train_shuf +2134 X_train_shuf +787 X_train_shuf +2096 X_train_shuf +3224 X_train_shuf +779 X_train_shuf +4556 X_train_shuf +723 X_train_shuf +92 X_train_shuf +2133 X_train_shuf +761 X_train_shuf +1824 X_train_shuf +1207 X_train_shuf +1054 X_train_shuf +1574 X_train_shuf +1144 X_train_shuf +1514 X_train_shuf +1534 X_train_shuf +461 X_train_shuf +7448 X_train_shuf +76 X_train_shuf +745 X_train_shuf +1196 X_train_shuf +464 X_train_shuf +795 X_train_shuf +1847 X_train_shuf +113 X_train_shuf +1881 X_train_shuf +3238 X_train_shuf +2180 X_train_shuf +2109 X_train_shuf +3200 X_train_shuf +7467 X_train_shuf +2570 X_train_shuf +1580 X_train_shuf +54 X_train_shuf +2533 X_train_shuf +2215 X_train_shuf +4644 X_train_shuf +2147 X_train_shuf +2932 X_train_shuf +1070 X_train_shuf +2191 X_train_shuf +3283 X_train_shuf +4662 X_train_shuf +753 X_train_shuf +2135 X_train_shuf +2550 X_train_shuf +1876 X_train_shuf +2943 X_train_shuf +1118 X_train_shuf +720 X_train_shuf +4650 X_train_shuf +2186 X_train_shuf +6083 X_train_shuf +1873 X_train_shuf +1261 X_train_shuf +1056 X_train_shuf +2220 X_train_shuf +454 X_train_shuf +55 X_train_shuf +1877 X_train_shuf +1596 X_train_shuf +1600 X_train_shuf +3314 X_train_shuf +2884 X_train_shuf +37 X_train_shuf +2118 X_train_shuf +2958 X_train_shuf +1566 X_train_shuf +1051 X_train_shuf +1263 X_train_shuf +2183 X_train_shuf +2113 X_train_shuf +3320 X_train_shuf +2928 X_train_shuf +3249 X_train_shuf +1870 X_train_shuf +764 X_train_shuf +1048 X_train_shuf +6076 X_train_shuf +749 X_train_shuf +3264 X_train_shuf +4550 X_train_shuf +72 X_train_shuf +7453 X_train_shuf +1091 X_train_shuf +1081 X_train_shuf +1267 X_train_shuf +819 X_train_shuf +773 X_train_shuf +3241 X_train_shuf +399 X_train_shuf +2564 X_train_shuf +1860 X_train_shuf +7416 X_train_shuf +8 X_train_shuf +3308 X_train_shuf +3232 X_train_shuf +1236 X_train_shuf +2184 X_train_shuf +2532 X_train_shuf +6009 X_train_shuf +374 X_train_shuf +1516 X_train_shuf +6055 X_train_shuf +1838 X_train_shuf +1831 X_train_shuf +4524 X_train_shuf +6033 X_train_shuf +7412 X_train_shuf +2131 X_train_shuf +3203 X_train_shuf +6020 X_train_shuf +829 X_train_shuf +719 X_train_shuf +2205 X_train_shuf +3286 X_train_shuf +7465 X_train_shuf +2080 X_train_shuf +2181 X_train_shuf +1134 X_train_shuf +2895 X_train_shuf +7440 X_train_shuf +2977 X_train_shuf +3226 X_train_shuf +4538 X_train_shuf +1171 X_train_shuf +6 X_train_shuf +1256 X_train_shuf +2538 X_train_shuf +4557 X_train_shuf +428 X_train_shuf +7495 X_train_shuf +2589 X_train_shuf +1104 X_train_shuf +2954 X_train_shuf +415 X_train_shuf +4651 X_train_shuf +1512 X_train_shuf +32 X_train_shuf +56 X_train_shuf +746 X_train_shuf +4575 X_train_shuf +1192 X_train_shuf +2900 X_train_shuf +2888 X_train_shuf +785 X_train_shuf +737 X_train_shuf +2580 X_train_shuf +2602 X_train_shuf +6031 X_train_shuf +6085 X_train_shuf +3281 X_train_shuf +412 X_train_shuf +4565 X_train_shuf +2950 X_train_shuf +4661 X_train_shuf +1195 X_train_shuf +2087 X_train_shuf +42 X_train_shuf +2122 X_train_shuf +87 X_train_shuf +1187 X_train_shuf +1222 X_train_shuf +2157 X_train_shuf +3254 X_train_shuf +1878 X_train_shuf +2243 X_train_shuf +2885 X_train_shuf +2905 X_train_shuf +1863 X_train_shuf +102 X_train_shuf +6071 X_train_shuf +1221 X_train_shuf +30 X_train_shuf +1120 X_train_shuf +6030 X_train_shuf +4531 X_train_shuf +1101 X_train_shuf +1886 X_train_shuf +1556 X_train_shuf +1839 X_train_shuf +3252 X_train_shuf +2094 X_train_shuf +392 X_train_shuf +1585 X_train_shuf +1576 X_train_shuf +7408 X_train_shuf +6064 X_train_shuf +453 X_train_shuf +101 X_train_shuf +4548 X_train_shuf +2921 X_train_shuf +459 X_train_shuf +7469 X_train_shuf +4621 X_train_shuf +4594 X_train_shuf +765 X_train_shuf +5994 X_train_shuf +387 X_train_shuf +373 X_train_shuf +4587 X_train_shuf +2948 X_train_shuf +796 X_train_shuf +1097 X_train_shuf +820 X_train_shuf +110 X_train_shuf +729 X_train_shuf +4543 X_train_shuf +2557 X_train_shuf +0 X_train_shuf +6032 X_train_shuf +3210 X_train_shuf +1880 X_train_shuf +2 X_train_shuf +721 X_train_shuf +2077 X_train_shuf +51 X_train_shuf +4654 X_train_shuf +78 X_train_shuf +7480 X_train_shuf +1123 X_train_shuf +715 X_train_shuf +2576 X_train_shuf +7432 X_train_shuf +379 X_train_shuf +1854 X_train_shuf +1825 X_train_shuf +2083 X_train_shuf +3272 X_train_shuf +1503 X_train_shuf +2156 X_train_shuf +7454 X_train_shuf +2081 X_train_shuf +1090 X_train_shuf +4653 X_train_shuf +828 X_train_shuf +4607 X_train_shuf +1832 X_train_shuf +1593 X_train_shuf +47 X_train_shuf +1149 X_train_shuf +473 X_train_shuf +1203 X_train_shuf +1188 X_train_shuf +4642 X_train_shuf +3244 X_train_shuf +6045 X_train_shuf +1270 X_train_shuf +470 X_train_shuf +728 X_train_shuf +2596 X_train_shuf +1528 X_train_shuf +1064 X_train_shuf +6014 X_train_shuf +3295 X_train_shuf +106 X_train_shuf +4555 X_train_shuf +2207 X_train_shuf +3313 X_train_shuf +1194 X_train_shuf +3307 X_train_shuf +4604 X_train_shuf +1095 X_train_shuf +1157 X_train_shuf +1225 X_train_shuf +7397 X_train_shuf +4576 X_train_shuf +1181 X_train_shuf +1797 X_train_shuf +35 X_train_shuf +786 X_train_shuf +1281 X_train_shuf +811 X_train_shuf +4539 X_train_shuf +1059 X_train_shuf +7488 X_train_shuf +2938 X_train_shuf +4540 X_train_shuf +4620 X_train_shuf +1243 X_train_shuf +1103 X_train_shuf +77 X_train_shuf +4559 X_train_shuf +1176 X_train_shuf +803 X_train_shuf +1235 X_train_shuf +1511 X_train_shuf +2934 X_train_shuf +7447 X_train_shuf +1499 X_train_shuf +6000 X_train_shuf +6047 X_train_shuf +422 X_train_shuf +82 X_train_shuf +2910 X_train_shuf +5993 X_train_shuf +2188 X_train_shuf +4657 X_train_shuf +367 X_train_shuf +2185 X_train_shuf +4551 X_train_shuf +2214 X_train_shuf +1078 X_train_shuf +2985 X_train_shuf +2239 X_train_shuf +1058 X_train_shuf +85 X_train_shuf +2543 X_train_shuf +2896 X_train_shuf +6004 X_train_shuf +2192 X_train_shuf +406 X_train_shuf +2129 X_train_shuf +2149 X_train_shuf +1589 X_train_shuf +400 X_train_shuf +2931 X_train_shuf +1114 X_train_shuf +781 X_train_shuf +2569 X_train_shuf +1212 X_train_shuf +6057 X_train_shuf +2890 X_train_shuf +3193 X_train_shuf +4647 X_train_shuf +1807 X_train_shuf +4592 X_train_shuf +1801 X_train_shuf +3228 X_train_shuf +775 X_train_shuf +2164 X_train_shuf +1816 X_train_shuf +2541 X_train_shuf +2600 X_train_shuf +7396 X_train_shuf +419 X_train_shuf +68 X_train_shuf +2608 X_train_shuf +7500 X_train_shuf +1879 X_train_shuf +755 X_train_shuf +1168 X_train_shuf +3269 X_train_shuf +7499 X_train_shuf +6017 X_train_shuf +1795 X_train_shuf +2916 X_train_shuf +6012 X_train_shuf +6016 X_train_shuf +1232 X_train_shuf +368 X_train_shuf +5997 X_train_shuf +2936 X_train_shuf +2160 X_train_shuf +2892 X_train_shuf +758 X_train_shuf +1538 X_train_shuf +7460 X_train_shuf +2607 X_train_shuf +11 X_train_shuf +4598 X_train_shuf +88 X_train_shuf +2616 X_train_shuf +23 X_train_shuf +1578 X_train_shuf +418 X_train_shuf +1844 X_train_shuf +1173 X_train_shuf +743 X_train_shuf +1809 X_train_shuf +2572 X_train_shuf +2960 X_train_shuf +38 X_train_shuf +1517 X_train_shuf +4588 X_train_shuf +4622 X_train_shuf +1557 X_train_shuf +3322 X_train_shuf +6026 X_train_shuf +1119 X_train_shuf +6010 X_train_shuf +2224 X_train_shuf +2176 X_train_shuf +53 X_train_shuf +1100 X_train_shuf +351 X_train_shuf +740 X_train_shuf +1865 X_train_shuf +36 X_train_shuf +1828 X_train_shuf +4629 X_train_shuf +3274 X_train_shuf +6095 X_train_shuf +825 X_train_shuf +6040 X_train_shuf +1806 X_train_shuf +1135 X_train_shuf +90 X_train_shuf +1071 X_train_shuf +6015 X_train_shuf +6082 X_train_shuf +389 X_train_shuf +365 X_train_shuf +2961 X_train_shuf +3188 X_train_shuf +1282 X_train_shuf +1204 X_train_shuf +3271 X_train_shuf +378 X_train_shuf +7436 X_train_shuf +3267 X_train_shuf +6048 X_train_shuf +6001 X_train_shuf +1887 X_train_shuf +1601 X_train_shuf +3218 X_train_shuf +1083 X_train_shuf +1245 X_train_shuf +7445 X_train_shuf +3260 X_train_shuf +7470 X_train_shuf +6069 X_train_shuf +1073 X_train_shuf +4549 X_train_shuf +2230 X_train_shuf +4609 X_train_shuf +10 X_train_shuf +1077 X_train_shuf +1848 X_train_shuf +4630 X_train_shuf +2969 X_train_shuf +2079 X_train_shuf +4645 X_train_shuf +443 X_train_shuf +2099 X_train_shuf +1 X_train_shuf +4561 X_train_shuf +4 X_train_shuf +91 X_train_shuf +2145 X_train_shuf +4562 X_train_shuf +2546 X_train_shuf +748 X_train_shuf +2092 X_train_shuf +7401 X_train_shuf +6043 X_train_shuf +2228 X_train_shuf +1853 X_train_shuf +2891 X_train_shuf +1141 X_train_shuf +4590 X_train_shuf +386 X_train_shuf +7481 X_train_shuf +2599 X_train_shuf +6019 X_train_shuf +2104 X_train_shuf +762 X_train_shuf +1274 X_train_shuf +421 X_train_shuf +1213 X_train_shuf +1544 X_train_shuf +832 X_train_shuf +3301 X_train_shuf +436 X_train_shuf +3278 X_train_shuf +1894 X_train_shuf +1063 X_train_shuf +3285 X_train_shuf +6093 X_train_shuf +2582 X_train_shuf +3191 X_train_shuf +2573 X_train_shuf +1833 X_train_shuf +46 X_train_shuf +6096 X_train_shuf +2971 X_train_shuf +2982 X_train_shuf +2926 X_train_shuf +383 X_train_shuf +7421 X_train_shuf +2975 X_train_shuf +2120 X_train_shuf +774 X_train_shuf +6029 X_train_shuf +1175 X_train_shuf +747 X_train_shuf +6070 X_train_shuf +3265 X_train_shuf +83 X_train_shuf +757 X_train_shuf +3255 X_train_shuf +798 X_train_shuf +1049 X_train_shuf +1108 X_train_shuf +3221 X_train_shuf +2531 X_train_shuf +809 X_train_shuf +7452 X_train_shuf +6053 X_train_shuf +2161 X_train_shuf +433 X_train_shuf +7429 X_train_shuf +17 X_train_shuf +2210 X_train_shuf +1229 X_train_shuf +4625 X_train_shuf +1872 X_train_shuf +2612 X_train_shuf +1820 X_train_shuf +366 X_train_shuf +4554 X_train_shuf +1275 X_train_shuf +1125 X_train_shuf +1819 X_train_shuf +2601 X_train_shuf +3247 X_train_shuf +1590 X_train_shuf +3317 X_train_shuf +1850 X_train_shuf +1525 X_train_shuf +2090 X_train_shuf +750 X_train_shuf +6086 X_train_shuf +2111 X_train_shuf +2907 X_train_shuf +1053 X_train_shuf +452 X_train_shuf +356 X_train_shuf +6062 X_train_shuf +805 X_train_shuf +1112 X_train_shuf +4527 X_train_shuf +28 X_train_shuf +6042 X_train_shuf +2535 X_train_shuf +3206 X_train_shuf +3298 X_train_shuf +2906 X_train_shuf +444 X_train_shuf +4595 X_train_shuf +391 X_train_shuf +7450 X_train_shuf +6074 X_train_shuf +7414 X_train_shuf +4652 X_train_shuf +1862 X_train_shuf +1799 X_train_shuf +2549 X_train_shuf +2212 X_train_shuf +2925 X_train_shuf +2110 X_train_shuf +2221 X_train_shuf +469 X_train_shuf +3190 X_train_shuf +6046 X_train_shuf +792 X_train_shuf +1240 X_train_shuf +1533 X_train_shuf +1548 X_train_shuf +1122 X_train_shuf +1062 X_train_shuf +2955 X_train_shuf +7449 X_train_shuf +2951 X_train_shuf +1599 X_train_shuf +2584 X_train_shuf +1138 X_train_shuf +466 X_train_shuf +821 X_train_shuf +6058 X_train_shuf +2978 X_train_shuf +1265 X_train_shuf +7422 X_train_shuf +3276 X_train_shuf +2132 X_train_shuf +7405 X_train_shuf +718 X_train_shuf +752 X_train_shuf +4636 X_train_shuf +2935 X_train_shuf +4529 X_train_shuf +448 X_train_shuf +58 X_train_shuf +5991 X_train_shuf +2121 X_train_shuf +4567 X_train_shuf +2883 X_train_shuf +1201 X_train_shuf +4521 X_train_shuf +3300 X_train_shuf +104 X_train_shuf +1140 X_train_shuf +2237 X_train_shuf +3236 X_train_shuf +742 X_train_shuf +405 X_train_shuf +2158 X_train_shuf +99 X_train_shuf +1075 X_train_shuf +815 X_train_shuf +3215 X_train_shuf +1563 X_train_shuf +6090 X_train_shuf +2171 X_train_shuf +2140 X_train_shuf +5990 X_train_shuf +1891 X_train_shuf +6027 X_train_shuf +441 X_train_shuf +3257 X_train_shuf +6101 X_train_shuf +2919 X_train_shuf +2162 X_train_shuf +7398 X_train_shuf +7390 X_train_shuf +1253 X_train_shuf +1262 X_train_shuf +741 X_train_shuf +1184 X_train_shuf +3294 X_train_shuf +2922 X_train_shuf +1841 X_train_shuf +2119 X_train_shuf +799 X_train_shuf +2908 X_train_shuf +1246 X_train_shuf +1132 X_train_shuf +4655 X_train_shuf +463 X_train_shuf +2930 X_train_shuf +1237 X_train_shuf +2179 X_train_shuf +2182 X_train_shuf +2929 X_train_shuf +1068 X_train_shuf +833 X_train_shuf +4663 X_train_shuf +31 X_train_shuf +2107 X_train_shuf +6008 X_train_shuf +2976 X_train_shuf +7501 X_train_shuf +6068 X_train_shuf +7413 X_train_shuf +2231 X_train_shuf +384 X_train_shuf +80 X_train_shuf +1093 X_train_shuf +2587 X_train_shuf +2610 X_train_shuf +1827 X_train_shuf +1257 X_train_shuf +1276 X_train_shuf +4584 X_train_shuf +7485 X_train_shuf +1092 X_train_shuf +1163 X_train_shuf +2957 X_train_shuf +4659 X_train_shuf +802 X_train_shuf +2545 X_train_shuf +2106 X_train_shuf +4573 X_train_shuf +4617 X_train_shuf +2595 X_train_shuf +1170 X_train_shuf +1079 X_train_shuf +1248 X_train_shuf +2598 X_train_shuf +756 X_train_shuf +7474 X_train_shuf +1546 X_train_shuf +2592 X_train_shuf +1105 X_train_shuf +1050 X_train_shuf +2920 X_train_shuf +95 X_train_shuf +1283 X_train_shuf +1573 X_train_shuf +60 X_train_shuf +48 X_train_shuf +2963 X_train_shuf +4658 X_train_shuf +3195 X_train_shuf +1851 X_train_shuf +84 X_train_shuf +2588 X_train_shuf +4619 X_train_shuf +381 X_train_shuf +1521 X_train_shuf +458 X_train_shuf +402 X_train_shuf +1842 X_train_shuf +1592 X_train_shuf +766 X_train_shuf +2125 X_train_shuf +4606 X_train_shuf +385 X_train_shuf +1815 X_train_shuf +4634 X_train_shuf +1813 X_train_shuf +460 X_train_shuf +7478 X_train_shuf +4618 X_train_shuf +1178 X_train_shuf +1588 X_train_shuf +3268 X_train_shuf +6061 X_train_shuf +1200 X_train_shuf +739 X_train_shuf +3214 X_train_shuf +736 X_train_shuf +6025 X_train_shuf +2953 X_train_shuf +1510 X_train_shuf +2142 X_train_shuf +2962 X_train_shuf +6077 X_train_shuf +1156 X_train_shuf +3196 X_train_shuf +7439 X_train_shuf +1560 X_train_shuf +827 X_train_shuf +712 X_train_shuf +425 X_train_shuf +1211 X_train_shuf +3316 X_train_shuf +2199 X_train_shuf +830 X_train_shuf +1126 X_train_shuf +2591 X_train_shuf +2886 X_train_shuf +6011 X_train_shuf +4610 X_train_shuf +6035 X_train_shuf +2168 X_train_shuf +2563 X_train_shuf +1133 X_train_shuf +3243 X_train_shuf +6100 X_train_shuf +1796 X_train_shuf +1532 X_train_shuf +2178 X_train_shuf +3275 X_train_shuf +1094 X_train_shuf +1089 X_train_shuf +2124 X_train_shuf +2105 X_train_shuf +1523 X_train_shuf +2187 X_train_shuf +1883 X_train_shuf +4583 X_train_shuf +1074 X_train_shuf +1845 X_train_shuf +1812 X_train_shuf +1128 X_train_shuf +2227 X_train_shuf +732 X_train_shuf +7402 X_train_shuf +1567 X_train_shuf +2947 X_train_shuf +2968 X_train_shuf +2108 X_train_shuf +57 X_train_shuf +4536 X_train_shuf +6007 X_train_shuf +2893 X_train_shuf +4558 X_train_shuf +4616 X_train_shuf +1805 X_train_shuf +1543 X_train_shuf +725 X_train_shuf +2138 X_train_shuf +1166 X_train_shuf +1088 X_train_shuf +26 X_train_shuf +4640 X_train_shuf +5989 X_train_shuf +1823 X_train_shuf +1866 X_train_shuf +2979 X_train_shuf +424 X_train_shuf +2225 X_train_shuf +7461 X_train_shuf +7431 X_train_shuf +2552 X_train_shuf +1518 X_train_shuf +6065 X_train_shuf +4560 X_train_shuf +3229 X_train_shuf +1153 X_train_shuf +1498 X_train_shuf +2959 X_train_shuf +2562 X_train_shuf +2101 X_train_shuf +1536 X_train_shuf +41 X_train_shuf +767 X_train_shuf +2085 X_train_shuf +1864 X_train_shuf +4574 X_train_shuf +2204 X_train_shuf +2103 X_train_shuf +726 X_train_shuf +363 X_train_shuf +4547 X_train_shuf +1234 X_train_shuf +1052 X_train_shuf +1558 X_train_shuf +4596 X_train_shuf +2559 X_train_shuf +807 X_train_shuf +7434 X_train_shuf +3253 X_train_shuf +1836 X_train_shuf +1583 X_train_shuf +4542 X_train_shuf +2088 X_train_shuf +371 X_train_shuf +1182 X_train_shuf +468 X_train_shuf +738 X_train_shuf +1228 X_train_shuf +776 X_train_shuf +1598 X_train_shuf +1834 X_train_shuf +1885 X_train_shuf +2894 X_train_shuf +1800 X_train_shuf +1792 X_train_shuf +16 X_train_shuf +1152 X_train_shuf +800 X_train_shuf +4646 X_train_shuf +15 X_train_shuf +1259 X_train_shuf +3289 X_train_shuf +472 X_train_shuf +1160 X_train_shuf +2084 X_train_shuf +4519 X_train_shuf +3217 X_train_shuf +3 X_train_shuf +2202 X_train_shuf +462 X_train_shuf +430 X_train_shuf +2169 X_train_shuf +1197 X_train_shuf +1159 X_train_shuf +1255 X_train_shuf +1150 X_train_shuf +2937 X_train_shuf +5996 X_train_shuf +6036 X_train_shuf +432 X_train_shuf +7409 X_train_shuf +112 X_train_shuf +3187 X_train_shuf +2195 X_train_shuf +4589 X_train_shuf +4624 X_train_shuf +411 X_train_shuf +1802 X_train_shuf +2136 X_train_shuf +107 X_train_shuf +3305 X_train_shuf +4552 X_train_shuf +439 X_train_shuf +6080 X_train_shuf +7457 X_train_shuf +2574 X_train_shuf +722 X_train_shuf +1143 X_train_shuf +2539 X_train_shuf +2127 X_train_shuf +4591 X_train_shuf +1569 X_train_shuf +1501 X_train_shuf +1798 X_train_shuf +1553 X_train_shuf +2956 X_train_shuf +1859 X_train_shuf +2128 X_train_shuf +7400 X_train_shuf +2153 X_train_shuf +2219 X_train_shuf +1146 X_train_shuf +4660 X_train_shuf +4623 X_train_shuf +2581 X_train_shuf +7444 X_train_shuf +1142 X_train_shuf +2568 X_train_shuf +4613 X_train_shuf +2571 X_train_shuf +52 X_train_shuf +7451 X_train_shuf +2945 X_train_shuf +3235 X_train_shuf +1822 X_train_shuf +7441 X_train_shuf +788 X_train_shuf +2163 X_train_shuf +7437 X_train_shuf +1057 X_train_shuf +1519 X_train_shuf +3202 X_train_shuf +7459 X_train_shuf +449 X_train_shuf +7393 X_train_shuf +3309 X_train_shuf +1167 X_train_shuf +86 X_train_shuf +1506 X_train_shuf +6060 X_train_shuf +2154 X_train_shuf +1551 X_train_shuf +109 X_train_shuf +7482 X_train_shuf +410 X_train_shuf +5987 X_train_shuf +67 X_train_shuf +4568 X_train_shuf +1867 X_train_shuf +376 X_train_shuf +1076 X_train_shuf +1055 X_train_shuf +1591 X_train +2117 X_train +1791 X_train +1220 X_train +6079 X_train +1526 X_train +2946 X_train +413 X_train +7477 X_train +2577 X_train +1180 X_train +2914 X_train +7423 X_train +7403 X_train +1852 X_train +2213 X_train +49 X_train +3279 X_train +2173 X_train +6066 X_train +768 X_train +79 X_train +3199 X_train +2141 X_train +2917 X_train +2981 X_train +3292 X_train +1251 X_train +394 X_train +2234 X_train +4533 X_train +5985 X_train +3304 X_train +3225 X_train +2091 X_train +3297 X_train +1205 X_train +2965 X_train +355 X_train +93 X_train +2609 X_train +404 X_train +4570 X_train +2551 X_train +1169 X_train +7420 X_train +2076 X_train +375 X_train +7428 X_train +1509 X_train +3321 X_train +440 X_train +1564 X_train +1226 X_train +1861 X_train +3280 X_train +2944 X_train +2130 X_train +6039 X_train +1130 X_train +2614 X_train +3315 X_train +1837 X_train +2918 X_train +438 X_train +20 X_train +2165 X_train +1586 X_train +6034 X_train +456 X_train +1855 X_train +396 X_train +4600 X_train +3223 X_train +354 X_train +3211 X_train +2915 X_train +108 X_train +2973 X_train +831 X_train +408 X_train +7446 X_train +2553 X_train +1545 X_train +4605 X_train +7479 X_train +3306 X_train +4599 X_train +1215 X_train +1496 X_train +2233 X_train +426 X_train +1067 X_train +465 X_train +1272 X_train +1871 X_train +1174 X_train +6041 X_train +771 X_train +7492 X_train +4643 X_train +1099 X_train +1115 X_train +4566 X_train +2226 X_train +3219 X_train +7471 X_train +9 X_train +1061 X_train +69 X_train +2241 X_train +2933 X_train +2115 X_train +1155 X_train +2223 X_train +3201 X_train +2542 X_train +2209 X_train +6078 X_train +4649 X_train +445 X_train +1570 X_train +1582 X_train +7394 X_train +1803 X_train +4608 X_train +59 X_train +3282 X_train +6003 X_train +1164 X_train +4526 X_train +1549 X_train +1279 X_train +4522 X_train +7430 X_train +2218 X_train +2911 X_train +1581 X_train +1495 X_train +1494 X_train +1116 X_train +434 X_train +1269 X_train +7473 X_train +783 X_train +1537 X_train +7496 X_train +5988 X_train +1136 X_train +1066 X_train +70 X_train +2902 X_train +403 X_train +2583 X_train +2216 X_train +45 X_train +2201 X_train +1890 X_train +2238 X_train +360 X_train +96 X_train +727 X_train +1571 X_train +3311 X_train +2174 X_train +3302 X_train +2903 X_train +2203 X_train +3194 X_train +778 X_train +7392 X_train +751 X_train +3222 X_train +6084 X_train +2200 X_train +2143 X_train +4597 X_train +2086 X_train +1555 X_train +2974 X_train +6075 X_train +7464 X_train +1183 X_train +467 X_train +780 X_train +6098 X_train +1513 X_train +1249 X_train +2983 X_train +2967 X_train +4639 X_train +471 X_train +2558 X_train +1597 X_train +826 X_train +3227 X_train +3296 X_train +2966 X_train +97 X_train +2190 X_train +2217 X_train +4585 X_train +1145 X_train +4603 X_train +1096 X_train +1889 X_train +1497 X_train +2924 X_train +1888 X_train +744 X_train +111 X_train +716 X_train +1502 X_train +3277 X_train +1148 X_train +1247 X_train +1577 X_train +2923 X_train +3251 X_train +14 X_train +1224 X_train +754 X_train +2189 X_train +769 X_train +2150 X_train +3291 X_train +3259 X_train +1554 X_train +4546 X_train +2144 X_train +782 X_train +2155 X_train +2089 X_train +7497 X_train +2166 X_train +3186 X_train +1843 X_train +6013 X_train +450 X_train +362 X_train +730 X_train +429 X_train +1266 X_train +7466 X_train +2590 X_train +1869 X_train +1821 X_train +1214 X_train +6018 X_train +370 X_train +2116 X_train +2579 X_train +455 X_train +3293 X_train +40 X_train +457 X_train +1804 X_train +4563 X_train +2913 X_train +6067 X_train +2537 X_train +1277 X_train +1242 X_train +4523 X_train +2235 X_train +3288 X_train +7391 X_train +1209 X_train +2206 X_train +1102 X_train +7494 X_train +814 X_train +3256 X_train +1278 X_train +1206 X_train +6049 X_train +6063 X_train +7443 X_train +6044 X_train +2100 X_train +1260 X_train +357 X_train +364 X_train +100 X_train +2565 X_train +4532 X_train +81 X_train +3192 X_train +7389 X_train +1540 X_train +4564 X_train +2123 X_train +1584 X_train +4582 X_train +1508 X_train +2889 X_train +3318 X_train +2941 X_train +2940 X_train +3197 X_train +24 X_train +6024 X_train +763 X_train +2585 X_train +25 X_train +1072 X_train +1565 X_train +3240 X_train +793 X_train +1165 X_train +397 X_train +1529 X_train +2597 X_train +1233 X_train +4641 X_train +2530 X_train +2615 X_train +7426 X_train +1552 X_train +1086 X_train +65 X_train +75 X_train +4580 X_train +3209 X_train +7490 X_train +1811 X_train +2534 X_train +3258 X_train +1084 X_train +2594 X_train +4586 X_train +1856 X_train +18 X_train +1500 X_train +1857 X_train +4602 X_train +2112 X_train +2177 X_train +2605 X_train +1575 X_train +6052 X_train +1507 X_train +2984 X_train +4593 X_train +382 X_train +2222 X_train +353 X_train +7404 X_train +427 X_train +2148 X_train +7498 X_train +4581 X_train +2240 X_train +1884 X_train +1106 X_train +4601 X_train +2197 X_train +4534 X_train +2567 X_train +7388 X_train +717 X_train +5984 X_train +804 X_train +5992 X_train +446 X_train +3205 X_train +1602 X_train +777 X_train +6088 X_train +2170 X_train +1530 X_train +2242 X_train +2942 X_train +4631 X_train +3284 X_train +3230 X_train +1227 X_train +359 X_train +4541 X_train +414 X_train +4632 X_train +3266 X_train +1808 X_train +759 X_train +7 X_train +2593 X_train +2232 X_train +770 X_train +3303 X_train +1139 X_train +6056 X_train +2236 X_train +6028 X_train +1280 X_train +789 X_train +63 X_train +1868 X_train +1504 X_train +34 X_train +358 X_train +73 X_train +5 X_train +1542 X_train +4615 X_train +50 X_train +417 X_train +1189 X_train +3246 X_train +5999 X_train +1190 X_train +794 X_train +2134 X_train +787 X_train +2096 X_train +3224 X_train +779 X_train +4556 X_train +723 X_train +92 X_train +2133 X_train +761 X_train +1824 X_train +1207 X_train +1054 X_train +1574 X_train +1144 X_train +1514 X_train +1534 X_train +461 X_train +7448 X_train +76 X_train +745 X_train +1196 X_train +464 X_train +795 X_train +1847 X_train +113 X_train +1881 X_train +3238 X_train +2180 X_train +2109 X_train +3200 X_train +7467 X_train +2570 X_train +1580 X_train +54 X_train +2533 X_train +2215 X_train +4644 X_train +2147 X_train +2932 X_train +1070 X_train +2191 X_train +3283 X_train +4662 X_train +753 X_train +2135 X_train +2550 X_train +1876 X_train +2943 X_train +1118 X_train +720 X_train +4650 X_train +2186 X_train +6083 X_train +1873 X_train +1261 X_train +1056 X_train +2220 X_train +454 X_train +55 X_train +1877 X_train +1596 X_train +1600 X_train +3314 X_train +2884 X_train +37 X_train +2118 X_train +2958 X_train +1566 X_train +1051 X_train +1263 X_train +2183 X_train +2113 X_train +3320 X_train +2928 X_train +3249 X_train +1870 X_train +764 X_train +1048 X_train +6076 X_train +749 X_train +3264 X_train +4550 X_train +72 X_train +7453 X_train +1091 X_train +1081 X_train +1267 X_train +819 X_train +773 X_train +3241 X_train +399 X_train +2564 X_train +1860 X_train +7416 X_train +8 X_train +3308 X_train +3232 X_train +1236 X_train +2184 X_train +2532 X_train +6009 X_train +374 X_train +1516 X_train +6055 X_train +1838 X_train +1831 X_train +4524 X_train +6033 X_train +7412 X_train +2131 X_train +3203 X_train +6020 X_train +829 X_train +719 X_train +2205 X_train +3286 X_train +7465 X_train +2080 X_train +2181 X_train +1134 X_train +2895 X_train +7440 X_train +2977 X_train +3226 X_train +4538 X_train +1171 X_train +6 X_train +1256 X_train +2538 X_train +4557 X_train +428 X_train +7495 X_train +2589 X_train +1104 X_train +2954 X_train +415 X_train +4651 X_train +1512 X_train +32 X_train +56 X_train +746 X_train +4575 X_train +1192 X_train +2900 X_train +2888 X_train +785 X_train +737 X_train +2580 X_train +2602 X_train +6031 X_train +6085 X_train +3281 X_train +412 X_train +4565 X_train +2950 X_train +4661 X_train +1195 X_train +2087 X_train +42 X_train +2122 X_train +87 X_train +1187 X_train +1222 X_train +2157 X_train +3254 X_train +1878 X_train +2243 X_train +2885 X_train +2905 X_train +1863 X_train +102 X_train +6071 X_train +1221 X_train +30 X_train +1120 X_train +6030 X_train +4531 X_train +1101 X_train +1886 X_train +1556 X_train +1839 X_train +3252 X_train +2094 X_train +392 X_train +1585 X_train +1576 X_train +7408 X_train +6064 X_train +453 X_train +101 X_train +4548 X_train +2921 X_train +459 X_train +7469 X_train +4621 X_train +4594 X_train +765 X_train +5994 X_train +387 X_train +373 X_train +4587 X_train +2948 X_train +796 X_train +1097 X_train +820 X_train +110 X_train +729 X_train +4543 X_train +2557 X_train +0 X_train +6032 X_train +3210 X_train +1880 X_train +2 X_train +721 X_train +2077 X_train +51 X_train +4654 X_train +78 X_train +7480 X_train +1123 X_train +715 X_train +2576 X_train +7432 X_train +379 X_train +1854 X_train +1825 X_train +2083 X_train +3272 X_train +1503 X_train +2156 X_train +7454 X_train +2081 X_train +1090 X_train +4653 X_train +828 X_train +4607 X_train +1832 X_train +1593 X_train +47 X_train +1149 X_train +473 X_train +1203 X_train +1188 X_train +4642 X_train +3244 X_train +6045 X_train +1270 X_train +470 X_train +728 X_train +2596 X_train +1528 X_train +1064 X_train +6014 X_train +3295 X_train +106 X_train +4555 X_train +2207 X_train +3313 X_train +1194 X_train +3307 X_train +4604 X_train +1095 X_train +1157 X_train +1225 X_train +7397 X_train +4576 X_train +1181 X_train +1797 X_train +35 X_train +786 X_train +1281 X_train +811 X_train +4539 X_train +1059 X_train +7488 X_train +2938 X_train +4540 X_train +4620 X_train +1243 X_train +1103 X_train +77 X_train +4559 X_train +1176 X_train +803 X_train +1235 X_train +1511 X_train +2934 X_train +7447 X_train +1499 X_train +6000 X_train +6047 X_train +422 X_train +82 X_train +2910 X_train +5993 X_train +2188 X_train +4657 X_train +367 X_train +2185 X_train +4551 X_train +2214 X_train +1078 X_train +2985 X_train +2239 X_train +1058 X_train +85 X_train +2543 X_train +2896 X_train +6004 X_train +2192 X_train +406 X_train +2129 X_train +2149 X_train +1589 X_train +400 X_train +2931 X_train +1114 X_train +781 X_train +2569 X_train +1212 X_train +6057 X_train +2890 X_train +3193 X_train +4647 X_train +1807 X_train +4592 X_train +1801 X_train +3228 X_train +775 X_train +2164 X_train +1816 X_train +2541 X_train +2600 X_train +7396 X_train +419 X_train +68 X_train +2608 X_train +7500 X_train +1879 X_train +755 X_train +1168 X_train +3269 X_train +7499 X_train +6017 X_train +1795 X_train +2916 X_train +6012 X_train +6016 X_train +1232 X_train +368 X_train +5997 X_train +2936 X_train +2160 X_train +2892 X_train +758 X_train +1538 X_train +7460 X_train +2607 X_train +11 X_train +4598 X_train +88 X_train +2616 X_train +23 X_train +1578 X_train +418 X_train +1844 X_train +1173 X_train +743 X_train +1809 X_train +2572 X_train +2960 X_train +38 X_train +1517 X_train +4588 X_train +4622 X_train +1557 X_train +3322 X_train +6026 X_train +1119 X_train +6010 X_train +2224 X_train +2176 X_train +53 X_train +1100 X_train +351 X_train +740 X_train +1865 X_train +36 X_train +1828 X_train +4629 X_train +3274 X_train +6095 X_train +825 X_train +6040 X_train +1806 X_train +1135 X_train +90 X_train +1071 X_train +6015 X_train +6082 X_train +389 X_train +365 X_train +2961 X_train +3188 X_train +1282 X_train +1204 X_train +3271 X_train +378 X_train +7436 X_train +3267 X_train +6048 X_train +6001 X_train +1887 X_train +1601 X_train +3218 X_train +1083 X_train +1245 X_train +7445 X_train +3260 X_train +7470 X_train +6069 X_train +1073 X_train +4549 X_train +2230 X_train +4609 X_train +10 X_train +1077 X_train +1848 X_train +4630 X_train +2969 X_train +2079 X_train +4645 X_train +443 X_train +2099 X_train +1 X_train +4561 X_train +4 X_train +91 X_train +2145 X_train +4562 X_train +2546 X_train +748 X_train +2092 X_train +7401 X_train +6043 X_train +2228 X_train +1853 X_train +2891 X_train +1141 X_train +4590 X_train +386 X_train +7481 X_train +2599 X_train +6019 X_train +2104 X_train +762 X_train +1274 X_train +421 X_train +1213 X_train +1544 X_train +832 X_train +3301 X_train +436 X_train +3278 X_train +1894 X_train +1063 X_train +3285 X_train +6093 X_train +2582 X_train +3191 X_train +2573 X_train +1833 X_train +46 X_train +6096 X_train +2971 X_train +2982 X_train +2926 X_train +383 X_train +7421 X_train +2975 X_train +2120 X_train +774 X_train +6029 X_train +1175 X_train +747 X_train +6070 X_train +3265 X_train +83 X_train +757 X_train +3255 X_train +798 X_train +1049 X_train +1108 X_train +3221 X_train +2531 X_train +809 X_train +7452 X_train +6053 X_train +2161 X_train +433 X_train +7429 X_train +17 X_train +2210 X_train +1229 X_train +4625 X_train +1872 X_train +2612 X_train +1820 X_train +366 X_train +4554 X_train +1275 X_train +1125 X_train +1819 X_train +2601 X_train +3247 X_train +1590 X_train +3317 X_train +1850 X_train +1525 X_train +2090 X_train +750 X_train +6086 X_train +2111 X_train +2907 X_train +1053 X_train +452 X_train +356 X_train +6062 X_train +805 X_train +1112 X_train +4527 X_train +28 X_train +6042 X_train +2535 X_train +3206 X_train +3298 X_train +2906 X_train +444 X_train +4595 X_train +391 X_train +7450 X_train +6074 X_train +7414 X_train +4652 X_train +1862 X_train +1799 X_train +2549 X_train +2212 X_train +2925 X_train +2110 X_train +2221 X_train +469 X_train +3190 X_train +6046 X_train +792 X_train +1240 X_train +1533 X_train +1548 X_train +1122 X_train +1062 X_train +2955 X_train +7449 X_train +2951 X_train +1599 X_train +2584 X_train +1138 X_train +466 X_train +821 X_train +6058 X_train +2978 X_train +1265 X_train +7422 X_train +3276 X_train +2132 X_train +7405 X_train +718 X_train +752 X_train +4636 X_train +2935 X_train +4529 X_train +448 X_train +58 X_train +5991 X_train +2121 X_train +4567 X_train +2883 X_train +1201 X_train +4521 X_train +3300 X_train +104 X_train +1140 X_train +2237 X_train +3236 X_train +742 X_train +405 X_train +2158 X_train +99 X_train +1075 X_train +815 X_train +3215 X_train +1563 X_train +6090 X_train +2171 X_train +2140 X_train +5990 X_train +1891 X_train +6027 X_train +441 X_train +3257 X_train +6101 X_train +2919 X_train +2162 X_train +7398 X_train +7390 X_train +1253 X_train +1262 X_train +741 X_train +1184 X_train +3294 X_train +2922 X_train +1841 X_train +2119 X_train +799 X_train +2908 X_train +1246 X_train +1132 X_train +4655 X_train +463 X_train +2930 X_train +1237 X_train +2179 X_train +2182 X_train +2929 X_train +1068 X_train +833 X_train +4663 X_train +31 X_train +2107 X_train +6008 X_train +2976 X_train +7501 X_train +6068 X_train +7413 X_train +2231 X_train +384 X_train +80 X_train +1093 X_train +2587 X_train +2610 X_train +1827 X_train +1257 X_train +1276 X_train +4584 X_train +7485 X_train +1092 X_train +1163 X_train +2957 X_train +4659 X_train +802 X_train +2545 X_train +2106 X_train +4573 X_train +4617 X_train +2595 X_train +1170 X_train +1079 X_train +1248 X_train +2598 X_train +756 X_train +7474 X_train +1546 X_train +2592 X_train +1105 X_train +1050 X_train +2920 X_train +95 X_train +1283 X_train +1573 X_train +60 X_train +48 X_train +2963 X_train +4658 X_train +3195 X_train +1851 X_train +84 X_train +2588 X_train +4619 X_train +381 X_train +1521 X_train +458 X_train +402 X_train +1842 X_train +1592 X_train +766 X_train +2125 X_train +4606 X_train +385 X_train +1815 X_train +4634 X_train +1813 X_train +460 X_train +7478 X_train +4618 X_train +1178 X_train +1588 X_train +3268 X_train +6061 X_train +1200 X_train +739 X_train +3214 X_train +736 X_train +6025 X_train +2953 X_train +1510 X_train +2142 X_train +2962 X_train +6077 X_train +1156 X_train +3196 X_train +7439 X_train +1560 X_train +827 X_train +712 X_train +425 X_train +1211 X_train +3316 X_train +2199 X_train +830 X_train +1126 X_train +2591 X_train +2886 X_train +6011 X_train +4610 X_train +6035 X_train +2168 X_train +2563 X_train +1133 X_train +3243 X_train +6100 X_train +1796 X_train +1532 X_train +2178 X_train +3275 X_train +1094 X_train +1089 X_train +2124 X_train +2105 X_train +1523 X_train +2187 X_train +1883 X_train +4583 X_train +1074 X_train +1845 X_train +1812 X_train +1128 X_train +2227 X_train +732 X_train +7402 X_train +1567 X_train +2947 X_train +2968 X_train +2108 X_train +57 X_train +4536 X_train +6007 X_train +2893 X_train +4558 X_train +4616 X_train +1805 X_train +1543 X_train +725 X_train +2138 X_train +1166 X_train +1088 X_train +26 X_train +4640 X_train +5989 X_train +1823 X_train +1866 X_train +2979 X_train +424 X_train +2225 X_train +7461 X_train +7431 X_train +2552 X_train +1518 X_train +6065 X_train +4560 X_train +3229 X_train +1153 X_train +1498 X_train +2959 X_train +2562 X_train +2101 X_train +1536 X_train +41 X_train +767 X_train +2085 X_train +1864 X_train +4574 X_train +2204 X_train +2103 X_train +726 X_train +363 X_train +4547 X_train +1234 X_train +1052 X_train +1558 X_train +4596 X_train +2559 X_train +807 X_train +7434 X_train +3253 X_train +1836 X_train +1583 X_train +4542 X_train +2088 X_train +371 X_train +1182 X_train +468 X_train +738 X_train +1228 X_train +776 X_train +1598 X_train +1834 X_train +1885 X_train +2894 X_train +1800 X_train +1792 X_train +16 X_train +1152 X_train +800 X_train +4646 X_train +15 X_train +1259 X_train +3289 X_train +472 X_train +1160 X_train +2084 X_train +4519 X_train +3217 X_train +3 X_train +2202 X_train +462 X_train +430 X_train +2169 X_train +1197 X_train +1159 X_train +1255 X_train +1150 X_train +2937 X_train +5996 X_train +6036 X_train +432 X_train +7409 X_train +112 X_train +3187 X_train +2195 X_train +4589 X_train +4624 X_train +411 X_train +1802 X_train +2136 X_train +107 X_train +3305 X_train +4552 X_train +439 X_train +6080 X_train +7457 X_train +2574 X_train +722 X_train +1143 X_train +2539 X_train +2127 X_train +4591 X_train +1569 X_train +1501 X_train +1798 X_train +1553 X_train +2956 X_train +1859 X_train +2128 X_train +7400 X_train +2153 X_train +2219 X_train +1146 X_train +4660 X_train +4623 X_train +2581 X_train +7444 X_train +1142 X_train +2568 X_train +4613 X_train +2571 X_train +52 X_train +7451 X_train +2945 X_train +3235 X_train +1822 X_train +7441 X_train +788 X_train +2163 X_train +7437 X_train +1057 X_train +1519 X_train +3202 X_train +7459 X_train +449 X_train +7393 X_train +3309 X_train +1167 X_train +86 X_train +1506 X_train +6060 X_train +2154 X_train +1551 X_train +109 X_train +7482 X_train +410 X_train +5987 X_train +67 X_train +4568 X_train +1867 X_train +376 X_train +1076 X_train +1055 X_train +1591 y_train +2117 y_train +1791 y_train +1220 y_train +6079 y_train +1526 y_train +2946 y_train +413 y_train +7477 y_train +2577 y_train +1180 y_train +2914 y_train +7423 y_train +7403 y_train +1852 y_train +2213 y_train +49 y_train +3279 y_train +2173 y_train +6066 y_train +768 y_train +79 y_train +3199 y_train +2141 y_train +2917 y_train +2981 y_train +3292 y_train +1251 y_train +394 y_train +2234 y_train +4533 y_train +5985 y_train +3304 y_train +3225 y_train +2091 y_train +3297 y_train +1205 y_train +2965 y_train +355 y_train +93 y_train +2609 y_train +404 y_train +4570 y_train +2551 y_train +1169 y_train +7420 y_train +2076 y_train +375 y_train +7428 y_train +1509 y_train +3321 y_train +440 y_train +1564 y_train +1226 y_train +1861 y_train +3280 y_train +2944 y_train +2130 y_train +6039 y_train +1130 y_train +2614 y_train +3315 y_train +1837 y_train +2918 y_train +438 y_train +20 y_train +2165 y_train +1586 y_train +6034 y_train +456 y_train +1855 y_train +396 y_train +4600 y_train +3223 y_train +354 y_train +3211 y_train +2915 y_train +108 y_train +2973 y_train +831 y_train +408 y_train +7446 y_train +2553 y_train +1545 y_train +4605 y_train +7479 y_train +3306 y_train +4599 y_train +1215 y_train +1496 y_train +2233 y_train +426 y_train +1067 y_train +465 y_train +1272 y_train +1871 y_train +1174 y_train +6041 y_train +771 y_train +7492 y_train +4643 y_train +1099 y_train +1115 y_train +4566 y_train +2226 y_train +3219 y_train +7471 y_train +9 y_train +1061 y_train +69 y_train +2241 y_train +2933 y_train +2115 y_train +1155 y_train +2223 y_train +3201 y_train +2542 y_train +2209 y_train +6078 y_train +4649 y_train +445 y_train +1570 y_train +1582 y_train +7394 y_train +1803 y_train +4608 y_train +59 y_train +3282 y_train +6003 y_train +1164 y_train +4526 y_train +1549 y_train +1279 y_train +4522 y_train +7430 y_train +2218 y_train +2911 y_train +1581 y_train +1495 y_train +1494 y_train +1116 y_train +434 y_train +1269 y_train +7473 y_train +783 y_train +1537 y_train +7496 y_train +5988 y_train +1136 y_train +1066 y_train +70 y_train +2902 y_train +403 y_train +2583 y_train +2216 y_train +45 y_train +2201 y_train +1890 y_train +2238 y_train +360 y_train +96 y_train +727 y_train +1571 y_train +3311 y_train +2174 y_train +3302 y_train +2903 y_train +2203 y_train +3194 y_train +778 y_train +7392 y_train +751 y_train +3222 y_train +6084 y_train +2200 y_train +2143 y_train +4597 y_train +2086 y_train +1555 y_train +2974 y_train +6075 y_train +7464 y_train +1183 y_train +467 y_train +780 y_train +6098 y_train +1513 y_train +1249 y_train +2983 y_train +2967 y_train +4639 y_train +471 y_train +2558 y_train +1597 y_train +826 y_train +3227 y_train +3296 y_train +2966 y_train +97 y_train +2190 y_train +2217 y_train +4585 y_train +1145 y_train +4603 y_train +1096 y_train +1889 y_train +1497 y_train +2924 y_train +1888 y_train +744 y_train +111 y_train +716 y_train +1502 y_train +3277 y_train +1148 y_train +1247 y_train +1577 y_train +2923 y_train +3251 y_train +14 y_train +1224 y_train +754 y_train +2189 y_train +769 y_train +2150 y_train +3291 y_train +3259 y_train +1554 y_train +4546 y_train +2144 y_train +782 y_train +2155 y_train +2089 y_train +7497 y_train +2166 y_train +3186 y_train +1843 y_train +6013 y_train +450 y_train +362 y_train +730 y_train +429 y_train +1266 y_train +7466 y_train +2590 y_train +1869 y_train +1821 y_train +1214 y_train +6018 y_train +370 y_train +2116 y_train +2579 y_train +455 y_train +3293 y_train +40 y_train +457 y_train +1804 y_train +4563 y_train +2913 y_train +6067 y_train +2537 y_train +1277 y_train +1242 y_train +4523 y_train +2235 y_train +3288 y_train +7391 y_train +1209 y_train +2206 y_train +1102 y_train +7494 y_train +814 y_train +3256 y_train +1278 y_train +1206 y_train +6049 y_train +6063 y_train +7443 y_train +6044 y_train +2100 y_train +1260 y_train +357 y_train +364 y_train +100 y_train +2565 y_train +4532 y_train +81 y_train +3192 y_train +7389 y_train +1540 y_train +4564 y_train +2123 y_train +1584 y_train +4582 y_train +1508 y_train +2889 y_train +3318 y_train +2941 y_train +2940 y_train +3197 y_train +24 y_train +6024 y_train +763 y_train +2585 y_train +25 y_train +1072 y_train +1565 y_train +3240 y_train +793 y_train +1165 y_train +397 y_train +1529 y_train +2597 y_train +1233 y_train +4641 y_train +2530 y_train +2615 y_train +7426 y_train +1552 y_train +1086 y_train +65 y_train +75 y_train +4580 y_train +3209 y_train +7490 y_train +1811 y_train +2534 y_train +3258 y_train +1084 y_train +2594 y_train +4586 y_train +1856 y_train +18 y_train +1500 y_train +1857 y_train +4602 y_train +2112 y_train +2177 y_train +2605 y_train +1575 y_train +6052 y_train +1507 y_train +2984 y_train +4593 y_train +382 y_train +2222 y_train +353 y_train +7404 y_train +427 y_train +2148 y_train +7498 y_train +4581 y_train +2240 y_train +1884 y_train +1106 y_train +4601 y_train +2197 y_train +4534 y_train +2567 y_train +7388 y_train +717 y_train +5984 y_train +804 y_train +5992 y_train +446 y_train +3205 y_train +1602 y_train +777 y_train +6088 y_train +2170 y_train +1530 y_train +2242 y_train +2942 y_train +4631 y_train +3284 y_train +3230 y_train +1227 y_train +359 y_train +4541 y_train +414 y_train +4632 y_train +3266 y_train +1808 y_train +759 y_train +7 y_train +2593 y_train +2232 y_train +770 y_train +3303 y_train +1139 y_train +6056 y_train +2236 y_train +6028 y_train +1280 y_train +789 y_train +63 y_train +1868 y_train +1504 y_train +34 y_train +358 y_train +73 y_train +5 y_train +1542 y_train +4615 y_train +50 y_train +417 y_train +1189 y_train +3246 y_train +5999 y_train +1190 y_train +794 y_train +2134 y_train +787 y_train +2096 y_train +3224 y_train +779 y_train +4556 y_train +723 y_train +92 y_train +2133 y_train +761 y_train +1824 y_train +1207 y_train +1054 y_train +1574 y_train +1144 y_train +1514 y_train +1534 y_train +461 y_train +7448 y_train +76 y_train +745 y_train +1196 y_train +464 y_train +795 y_train +1847 y_train +113 y_train +1881 y_train +3238 y_train +2180 y_train +2109 y_train +3200 y_train +7467 y_train +2570 y_train +1580 y_train +54 y_train +2533 y_train +2215 y_train +4644 y_train +2147 y_train +2932 y_train +1070 y_train +2191 y_train +3283 y_train +4662 y_train +753 y_train +2135 y_train +2550 y_train +1876 y_train +2943 y_train +1118 y_train +720 y_train +4650 y_train +2186 y_train +6083 y_train +1873 y_train +1261 y_train +1056 y_train +2220 y_train +454 y_train +55 y_train +1877 y_train +1596 y_train +1600 y_train +3314 y_train +2884 y_train +37 y_train +2118 y_train +2958 y_train +1566 y_train +1051 y_train +1263 y_train +2183 y_train +2113 y_train +3320 y_train +2928 y_train +3249 y_train +1870 y_train +764 y_train +1048 y_train +6076 y_train +749 y_train +3264 y_train +4550 y_train +72 y_train +7453 y_train +1091 y_train +1081 y_train +1267 y_train +819 y_train +773 y_train +3241 y_train +399 y_train +2564 y_train +1860 y_train +7416 y_train +8 y_train +3308 y_train +3232 y_train +1236 y_train +2184 y_train +2532 y_train +6009 y_train +374 y_train +1516 y_train +6055 y_train +1838 y_train +1831 y_train +4524 y_train +6033 y_train +7412 y_train +2131 y_train +3203 y_train +6020 y_train +829 y_train +719 y_train +2205 y_train +3286 y_train +7465 y_train +2080 y_train +2181 y_train +1134 y_train +2895 y_train +7440 y_train +2977 y_train +3226 y_train +4538 y_train +1171 y_train +6 y_train +1256 y_train +2538 y_train +4557 y_train +428 y_train +7495 y_train +2589 y_train +1104 y_train +2954 y_train +415 y_train +4651 y_train +1512 y_train +32 y_train +56 y_train +746 y_train +4575 y_train +1192 y_train +2900 y_train +2888 y_train +785 y_train +737 y_train +2580 y_train +2602 y_train +6031 y_train +6085 y_train +3281 y_train +412 y_train +4565 y_train +2950 y_train +4661 y_train +1195 y_train +2087 y_train +42 y_train +2122 y_train +87 y_train +1187 y_train +1222 y_train +2157 y_train +3254 y_train +1878 y_train +2243 y_train +2885 y_train +2905 y_train +1863 y_train +102 y_train +6071 y_train +1221 y_train +30 y_train +1120 y_train +6030 y_train +4531 y_train +1101 y_train +1886 y_train +1556 y_train +1839 y_train +3252 y_train +2094 y_train +392 y_train +1585 y_train +1576 y_train +7408 y_train +6064 y_train +453 y_train +101 y_train +4548 y_train +2921 y_train +459 y_train +7469 y_train +4621 y_train +4594 y_train +765 y_train +5994 y_train +387 y_train +373 y_train +4587 y_train +2948 y_train +796 y_train +1097 y_train +820 y_train +110 y_train +729 y_train +4543 y_train +2557 y_train +0 y_train +6032 y_train +3210 y_train +1880 y_train +2 y_train +721 y_train +2077 y_train +51 y_train +4654 y_train +78 y_train +7480 y_train +1123 y_train +715 y_train +2576 y_train +7432 y_train +379 y_train +1854 y_train +1825 y_train +2083 y_train +3272 y_train +1503 y_train +2156 y_train +7454 y_train +2081 y_train +1090 y_train +4653 y_train +828 y_train +4607 y_train +1832 y_train +1593 y_train +47 y_train +1149 y_train +473 y_train +1203 y_train +1188 y_train +4642 y_train +3244 y_train +6045 y_train +1270 y_train +470 y_train +728 y_train +2596 y_train +1528 y_train +1064 y_train +6014 y_train +3295 y_train +106 y_train +4555 y_train +2207 y_train +3313 y_train +1194 y_train +3307 y_train +4604 y_train +1095 y_train +1157 y_train +1225 y_train +7397 y_train +4576 y_train +1181 y_train +1797 y_train +35 y_train +786 y_train +1281 y_train +811 y_train +4539 y_train +1059 y_train +7488 y_train +2938 y_train +4540 y_train +4620 y_train +1243 y_train +1103 y_train +77 y_train +4559 y_train +1176 y_train +803 y_train +1235 y_train +1511 y_train +2934 y_train +7447 y_train +1499 y_train +6000 y_train +6047 y_train +422 y_train +82 y_train +2910 y_train +5993 y_train +2188 y_train +4657 y_train +367 y_train +2185 y_train +4551 y_train +2214 y_train +1078 y_train +2985 y_train +2239 y_train +1058 y_train +85 y_train +2543 y_train +2896 y_train +6004 y_train +2192 y_train +406 y_train +2129 y_train +2149 y_train +1589 y_train +400 y_train +2931 y_train +1114 y_train +781 y_train +2569 y_train +1212 y_train +6057 y_train +2890 y_train +3193 y_train +4647 y_train +1807 y_train +4592 y_train +1801 y_train +3228 y_train +775 y_train +2164 y_train +1816 y_train +2541 y_train +2600 y_train +7396 y_train +419 y_train +68 y_train +2608 y_train +7500 y_train +1879 y_train +755 y_train +1168 y_train +3269 y_train +7499 y_train +6017 y_train +1795 y_train +2916 y_train +6012 y_train +6016 y_train +1232 y_train +368 y_train +5997 y_train +2936 y_train +2160 y_train +2892 y_train +758 y_train +1538 y_train +7460 y_train +2607 y_train +11 y_train +4598 y_train +88 y_train +2616 y_train +23 y_train +1578 y_train +418 y_train +1844 y_train +1173 y_train +743 y_train +1809 y_train +2572 y_train +2960 y_train +38 y_train +1517 y_train +4588 y_train +4622 y_train +1557 y_train +3322 y_train +6026 y_train +1119 y_train +6010 y_train +2224 y_train +2176 y_train +53 y_train +1100 y_train +351 y_train +740 y_train +1865 y_train +36 y_train +1828 y_train +4629 y_train +3274 y_train +6095 y_train +825 y_train +6040 y_train +1806 y_train +1135 y_train +90 y_train +1071 y_train +6015 y_train +6082 y_train +389 y_train +365 y_train +2961 y_train +3188 y_train +1282 y_train +1204 y_train +3271 y_train +378 y_train +7436 y_train +3267 y_train +6048 y_train +6001 y_train +1887 y_train +1601 y_train +3218 y_train +1083 y_train +1245 y_train +7445 y_train +3260 y_train +7470 y_train +6069 y_train +1073 y_train +4549 y_train +2230 y_train +4609 y_train +10 y_train +1077 y_train +1848 y_train +4630 y_train +2969 y_train +2079 y_train +4645 y_train +443 y_train +2099 y_train +1 y_train +4561 y_train +4 y_train +91 y_train +2145 y_train +4562 y_train +2546 y_train +748 y_train +2092 y_train +7401 y_train +6043 y_train +2228 y_train +1853 y_train +2891 y_train +1141 y_train +4590 y_train +386 y_train +7481 y_train +2599 y_train +6019 y_train +2104 y_train +762 y_train +1274 y_train +421 y_train +1213 y_train +1544 y_train +832 y_train +3301 y_train +436 y_train +3278 y_train +1894 y_train +1063 y_train +3285 y_train +6093 y_train +2582 y_train +3191 y_train +2573 y_train +1833 y_train +46 y_train +6096 y_train +2971 y_train +2982 y_train +2926 y_train +383 y_train +7421 y_train +2975 y_train +2120 y_train +774 y_train +6029 y_train +1175 y_train +747 y_train +6070 y_train +3265 y_train +83 y_train +757 y_train +3255 y_train +798 y_train +1049 y_train +1108 y_train +3221 y_train +2531 y_train +809 y_train +7452 y_train +6053 y_train +2161 y_train +433 y_train +7429 y_train +17 y_train +2210 y_train +1229 y_train +4625 y_train +1872 y_train +2612 y_train +1820 y_train +366 y_train +4554 y_train +1275 y_train +1125 y_train +1819 y_train +2601 y_train +3247 y_train +1590 y_train +3317 y_train +1850 y_train +1525 y_train +2090 y_train +750 y_train +6086 y_train +2111 y_train +2907 y_train +1053 y_train +452 y_train +356 y_train +6062 y_train +805 y_train +1112 y_train +4527 y_train +28 y_train +6042 y_train +2535 y_train +3206 y_train +3298 y_train +2906 y_train +444 y_train +4595 y_train +391 y_train +7450 y_train +6074 y_train +7414 y_train +4652 y_train +1862 y_train +1799 y_train +2549 y_train +2212 y_train +2925 y_train +2110 y_train +2221 y_train +469 y_train +3190 y_train +6046 y_train +792 y_train +1240 y_train +1533 y_train +1548 y_train +1122 y_train +1062 y_train +2955 y_train +7449 y_train +2951 y_train +1599 y_train +2584 y_train +1138 y_train +466 y_train +821 y_train +6058 y_train +2978 y_train +1265 y_train +7422 y_train +3276 y_train +2132 y_train +7405 y_train +718 y_train +752 y_train +4636 y_train +2935 y_train +4529 y_train +448 y_train +58 y_train +5991 y_train +2121 y_train +4567 y_train +2883 y_train +1201 y_train +4521 y_train +3300 y_train +104 y_train +1140 y_train +2237 y_train +3236 y_train +742 y_train +405 y_train +2158 y_train +99 y_train +1075 y_train +815 y_train +3215 y_train +1563 y_train +6090 y_train +2171 y_train +2140 y_train +5990 y_train +1891 y_train +6027 y_train +441 y_train +3257 y_train +6101 y_train +2919 y_train +2162 y_train +7398 y_train +7390 y_train +1253 y_train +1262 y_train +741 y_train +1184 y_train +3294 y_train +2922 y_train +1841 y_train +2119 y_train +799 y_train +2908 y_train +1246 y_train +1132 y_train +4655 y_train +463 y_train +2930 y_train +1237 y_train +2179 y_train +2182 y_train +2929 y_train +1068 y_train +833 y_train +4663 y_train +31 y_train +2107 y_train +6008 y_train +2976 y_train +7501 y_train +6068 y_train +7413 y_train +2231 y_train +384 y_train +80 y_train +1093 y_train +2587 y_train +2610 y_train +1827 y_train +1257 y_train +1276 y_train +4584 y_train +7485 y_train +1092 y_train +1163 y_train +2957 y_train +4659 y_train +802 y_train +2545 y_train +2106 y_train +4573 y_train +4617 y_train +2595 y_train +1170 y_train +1079 y_train +1248 y_train +2598 y_train +756 y_train +7474 y_train +1546 y_train +2592 y_train +1105 y_train +1050 y_train +2920 y_train +95 y_train +1283 y_train +1573 y_train +60 y_train +48 y_train +2963 y_train +4658 y_train +3195 y_train +1851 y_train +84 y_train +2588 y_train +4619 y_train +381 y_train +1521 y_train +458 y_train +402 y_train +1842 y_train +1592 y_train +766 y_train +2125 y_train +4606 y_train +385 y_train +1815 y_train +4634 y_train +1813 y_train +460 y_train +7478 y_train +4618 y_train +1178 y_train +1588 y_train +3268 y_train +6061 y_train +1200 y_train +739 y_train +3214 y_train +736 y_train +6025 y_train +2953 y_train +1510 y_train +2142 y_train +2962 y_train +6077 y_train +1156 y_train +3196 y_train +7439 y_train +1560 y_train +827 y_train +712 y_train +425 y_train +1211 y_train +3316 y_train +2199 y_train +830 y_train +1126 y_train +2591 y_train +2886 y_train +6011 y_train +4610 y_train +6035 y_train +2168 y_train +2563 y_train +1133 y_train +3243 y_train +6100 y_train +1796 y_train +1532 y_train +2178 y_train +3275 y_train +1094 y_train +1089 y_train +2124 y_train +2105 y_train +1523 y_train +2187 y_train +1883 y_train +4583 y_train +1074 y_train +1845 y_train +1812 y_train +1128 y_train +2227 y_train +732 y_train +7402 y_train +1567 y_train +2947 y_train +2968 y_train +2108 y_train +57 y_train +4536 y_train +6007 y_train +2893 y_train +4558 y_train +4616 y_train +1805 y_train +1543 y_train +725 y_train +2138 y_train +1166 y_train +1088 y_train +26 y_train +4640 y_train +5989 y_train +1823 y_train +1866 y_train +2979 y_train +424 y_train +2225 y_train +7461 y_train +7431 y_train +2552 y_train +1518 y_train +6065 y_train +4560 y_train +3229 y_train +1153 y_train +1498 y_train +2959 y_train +2562 y_train +2101 y_train +1536 y_train +41 y_train +767 y_train +2085 y_train +1864 y_train +4574 y_train +2204 y_train +2103 y_train +726 y_train +363 y_train +4547 y_train +1234 y_train +1052 y_train +1558 y_train +4596 y_train +2559 y_train +807 y_train +7434 y_train +3253 y_train +1836 y_train +1583 y_train +4542 y_train +2088 y_train +371 y_train +1182 y_train +468 y_train +738 y_train +1228 y_train +776 y_train +1598 y_train +1834 y_train +1885 y_train +2894 y_train +1800 y_train +1792 y_train +16 y_train +1152 y_train +800 y_train +4646 y_train +15 y_train +1259 y_train +3289 y_train +472 y_train +1160 y_train +2084 y_train +4519 y_train +3217 y_train +3 y_train +2202 y_train +462 y_train +430 y_train +2169 y_train +1197 y_train +1159 y_train +1255 y_train +1150 y_train +2937 y_train +5996 y_train +6036 y_train +432 y_train +7409 y_train +112 y_train +3187 y_train +2195 y_train +4589 y_train +4624 y_train +411 y_train +1802 y_train +2136 y_train +107 y_train +3305 y_train +4552 y_train +439 y_train +6080 y_train +7457 y_train +2574 y_train +722 y_train +1143 y_train +2539 y_train +2127 y_train +4591 y_train +1569 y_train +1501 y_train +1798 y_train +1553 y_train +2956 y_train +1859 y_train +2128 y_train +7400 y_train +2153 y_train +2219 y_train +1146 y_train +4660 y_train +4623 y_train +2581 y_train +7444 y_train +1142 y_train +2568 y_train +4613 y_train +2571 y_train +52 y_train +7451 y_train +2945 y_train +3235 y_train +1822 y_train +7441 y_train +788 y_train +2163 y_train +7437 y_train +1057 y_train +1519 y_train +3202 y_train +7459 y_train +449 y_train +7393 y_train +3309 y_train +1167 y_train +86 y_train +1506 y_train +6060 y_train +2154 y_train +1551 y_train +109 y_train +7482 y_train +410 y_train +5987 y_train +67 y_train +4568 y_train +1867 y_train +376 y_train +1076 y_train +1055 y_train +6006 y_test +4528 y_test +2970 y_test +4577 y_test +1127 y_test +64 y_test +3242 y_test +2167 y_test +1147 y_test +2544 y_test +6092 y_test +2126 y_test +3234 y_test +2912 y_test +1258 y_test +1595 y_test +2909 y_test +7417 y_test +2082 y_test +1098 y_test +1535 y_test +1264 y_test +1231 y_test +369 y_test +3237 y_test +380 y_test +6072 y_test +4637 y_test +431 y_test +3204 y_test +1179 y_test +724 y_test +27 y_test +2949 y_test +1527 y_test +772 y_test +94 y_test +5986 y_test +2606 y_test +447 y_test +2575 y_test +6087 y_test +2196 y_test +2137 y_test +435 y_test +4633 y_test +1241 y_test +7472 y_test +6094 y_test +1216 y_test +2554 y_test +4569 y_test +817 y_test +1185 y_test +1172 y_test +7455 y_test +3216 y_test +1550 y_test +2901 y_test +6097 y_test +4635 y_test +1210 y_test +2146 y_test +1199 y_test +1524 y_test +6059 y_test +2151 y_test +1191 y_test +2097 y_test +442 y_test +2898 y_test +1830 y_test +7424 y_test +3207 y_test +1113 y_test +7399 y_test +1110 y_test +21 y_test +1531 y_test +1840 y_test +7458 y_test +1893 y_test +7425 y_test +1572 y_test +4525 y_test +3263 y_test +2887 y_test +1515 y_test +6023 y_test +7435 y_test +812 y_test +4626 y_test +3239 y_test +1814 y_test +816 y_test +6005 y_test +2536 y_test +1250 y_test +1069 y_test +2556 y_test +6021 y_test +2939 y_test +1129 y_test +1810 y_test +1177 y_test +6081 y_test +4571 y_test +409 y_test +2547 y_test +4648 y_test +1849 y_test +822 y_test +1239 y_test +7468 y_test +437 y_test +713 y_test +791 y_test +5998 y_test +7475 y_test +398 y_test +1790 y_test +790 y_test +823 y_test +784 y_test +2560 y_test +388 y_test +2952 y_test +2904 y_test +7489 y_test +6037 y_test +3220 y_test +1161 y_test +7484 y_test +89 y_test +1202 y_test +19 y_test +1230 y_test +6038 y_test +735 y_test +7407 y_test +2208 y_test +806 y_test +2198 y_test +4614 y_test +2897 y_test +835 y_test +451 y_test +1522 y_test +801 y_test +423 y_test +1826 y_test +7491 y_test +6054 y_test +1793 y_test +105 y_test +3208 y_test +1846 y_test +401 y_test +7438 y_test +1594 y_test +1218 y_test +7411 y_test +13 y_test +3312 y_test +1539 y_test +6051 y_test +1109 y_test +352 y_test +1561 y_test +1193 y_test +1858 y_test +372 y_test +2604 y_test +1794 y_test +4530 y_test +2586 y_test +2964 y_test +1882 y_test +4579 y_test +1117 y_test +2172 y_test +1107 y_test +1124 y_test +4612 y_test +1082 y_test +3287 y_test +1223 y_test +4520 y_test +2159 y_test +3319 y_test +98 y_test +4572 y_test +2194 y_test +4628 y_test +2193 y_test +734 y_test +1198 y_test +1186 y_test +4638 y_test +1121 y_test +1244 y_test +1520 y_test +29 y_test +74 y_test +6099 y_test +2229 y_test +1217 y_test +33 y_test +1060 y_test +71 y_test +4627 y_test +1131 y_test +7462 y_test +813 y_test +1273 y_test +1505 y_test +3273 y_test +824 y_test +834 y_test +2611 y_test +2540 y_test +4578 y_test +1162 y_test +1252 y_test +3310 y_test +4535 y_test +7486 y_test +2102 y_test +2899 y_test +1254 y_test +7476 y_test +114 y_test +7410 y_test +2093 y_test +1817 y_test +103 y_test +1579 y_test +1603 y_test +3262 y_test +1047 y_test +3261 y_test +3245 y_test +3250 y_test +1587 y_test +1875 y_test +1271 y_test +7395 y_test +1835 y_test +3212 y_test +7427 y_test +7418 y_test +66 y_test +22 y_test +2603 y_test +2078 y_test +361 y_test +4656 y_test +7483 y_test +1111 y_test +818 y_test +1087 y_test +731 y_test +62 y_test +2555 y_test +1219 y_test +7442 y_test +4553 y_test +3213 y_test +3290 y_test +733 y_test +2578 y_test +43 y_test +1238 y_test +2548 y_test +6022 y_test +1568 y_test +1137 y_test +1559 y_test +6091 y_test +6002 y_test +808 y_test +2561 y_test +2972 y_test +3233 y_test +7493 y_test +2152 y_test +2566 y_test +1829 y_test +1065 y_test +4544 y_test +1080 y_test +416 y_test +4537 y_test +7419 y_test +2211 y_test +3270 y_test +377 y_test +1158 y_test +390 y_test +7463 y_test +1268 y_test +44 y_test +2613 y_test +1541 y_test +39 y_test +3231 y_test +420 y_test +3299 y_test +3189 y_test +2095 y_test +393 y_test +407 y_test +3248 y_test +797 y_test +1892 y_test +4545 y_test +2139 y_test +7433 y_test +2114 y_test +760 y_test +12 y_test +4611 y_test +395 y_test +1151 y_test +1562 y_test +714 y_test +1208 y_test +1085 y_test +61 y_test +3198 y_test +1874 y_test +810 y_test +2980 y_test +2098 y_test +3323 y_test +6006 X_test +4528 X_test +2970 X_test +4577 X_test +1127 X_test +64 X_test +3242 X_test +2167 X_test +1147 X_test +2544 X_test +6092 X_test +2126 X_test +3234 X_test +2912 X_test +1258 X_test +1595 X_test +2909 X_test +7417 X_test +2082 X_test +1098 X_test +1535 X_test +1264 X_test +1231 X_test +369 X_test +3237 X_test +380 X_test +6072 X_test +4637 X_test +431 X_test +3204 X_test +1179 X_test +724 X_test +27 X_test +2949 X_test +1527 X_test +772 X_test +94 X_test +5986 X_test +2606 X_test +447 X_test +2575 X_test +6087 X_test +2196 X_test +2137 X_test +435 X_test +4633 X_test +1241 X_test +7472 X_test +6094 X_test +1216 X_test +2554 X_test +4569 X_test +817 X_test +1185 X_test +1172 X_test +7455 X_test +3216 X_test +1550 X_test +2901 X_test +6097 X_test +4635 X_test +1210 X_test +2146 X_test +1199 X_test +1524 X_test +6059 X_test +2151 X_test +1191 X_test +2097 X_test +442 X_test +2898 X_test +1830 X_test +7424 X_test +3207 X_test +1113 X_test +7399 X_test +1110 X_test +21 X_test +1531 X_test +1840 X_test +7458 X_test +1893 X_test +7425 X_test +1572 X_test +4525 X_test +3263 X_test +2887 X_test +1515 X_test +6023 X_test +7435 X_test +812 X_test +4626 X_test +3239 X_test +1814 X_test +816 X_test +6005 X_test +2536 X_test +1250 X_test +1069 X_test +2556 X_test +6021 X_test +2939 X_test +1129 X_test +1810 X_test +1177 X_test +6081 X_test +4571 X_test +409 X_test +2547 X_test +4648 X_test +1849 X_test +822 X_test +1239 X_test +7468 X_test +437 X_test +713 X_test +791 X_test +5998 X_test +7475 X_test +398 X_test +1790 X_test +790 X_test +823 X_test +784 X_test +2560 X_test +388 X_test +2952 X_test +2904 X_test +7489 X_test +6037 X_test +3220 X_test +1161 X_test +7484 X_test +89 X_test +1202 X_test +19 X_test +1230 X_test +6038 X_test +735 X_test +7407 X_test +2208 X_test +806 X_test +2198 X_test +4614 X_test +2897 X_test +835 X_test +451 X_test +1522 X_test +801 X_test +423 X_test +1826 X_test +7491 X_test +6054 X_test +1793 X_test +105 X_test +3208 X_test +1846 X_test +401 X_test +7438 X_test +1594 X_test +1218 X_test +7411 X_test +13 X_test +3312 X_test +1539 X_test +6051 X_test +1109 X_test +352 X_test +1561 X_test +1193 X_test +1858 X_test +372 X_test +2604 X_test +1794 X_test +4530 X_test +2586 X_test +2964 X_test +1882 X_test +4579 X_test +1117 X_test +2172 X_test +1107 X_test +1124 X_test +4612 X_test +1082 X_test +3287 X_test +1223 X_test +4520 X_test +2159 X_test +3319 X_test +98 X_test +4572 X_test +2194 X_test +4628 X_test +2193 X_test +734 X_test +1198 X_test +1186 X_test +4638 X_test +1121 X_test +1244 X_test +1520 X_test +29 X_test +74 X_test +6099 X_test +2229 X_test +1217 X_test +33 X_test +1060 X_test +71 X_test +4627 X_test +1131 X_test +7462 X_test +813 X_test +1273 X_test +1505 X_test +3273 X_test +824 X_test +834 X_test +2611 X_test +2540 X_test +4578 X_test +1162 X_test +1252 X_test +3310 X_test +4535 X_test +7486 X_test +2102 X_test +2899 X_test +1254 X_test +7476 X_test +114 X_test +7410 X_test +2093 X_test +1817 X_test +103 X_test +1579 X_test +1603 X_test +3262 X_test +1047 X_test +3261 X_test +3245 X_test +3250 X_test +1587 X_test +1875 X_test +1271 X_test +7395 X_test +1835 X_test +3212 X_test +7427 X_test +7418 X_test +66 X_test +22 X_test +2603 X_test +2078 X_test +361 X_test +4656 X_test +7483 X_test +1111 X_test +818 X_test +1087 X_test +731 X_test +62 X_test +2555 X_test +1219 X_test +7442 X_test +4553 X_test +3213 X_test +3290 X_test +733 X_test +2578 X_test +43 X_test +1238 X_test +2548 X_test +6022 X_test +1568 X_test +1137 X_test +1559 X_test +6091 X_test +6002 X_test +808 X_test +2561 X_test +2972 X_test +3233 X_test +7493 X_test +2152 X_test +2566 X_test +1829 X_test +1065 X_test +4544 X_test +1080 X_test +416 X_test +4537 X_test +7419 X_test +2211 X_test +3270 X_test +377 X_test +1158 X_test +390 X_test +7463 X_test +1268 X_test +44 X_test +2613 X_test +1541 X_test +39 X_test +3231 X_test +420 X_test +3299 X_test +3189 X_test +2095 X_test +393 X_test +407 X_test +3248 X_test +797 X_test +1892 X_test +4545 X_test +2139 X_test +7433 X_test +2114 X_test +760 X_test +12 X_test +4611 X_test +395 X_test +1151 X_test +1562 X_test +714 X_test +1208 X_test +1085 X_test +61 X_test +3198 X_test +1874 X_test +810 X_test +2980 X_test +2098 X_test +3323 X_test diff --git a/1.train_models/log_reg_plates_cp_fs_data/plate_4/model_data/label_encoder_log_reg_cp_fs_data_plate_4.joblib b/1.train_models/log_reg_plates_cp_fs_data/plate_4/model_data/label_encoder_log_reg_cp_fs_data_plate_4.joblib new file mode 100644 index 0000000000000000000000000000000000000000..fe606e8a75a2cf21e0066a3385ae66dca5f6bc1d GIT binary patch literal 532 zcmZ8eO>Yx15Y29rewY9$>8*%!xL8zNdP4~H!lJDdAvKrEvK^~g@OpP_FDOzgl|w0! zd}I21!RzJ%bFjzudo%N%Z-)=#Y>*^hP77)FVO zVb3gikBuF|$gOy*u*mOX-q^lx$Uek;>DTdoHC|04DnCEP&98f$T*)^7B`SDMT zv=r|=ia@y5&39JUyv0p8ew;A%VO&>NrdGx?vG&SgG3mr@E)#^x#wuEO+E)oom{qbd z&f89U0)s~s*^W#gD+YIvOV)cN9Z|_F0y~S|V*$g(ZrnBZl{taYPuQKq-aYKk;b2x| zQ6-RV!K9DClSLl!=ch1^`rzpto<)VJ)-^o;UnNY$<`NEPi(%xHo!0Oo(Jwy3RCzcO d^x;)}=_5?o_OIDDWnI;n=;;Z4OW$B8=wD|0!Pfu) literal 0 HcmV?d00001 diff --git a/1.train_models/log_reg_plates_cp_fs_data/plate_4/trained_models/log_reg_cp_fs_data_plate_4.joblib b/1.train_models/log_reg_plates_cp_fs_data/plate_4/trained_models/log_reg_cp_fs_data_plate_4.joblib new file mode 100644 index 0000000000000000000000000000000000000000..2b0a3d858ed4c28de86fd676dc2019fca3600779 GIT binary patch literal 70879 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 literal 0 HcmV?d00001 diff --git a/1.train_models/log_reg_plates_cp_fs_data/plate_4/trained_models/log_reg_shuf_cp_fs_data_plate_4.joblib b/1.train_models/log_reg_plates_cp_fs_data/plate_4/trained_models/log_reg_shuf_cp_fs_data_plate_4.joblib new file mode 100644 index 0000000000000000000000000000000000000000..57eb5c41a1041084e0f88cce5621d8bceedb12e3 GIT binary patch literal 70879 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 Date: Fri, 1 Sep 2023 08:04:38 -0600 Subject: [PATCH 3/3] Removed unnecessary imports and added comments --- .../nbconverted/plate_4_classify_genotype.py | 15 +- .../plate_4/plate_4_classify_genotype.ipynb | 137 +++++++++--------- 2 files changed, 69 insertions(+), 83 deletions(-) diff --git a/1.train_models/log_reg_plates_cp_fs_data/plate_4/nbconverted/plate_4_classify_genotype.py b/1.train_models/log_reg_plates_cp_fs_data/plate_4/nbconverted/plate_4_classify_genotype.py index e9c4749..2818e12 100644 --- a/1.train_models/log_reg_plates_cp_fs_data/plate_4/nbconverted/plate_4_classify_genotype.py +++ b/1.train_models/log_reg_plates_cp_fs_data/plate_4/nbconverted/plate_4_classify_genotype.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # coding: utf-8 -# # Train a logistic regression to classify genotypes for plate 4 +# # Train logistic regressions to classify genotypes for plate 4 # In[1]: @@ -15,11 +15,7 @@ from scipy.stats import uniform from sklearn.exceptions import ConvergenceWarning from sklearn.linear_model import LogisticRegression -from sklearn.model_selection import ( - RandomizedSearchCV, - StratifiedKFold, - train_test_split, -) +from sklearn.model_selection import RandomizedSearchCV, train_test_split from sklearn.preprocessing import LabelEncoder from sklearn.utils import parallel_backend @@ -128,7 +124,7 @@ test_frac = 0.2 val_frac = 0.15 -X_train, X_test, y_train, y_test = train_test_split(featdf, platedf[gene_column], test_size = test_frac, random_state=0, shuffle=True) +X_train, X_test, y_train, y_test = train_test_split(featdf, platedf[gene_column], test_size = test_frac, random_state=0, shuffle=True, stratify=platedf[gene_column]) # ## Shuffle the training data for the shuffled model @@ -157,9 +153,6 @@ "l1_ratio": uniform(loc=0, scale=1), } -# Define stratification method -strat_obj = StratifiedKFold(n_splits=5, shuffle=True, random_state=0) - # Create a Logistic Regression model logreg_params = { "max_iter": 1000, @@ -173,7 +166,7 @@ "param_distributions": param_dist, "scoring": "precision", "n_iter": 100, - "cv": strat_obj, + "cv": 5, "random_state": 0, "n_jobs": -1, } diff --git a/1.train_models/log_reg_plates_cp_fs_data/plate_4/plate_4_classify_genotype.ipynb b/1.train_models/log_reg_plates_cp_fs_data/plate_4/plate_4_classify_genotype.ipynb index d3dca30..1729c35 100644 --- a/1.train_models/log_reg_plates_cp_fs_data/plate_4/plate_4_classify_genotype.ipynb +++ b/1.train_models/log_reg_plates_cp_fs_data/plate_4/plate_4_classify_genotype.ipynb @@ -6,7 +6,7 @@ "jukit_cell_id": "RUaS7hws7w" }, "source": [ - "# Train a logistic regression to classify genotypes for plate 4" + "# Train logistic regressions to classify genotypes for plate 4" ] }, { @@ -14,10 +14,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:33.640054Z", - "iopub.status.busy": "2023-08-17T16:46:33.639955Z", - "iopub.status.idle": "2023-08-17T16:46:34.017899Z", - "shell.execute_reply": "2023-08-17T16:46:34.017500Z" + "iopub.execute_input": "2023-09-01T13:33:04.877843Z", + "iopub.status.busy": "2023-09-01T13:33:04.877605Z", + "iopub.status.idle": "2023-09-01T13:33:05.274218Z", + "shell.execute_reply": "2023-09-01T13:33:05.273825Z" }, "jukit_cell_id": "Uldv3YbqHx" }, @@ -32,11 +32,7 @@ "from scipy.stats import uniform\n", "from sklearn.exceptions import ConvergenceWarning\n", "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.model_selection import (\n", - " RandomizedSearchCV,\n", - " StratifiedKFold,\n", - " train_test_split,\n", - ")\n", + "from sklearn.model_selection import RandomizedSearchCV, train_test_split\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.utils import parallel_backend" ] @@ -55,10 +51,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.019971Z", - "iopub.status.busy": "2023-08-17T16:46:34.019815Z", - "iopub.status.idle": "2023-08-17T16:46:34.022807Z", - "shell.execute_reply": "2023-08-17T16:46:34.022530Z" + "iopub.execute_input": "2023-09-01T13:33:05.275946Z", + "iopub.status.busy": "2023-09-01T13:33:05.275774Z", + "iopub.status.idle": "2023-09-01T13:33:05.278473Z", + "shell.execute_reply": "2023-09-01T13:33:05.278210Z" }, "jukit_cell_id": "6bmUxXR0eb" }, @@ -96,10 +92,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.024421Z", - "iopub.status.busy": "2023-08-17T16:46:34.024164Z", - "iopub.status.idle": "2023-08-17T16:46:34.026483Z", - "shell.execute_reply": "2023-08-17T16:46:34.026219Z" + "iopub.execute_input": "2023-09-01T13:33:05.279869Z", + "iopub.status.busy": "2023-09-01T13:33:05.279626Z", + "iopub.status.idle": "2023-09-01T13:33:05.281893Z", + "shell.execute_reply": "2023-09-01T13:33:05.281643Z" }, "jukit_cell_id": "NVeszTxjt5" }, @@ -132,10 +128,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.028051Z", - "iopub.status.busy": "2023-08-17T16:46:34.027799Z", - "iopub.status.idle": "2023-08-17T16:46:34.155147Z", - "shell.execute_reply": "2023-08-17T16:46:34.154776Z" + "iopub.execute_input": "2023-09-01T13:33:05.283175Z", + "iopub.status.busy": "2023-09-01T13:33:05.283077Z", + "iopub.status.idle": "2023-09-01T13:33:05.416017Z", + "shell.execute_reply": "2023-09-01T13:33:05.415616Z" }, "jukit_cell_id": "q2xQ1rmSbQ" }, @@ -158,10 +154,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.157148Z", - "iopub.status.busy": "2023-08-17T16:46:34.156899Z", - "iopub.status.idle": "2023-08-17T16:46:34.159366Z", - "shell.execute_reply": "2023-08-17T16:46:34.159035Z" + "iopub.execute_input": "2023-09-01T13:33:05.418028Z", + "iopub.status.busy": "2023-09-01T13:33:05.417903Z", + "iopub.status.idle": "2023-09-01T13:33:05.419989Z", + "shell.execute_reply": "2023-09-01T13:33:05.419693Z" }, "jukit_cell_id": "pwIe7C4Ax4" }, @@ -195,10 +191,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.160788Z", - "iopub.status.busy": "2023-08-17T16:46:34.160526Z", - "iopub.status.idle": "2023-08-17T16:46:34.180111Z", - "shell.execute_reply": "2023-08-17T16:46:34.179662Z" + "iopub.execute_input": "2023-09-01T13:33:05.421355Z", + "iopub.status.busy": "2023-09-01T13:33:05.421131Z", + "iopub.status.idle": "2023-09-01T13:33:05.440767Z", + "shell.execute_reply": "2023-09-01T13:33:05.440399Z" }, "jukit_cell_id": "sGkl0bhWnv" }, @@ -225,10 +221,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.181968Z", - "iopub.status.busy": "2023-08-17T16:46:34.181718Z", - "iopub.status.idle": "2023-08-17T16:46:34.187517Z", - "shell.execute_reply": "2023-08-17T16:46:34.187199Z" + "iopub.execute_input": "2023-09-01T13:33:05.442246Z", + "iopub.status.busy": "2023-09-01T13:33:05.442141Z", + "iopub.status.idle": "2023-09-01T13:33:05.447881Z", + "shell.execute_reply": "2023-09-01T13:33:05.447587Z" }, "jukit_cell_id": "qcMAUWzcSj" }, @@ -254,10 +250,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.189001Z", - "iopub.status.busy": "2023-08-17T16:46:34.188784Z", - "iopub.status.idle": "2023-08-17T16:46:34.193131Z", - "shell.execute_reply": "2023-08-17T16:46:34.192708Z" + "iopub.execute_input": "2023-09-01T13:33:05.449247Z", + "iopub.status.busy": "2023-09-01T13:33:05.449147Z", + "iopub.status.idle": "2023-09-01T13:33:05.455730Z", + "shell.execute_reply": "2023-09-01T13:33:05.455470Z" }, "jukit_cell_id": "kbCV2fS53j" }, @@ -285,10 +281,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.194450Z", - "iopub.status.busy": "2023-08-17T16:46:34.194241Z", - "iopub.status.idle": "2023-08-17T16:46:34.199940Z", - "shell.execute_reply": "2023-08-17T16:46:34.199576Z" + "iopub.execute_input": "2023-09-01T13:33:05.457066Z", + "iopub.status.busy": "2023-09-01T13:33:05.456971Z", + "iopub.status.idle": "2023-09-01T13:33:05.462186Z", + "shell.execute_reply": "2023-09-01T13:33:05.461938Z" }, "jukit_cell_id": "MHDxE0uhWH" }, @@ -297,7 +293,7 @@ "test_frac = 0.2\n", "val_frac = 0.15\n", "\n", - "X_train, X_test, y_train, y_test = train_test_split(featdf, platedf[gene_column], test_size = test_frac, random_state=0, shuffle=True)" + "X_train, X_test, y_train, y_test = train_test_split(featdf, platedf[gene_column], test_size = test_frac, random_state=0, shuffle=True, stratify=platedf[gene_column])" ] }, { @@ -314,10 +310,10 @@ "execution_count": 10, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.201234Z", - "iopub.status.busy": "2023-08-17T16:46:34.200985Z", - "iopub.status.idle": "2023-08-17T16:46:34.315457Z", - "shell.execute_reply": "2023-08-17T16:46:34.314938Z" + "iopub.execute_input": "2023-09-01T13:33:05.463535Z", + "iopub.status.busy": "2023-09-01T13:33:05.463437Z", + "iopub.status.idle": "2023-09-01T13:33:06.143342Z", + "shell.execute_reply": "2023-09-01T13:33:06.142934Z" }, "jukit_cell_id": "EoWGvinowW" }, @@ -354,10 +350,10 @@ "execution_count": 11, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.317478Z", - "iopub.status.busy": "2023-08-17T16:46:34.317339Z", - "iopub.status.idle": "2023-08-17T16:46:34.321051Z", - "shell.execute_reply": "2023-08-17T16:46:34.320680Z" + "iopub.execute_input": "2023-09-01T13:33:06.145331Z", + "iopub.status.busy": "2023-09-01T13:33:06.145180Z", + "iopub.status.idle": "2023-09-01T13:33:06.148696Z", + "shell.execute_reply": "2023-09-01T13:33:06.148423Z" }, "jukit_cell_id": "4E094VqTVl" }, @@ -369,9 +365,6 @@ " \"l1_ratio\": uniform(loc=0, scale=1),\n", "}\n", "\n", - "# Define stratification method\n", - "strat_obj = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)\n", - "\n", "# Create a Logistic Regression model\n", "logreg_params = {\n", " \"max_iter\": 1000,\n", @@ -385,7 +378,7 @@ " \"param_distributions\": param_dist,\n", " \"scoring\": \"precision\",\n", " \"n_iter\": 100,\n", - " \"cv\": strat_obj,\n", + " \"cv\": 5,\n", " \"random_state\": 0,\n", " \"n_jobs\": -1,\n", "}" @@ -405,10 +398,10 @@ "execution_count": 12, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:46:34.322867Z", - "iopub.status.busy": "2023-08-17T16:46:34.322625Z", - "iopub.status.idle": "2023-08-17T16:53:19.476298Z", - "shell.execute_reply": "2023-08-17T16:53:19.475891Z" + "iopub.execute_input": "2023-09-01T13:33:06.150016Z", + "iopub.status.busy": "2023-09-01T13:33:06.149817Z", + "iopub.status.idle": "2023-09-01T13:39:55.805395Z", + "shell.execute_reply": "2023-09-01T13:39:55.804768Z" }, "jukit_cell_id": "YY8qaxm1l1" }, @@ -443,10 +436,10 @@ "execution_count": 13, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:53:19.478510Z", - "iopub.status.busy": "2023-08-17T16:53:19.478352Z", - "iopub.status.idle": "2023-08-17T16:59:48.318350Z", - "shell.execute_reply": "2023-08-17T16:59:48.317710Z" + "iopub.execute_input": "2023-09-01T13:39:55.808015Z", + "iopub.status.busy": "2023-09-01T13:39:55.807835Z", + "iopub.status.idle": "2023-09-01T13:46:38.468473Z", + "shell.execute_reply": "2023-09-01T13:46:38.468023Z" }, "jukit_cell_id": "HoOPZ90KFZ" }, @@ -482,10 +475,10 @@ "execution_count": 14, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:59:48.321003Z", - "iopub.status.busy": "2023-08-17T16:59:48.320788Z", - "iopub.status.idle": "2023-08-17T16:59:48.328672Z", - "shell.execute_reply": "2023-08-17T16:59:48.328422Z" + "iopub.execute_input": "2023-09-01T13:46:38.470611Z", + "iopub.status.busy": "2023-09-01T13:46:38.470501Z", + "iopub.status.idle": "2023-09-01T13:46:38.476534Z", + "shell.execute_reply": "2023-09-01T13:46:38.476296Z" }, "jukit_cell_id": "XmQTfarxJe" }, @@ -526,10 +519,10 @@ "execution_count": 15, "metadata": { "execution": { - "iopub.execute_input": "2023-08-17T16:59:48.358203Z", - "iopub.status.busy": "2023-08-17T16:59:48.358037Z", - "iopub.status.idle": "2023-08-17T16:59:48.368806Z", - "shell.execute_reply": "2023-08-17T16:59:48.368428Z" + "iopub.execute_input": "2023-09-01T13:46:38.500321Z", + "iopub.status.busy": "2023-09-01T13:46:38.500182Z", + "iopub.status.idle": "2023-09-01T13:46:38.508417Z", + "shell.execute_reply": "2023-09-01T13:46:38.508160Z" }, "jukit_cell_id": "KRaXZbEIzO" }, @@ -553,7 +546,7 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "python", "language": "python", "name": "python3" },