{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Machine Learning\n",
    "\n",
    "### Input = microbiome relative abundance\n",
    "\n",
    "### Targets = 3 pathogens, 32 farm practises, 24 physicochemical variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#import necessary packages\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import train_test_split\n",
    "pd.options.mode.chained_assignment = None\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.preprocessing import StandardScaler, RobustScaler\n",
    "from warnings import simplefilter\n",
    "simplefilter(action='ignore', category=FutureWarning)\n",
    "simplefilter(action='ignore', category=UserWarning)\n",
    "pd.set_option('display.max_rows', 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Load and process Microbiome dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of duplicates SampleID in raw microbiome sheet1: 0\n",
      "Rows vs columns in sheet1: (364, 1319)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Index</th>\n",
       "      <th>SampleID</th>\n",
       "      <th>Unassigned;Other;Other;Other;Other;Other</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobrevibacter</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanosphaera</th>\n",
       "      <th>...</th>\n",
       "      <th>k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__;g__</th>\n",
       "      <th>k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__PRR-10;g__</th>\n",
       "      <th>k__Bacteria;p__WS4;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__WS5;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__ZB3;c__BS119;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Meiothermus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>A1-1</td>\n",
       "      <td>0.003695</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000647</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>A1-10</td>\n",
       "      <td>0.024169</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.073736</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000215</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000059</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000059</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A1-11</td>\n",
       "      <td>0.002178</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000102</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A1-12</td>\n",
       "      <td>0.008500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000140</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000060</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00004</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>A1-13</td>\n",
       "      <td>0.087024</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000261</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 1319 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Index SampleID  Unassigned;Other;Other;Other;Other;Other  \\\n",
       "0         A1-1                                  0.003695   \n",
       "1        A1-10                                  0.024169   \n",
       "2        A1-11                                  0.002178   \n",
       "3        A1-12                                  0.008500   \n",
       "4        A1-13                                  0.087024   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__  \\\n",
       "0                                                    0.0      \n",
       "1                                                    0.0      \n",
       "2                                                    0.0      \n",
       "3                                                    0.0      \n",
       "4                                                    0.0      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__  \\\n",
       "0                                                    0.0                                      \n",
       "1                                                    0.0                                      \n",
       "2                                                    0.0                                      \n",
       "3                                                    0.0                                      \n",
       "4                                                    0.0                                      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__  \\\n",
       "0                                                    0.0                               \n",
       "1                                                    0.0                               \n",
       "2                                                    0.0                               \n",
       "3                                                    0.0                               \n",
       "4                                                    0.0                               \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__  \\\n",
       "0                                                    0.0                                              \n",
       "1                                                    0.0                                              \n",
       "2                                                    0.0                                              \n",
       "3                                                    0.0                                              \n",
       "4                                                    0.0                                              \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera  \\\n",
       "0                                               0.000000                                                                       \n",
       "1                                               0.073736                                                                       \n",
       "2                                               0.000102                                                                       \n",
       "3                                               0.000140                                                                       \n",
       "4                                               0.000000                                                                       \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium  \\\n",
       "0                                                    0.0                                                                 \n",
       "1                                                    0.0                                                                 \n",
       "2                                                    0.0                                                                 \n",
       "3                                                    0.0                                                                 \n",
       "4                                                    0.0                                                                 \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobrevibacter  \\\n",
       "0                                               0.000647                                                                   \n",
       "1                                               0.000215                                                                   \n",
       "2                                               0.000117                                                                   \n",
       "3                                               0.000060                                                                   \n",
       "4                                               0.000261                                                                   \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanosphaera  \\\n",
       "0                                                    0.0                                                               \n",
       "1                                                    0.0                                                               \n",
       "2                                                    0.0                                                               \n",
       "3                                                    0.0                                                               \n",
       "4                                                    0.0                                                               \n",
       "\n",
       "Index  ...  k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__;g__  \\\n",
       "0      ...                                                0.0    \n",
       "1      ...                                                0.0    \n",
       "2      ...                                                0.0    \n",
       "3      ...                                                0.0    \n",
       "4      ...                                                0.0    \n",
       "\n",
       "Index  k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__PRR-10;g__  \\\n",
       "0                                               0.000000          \n",
       "1                                               0.000059          \n",
       "2                                               0.000000          \n",
       "3                                               0.000000          \n",
       "4                                               0.000000          \n",
       "\n",
       "Index  k__Bacteria;p__WS4;c__;o__;f__;g__  k__Bacteria;p__WS5;c__;o__;f__;g__  \\\n",
       "0                                     0.0                                 0.0   \n",
       "1                                     0.0                                 0.0   \n",
       "2                                     0.0                                 0.0   \n",
       "3                                     0.0                                 0.0   \n",
       "4                                     0.0                                 0.0   \n",
       "\n",
       "Index  k__Bacteria;p__ZB3;c__BS119;o__;f__;g__  \\\n",
       "0                                     0.000000   \n",
       "1                                     0.000059   \n",
       "2                                     0.000000   \n",
       "3                                     0.000000   \n",
       "4                                     0.000000   \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus  \\\n",
       "0                                                0.00000                                         \n",
       "1                                                0.00000                                         \n",
       "2                                                0.00000                                         \n",
       "3                                                0.00004                                         \n",
       "4                                                0.00000                                         \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__  \\\n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera  \\\n",
       "0                                                    0.0                                    \n",
       "1                                                    0.0                                    \n",
       "2                                                    0.0                                    \n",
       "3                                                    0.0                                    \n",
       "4                                                    0.0                                    \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Meiothermus  \\\n",
       "0                                                    0.0                                 \n",
       "1                                                    0.0                                 \n",
       "2                                                    0.0                                 \n",
       "3                                                    0.0                                 \n",
       "4                                                    0.0                                 \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus  \n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "[5 rows x 1319 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Preprocess microbiome sheet 1\n",
    "microbiome_1 = pd.read_excel(\"PP Genus Level QIIME1.9 taxa tables.xlsx\", sheet_name=0,skiprows = 1)\n",
    "microbiome_1.dropna(how='all', axis=1, inplace=True)\n",
    "microbiome_1.rename(columns={\"#OTU ID\":\"Index\"}, inplace = True)\n",
    "microbiome_1 = microbiome_1.set_index('Index').transpose()\n",
    "microbiome_1.reset_index(inplace = True)\n",
    "microbiome_1.rename(columns={\"index\":\"SampleID\"}, inplace = True)\n",
    "microbiome_1.replace({'\\.': '-','01': '1','02': '2','03': '3','04': '4','05': '5','06': '6','07': '7','08': '8','09': '9'}, regex=True, inplace=True)\n",
    "print(\"Number of duplicates SampleID in raw microbiome sheet1:\", microbiome_1.SampleID.duplicated().sum()) \n",
    "print(\"Rows vs columns in sheet1:\", microbiome_1.shape)\n",
    "microbiome_1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of duplicates SampleID in raw microbiome sheet2: 0\n",
      "Rows vs columns in sheet2: (314, 1396)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Index</th>\n",
       "      <th>SampleID</th>\n",
       "      <th>Unassigned;Other;Other;Other;Other;Other</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MCG;o__pGrfC26;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobrevibacter</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanosphaera</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanomicrobia;o__Methanocellales;f__Methanocellaceae;g__Methanocella</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanomicrobia;o__Methanomicrobiales;f__;g__</th>\n",
       "      <th>...</th>\n",
       "      <th>k__Bacteria;p__WS4;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__WWE1;c__[Cloacamonae];o__[Cloacamonales];f__;g__</th>\n",
       "      <th>k__Bacteria;p__WWE1;c__[Cloacamonae];o__[Cloacamonales];f__[Cloacamonaceae];Other</th>\n",
       "      <th>k__Bacteria;p__ZB3;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__R18-435</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>A2-1</td>\n",
       "      <td>0.001405</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000064</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>A2-10</td>\n",
       "      <td>0.011849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.031624</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A2-11</td>\n",
       "      <td>0.004621</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000075</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000149</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A2-12</td>\n",
       "      <td>0.002096</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000062</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000062</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>A2-13</td>\n",
       "      <td>0.000223</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000050</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 1396 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Index SampleID  Unassigned;Other;Other;Other;Other;Other  \\\n",
       "0         A2-1                                  0.001405   \n",
       "1        A2-10                                  0.011849   \n",
       "2        A2-11                                  0.004621   \n",
       "3        A2-12                                  0.002096   \n",
       "4        A2-13                                  0.000223   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MCG;o__pGrfC26;f__;g__  \\\n",
       "0                                                    0.0       \n",
       "1                                                    0.0       \n",
       "2                                                    0.0       \n",
       "3                                                    0.0       \n",
       "4                                                    0.0       \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__  \\\n",
       "0                                                    0.0                               \n",
       "1                                                    0.0                               \n",
       "2                                                    0.0                               \n",
       "3                                                    0.0                               \n",
       "4                                                    0.0                               \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera  \\\n",
       "0                                               0.000000                                                                       \n",
       "1                                               0.031624                                                                       \n",
       "2                                               0.000075                                                                       \n",
       "3                                               0.000062                                                                       \n",
       "4                                               0.000050                                                                       \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium  \\\n",
       "0                                                    0.0                                                                 \n",
       "1                                                    0.0                                                                 \n",
       "2                                                    0.0                                                                 \n",
       "3                                                    0.0                                                                 \n",
       "4                                                    0.0                                                                 \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobrevibacter  \\\n",
       "0                                               0.000064                                                                   \n",
       "1                                               0.000000                                                                   \n",
       "2                                               0.000149                                                                   \n",
       "3                                               0.000062                                                                   \n",
       "4                                               0.000000                                                                   \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanosphaera  \\\n",
       "0                                                    0.0                                                               \n",
       "1                                                    0.0                                                               \n",
       "2                                                    0.0                                                               \n",
       "3                                                    0.0                                                               \n",
       "4                                                    0.0                                                               \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanomicrobia;o__Methanocellales;f__Methanocellaceae;g__Methanocella  \\\n",
       "0                                                    0.0                                                       \n",
       "1                                                    0.0                                                       \n",
       "2                                                    0.0                                                       \n",
       "3                                                    0.0                                                       \n",
       "4                                                    0.0                                                       \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanomicrobia;o__Methanomicrobiales;f__;g__  \\\n",
       "0                                                    0.0                              \n",
       "1                                                    0.0                              \n",
       "2                                                    0.0                              \n",
       "3                                                    0.0                              \n",
       "4                                                    0.0                              \n",
       "\n",
       "Index  ...  k__Bacteria;p__WS4;c__;o__;f__;g__  \\\n",
       "0      ...                                 0.0   \n",
       "1      ...                                 0.0   \n",
       "2      ...                                 0.0   \n",
       "3      ...                                 0.0   \n",
       "4      ...                                 0.0   \n",
       "\n",
       "Index  k__Bacteria;p__WWE1;c__[Cloacamonae];o__[Cloacamonales];f__;g__  \\\n",
       "0                                                    0.0                 \n",
       "1                                                    0.0                 \n",
       "2                                                    0.0                 \n",
       "3                                                    0.0                 \n",
       "4                                                    0.0                 \n",
       "\n",
       "Index  k__Bacteria;p__WWE1;c__[Cloacamonae];o__[Cloacamonales];f__[Cloacamonaceae];Other  \\\n",
       "0                                                    0.0                                   \n",
       "1                                                    0.0                                   \n",
       "2                                                    0.0                                   \n",
       "3                                                    0.0                                   \n",
       "4                                                    0.0                                   \n",
       "\n",
       "Index  k__Bacteria;p__ZB3;c__;o__;f__;g__  \\\n",
       "0                                     0.0   \n",
       "1                                     0.0   \n",
       "2                                     0.0   \n",
       "3                                     0.0   \n",
       "4                                     0.0   \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus  \\\n",
       "0                                                    0.0                                         \n",
       "1                                                    0.0                                         \n",
       "2                                                    0.0                                         \n",
       "3                                                    0.0                                         \n",
       "4                                                    0.0                                         \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__R18-435  \\\n",
       "0                                                    0.0                                     \n",
       "1                                                    0.0                                     \n",
       "2                                                    0.0                                     \n",
       "3                                                    0.0                                     \n",
       "4                                                    0.0                                     \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__  \\\n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42  \\\n",
       "0                                                    0.0                                \n",
       "1                                                    0.0                                \n",
       "2                                                    0.0                                \n",
       "3                                                    0.0                                \n",
       "4                                                    0.0                                \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera  \\\n",
       "0                                                    0.0                                    \n",
       "1                                                    0.0                                    \n",
       "2                                                    0.0                                    \n",
       "3                                                    0.0                                    \n",
       "4                                                    0.0                                    \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus  \n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "[5 rows x 1396 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Preprocess microbiome sheet 2\n",
    "microbiome_2 = pd.read_excel(\"PP Genus Level QIIME1.9 taxa tables.xlsx\", sheet_name=1,skiprows = 1)\n",
    "microbiome_2.dropna(how='all', axis=1, inplace=True)\n",
    "microbiome_2.rename(columns={\"#OTU ID\":\"Index\"}, inplace = True)\n",
    "microbiome_2 = microbiome_2.set_index('Index').transpose()\n",
    "microbiome_2.reset_index(inplace = True)\n",
    "microbiome_2.rename(columns={\"index\":\"SampleID\"}, inplace = True)\n",
    "microbiome_2.replace({'\\.': '-','01': '1','02': '2','03': '3','04': '4','05': '5','06': '6','07': '7','08': '8','09': '9'}, regex=True, inplace=True)\n",
    "print(\"Number of duplicates SampleID in raw microbiome sheet2:\", microbiome_2.SampleID.duplicated().sum()) \n",
    "print(\"Rows vs columns in sheet2:\", microbiome_2.shape)\n",
    "microbiome_2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of duplicates SampleID in raw microbiome sheet3: 0\n",
      "Rows vs columns in sheet3: (331, 1421)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Index</th>\n",
       "      <th>SampleID</th>\n",
       "      <th>Unassigned;Other;Other;Other;Other;Other</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__;o__;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MBGB;o__;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MCG;o__;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__Nitrosopumilus</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera</th>\n",
       "      <th>...</th>\n",
       "      <th>k__Bacteria;p__[Caldithrix];c__KSB1;o__GW-22;f__;g__</th>\n",
       "      <th>k__Bacteria;p__[Caldithrix];c__KSB1;o__Ucn15732;f__;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinobacterium</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;Other</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Meiothermus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>A6-1</td>\n",
       "      <td>0.008209</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000019</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000019</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>A6-10</td>\n",
       "      <td>0.010210</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.002054</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A6-11</td>\n",
       "      <td>0.000232</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A6-12</td>\n",
       "      <td>0.008197</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000087</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>A6-13</td>\n",
       "      <td>0.001797</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000143</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 1421 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Index SampleID  Unassigned;Other;Other;Other;Other;Other  \\\n",
       "0         A6-1                                  0.008209   \n",
       "1        A6-10                                  0.010210   \n",
       "2        A6-11                                  0.000232   \n",
       "3        A6-12                                  0.008197   \n",
       "4        A6-13                                  0.001797   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__;o__;f__;g__  \\\n",
       "0                                              0.0   \n",
       "1                                              0.0   \n",
       "2                                              0.0   \n",
       "3                                              0.0   \n",
       "4                                              0.0   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__  \\\n",
       "0                                                    0.0      \n",
       "1                                                    0.0      \n",
       "2                                                    0.0      \n",
       "3                                                    0.0      \n",
       "4                                                    0.0      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MBGB;o__;f__;g__  \\\n",
       "0                                                  0.0   \n",
       "1                                                  0.0   \n",
       "2                                                  0.0   \n",
       "3                                                  0.0   \n",
       "4                                                  0.0   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MCG;o__;f__;g__  \\\n",
       "0                                                 0.0   \n",
       "1                                                 0.0   \n",
       "2                                                 0.0   \n",
       "3                                                 0.0   \n",
       "4                                                 0.0   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__  \\\n",
       "0                                                    0.0                                      \n",
       "1                                                    0.0                                      \n",
       "2                                                    0.0                                      \n",
       "3                                                    0.0                                      \n",
       "4                                                    0.0                                      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__Nitrosopumilus  \\\n",
       "0                                                    0.0                                                    \n",
       "1                                                    0.0                                                    \n",
       "2                                                    0.0                                                    \n",
       "3                                                    0.0                                                    \n",
       "4                                                    0.0                                                    \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__  \\\n",
       "0                                                    0.0                               \n",
       "1                                                    0.0                               \n",
       "2                                                    0.0                               \n",
       "3                                                    0.0                               \n",
       "4                                                    0.0                               \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera  \\\n",
       "0                                               0.000019                                                                       \n",
       "1                                               0.002054                                                                       \n",
       "2                                               0.000000                                                                       \n",
       "3                                               0.000087                                                                       \n",
       "4                                               0.000143                                                                       \n",
       "\n",
       "Index  ...  k__Bacteria;p__[Caldithrix];c__KSB1;o__GW-22;f__;g__  \\\n",
       "0      ...                                                0.0      \n",
       "1      ...                                                0.0      \n",
       "2      ...                                                0.0      \n",
       "3      ...                                                0.0      \n",
       "4      ...                                                0.0      \n",
       "\n",
       "Index  k__Bacteria;p__[Caldithrix];c__KSB1;o__Ucn15732;f__;g__  \\\n",
       "0                                                    0.0         \n",
       "1                                                    0.0         \n",
       "2                                                    0.0         \n",
       "3                                                    0.0         \n",
       "4                                                    0.0         \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinobacterium  \\\n",
       "0                                                    0.0                                            \n",
       "1                                                    0.0                                            \n",
       "2                                                    0.0                                            \n",
       "3                                                    0.0                                            \n",
       "4                                                    0.0                                            \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus  \\\n",
       "0                                               0.000019                                         \n",
       "1                                               0.000000                                         \n",
       "2                                               0.000000                                         \n",
       "3                                               0.000000                                         \n",
       "4                                               0.000000                                         \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;Other  \\\n",
       "0                                                    0.0                              \n",
       "1                                                    0.0                              \n",
       "2                                                    0.0                              \n",
       "3                                                    0.0                              \n",
       "4                                                    0.0                              \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__  \\\n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42  \\\n",
       "0                                                    0.0                                \n",
       "1                                                    0.0                                \n",
       "2                                                    0.0                                \n",
       "3                                                    0.0                                \n",
       "4                                                    0.0                                \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera  \\\n",
       "0                                                    0.0                                    \n",
       "1                                                    0.0                                    \n",
       "2                                                    0.0                                    \n",
       "3                                                    0.0                                    \n",
       "4                                                    0.0                                    \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Meiothermus  \\\n",
       "0                                                    0.0                                 \n",
       "1                                                    0.0                                 \n",
       "2                                                    0.0                                 \n",
       "3                                                    0.0                                 \n",
       "4                                                    0.0                                 \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus  \n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "[5 rows x 1421 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Preprocess microbiome sheet 3\n",
    "microbiome_3 = pd.read_excel(\"PP Genus Level QIIME1.9 taxa tables.xlsx\", sheet_name=2,skiprows = 1)\n",
    "microbiome_3.dropna(how='all', axis=1, inplace=True)\n",
    "microbiome_3.rename(columns={\"#OTU ID\":\"Index\"}, inplace = True)\n",
    "microbiome_3 = microbiome_3.set_index('Index').transpose()\n",
    "microbiome_3.reset_index(inplace = True)\n",
    "microbiome_3.rename(columns={\"index\":\"SampleID\"}, inplace = True)\n",
    "microbiome_3.replace({'\\.': '-','01': '1','02': '2','03': '3','04': '4','05': '5','06': '6','07': '7','08': '8','09': '9'}, regex=True, inplace=True)\n",
    "print(\"Number of duplicates SampleID in raw microbiome sheet3:\", microbiome_3.SampleID.duplicated().sum()) \n",
    "print(\"Rows vs columns in sheet3:\", microbiome_3.shape)\n",
    "microbiome_3.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of duplicates SampleID in raw microbiome sheet4: 0\n",
      "Rows vs columns in sheet4: (333, 1454)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Index</th>\n",
       "      <th>SampleID</th>\n",
       "      <th>Unassigned;Other;Other;Other;Other;Other</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__Nitrosopumilus</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Halobacteria;o__Halobacteriales;f__Halobacteriaceae;g__Haladaptatus</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium</th>\n",
       "      <th>...</th>\n",
       "      <th>k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__;g__</th>\n",
       "      <th>k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__PRR-10;g__</th>\n",
       "      <th>k__Bacteria;p__WS4;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__WS5;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__[Caldithrix];c__KSB1;o__MSB-5B5;f__;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinobacterium</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>A9-1</td>\n",
       "      <td>0.002977</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000049</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>A9-2</td>\n",
       "      <td>0.002782</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A9-3</td>\n",
       "      <td>0.001857</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000055</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A9-4</td>\n",
       "      <td>0.000388</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000026</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>A9-5</td>\n",
       "      <td>0.000389</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 1454 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Index SampleID  Unassigned;Other;Other;Other;Other;Other  \\\n",
       "0         A9-1                                  0.002977   \n",
       "1         A9-2                                  0.002782   \n",
       "2         A9-3                                  0.001857   \n",
       "3         A9-4                                  0.000388   \n",
       "4         A9-5                                  0.000389   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__  \\\n",
       "0                                                    0.0      \n",
       "1                                                    0.0      \n",
       "2                                                    0.0      \n",
       "3                                                    0.0      \n",
       "4                                                    0.0      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__  \\\n",
       "0                                                    0.0                                      \n",
       "1                                                    0.0                                      \n",
       "2                                                    0.0                                      \n",
       "3                                                    0.0                                      \n",
       "4                                                    0.0                                      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__Nitrosopumilus  \\\n",
       "0                                                    0.0                                                    \n",
       "1                                                    0.0                                                    \n",
       "2                                                    0.0                                                    \n",
       "3                                                    0.0                                                    \n",
       "4                                                    0.0                                                    \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__  \\\n",
       "0                                                    0.0                               \n",
       "1                                                    0.0                               \n",
       "2                                                    0.0                               \n",
       "3                                                    0.0                               \n",
       "4                                                    0.0                               \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera  \\\n",
       "0                                               0.000000                                                                       \n",
       "1                                               0.000000                                                                       \n",
       "2                                               0.000055                                                                       \n",
       "3                                               0.000026                                                                       \n",
       "4                                               0.000035                                                                       \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Halobacteria;o__Halobacteriales;f__Halobacteriaceae;g__Haladaptatus  \\\n",
       "0                                                    0.0                                                    \n",
       "1                                                    0.0                                                    \n",
       "2                                                    0.0                                                    \n",
       "3                                                    0.0                                                    \n",
       "4                                                    0.0                                                    \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__  \\\n",
       "0                                                    0.0                                                 \n",
       "1                                                    0.0                                                 \n",
       "2                                                    0.0                                                 \n",
       "3                                                    0.0                                                 \n",
       "4                                                    0.0                                                 \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium  \\\n",
       "0                                                    0.0                                                                 \n",
       "1                                                    0.0                                                                 \n",
       "2                                                    0.0                                                                 \n",
       "3                                                    0.0                                                                 \n",
       "4                                                    0.0                                                                 \n",
       "\n",
       "Index  ...  k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__;g__  \\\n",
       "0      ...                                                0.0    \n",
       "1      ...                                                0.0    \n",
       "2      ...                                                0.0    \n",
       "3      ...                                                0.0    \n",
       "4      ...                                                0.0    \n",
       "\n",
       "Index  k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__PRR-10;g__  \\\n",
       "0                                                    0.0          \n",
       "1                                                    0.0          \n",
       "2                                                    0.0          \n",
       "3                                                    0.0          \n",
       "4                                                    0.0          \n",
       "\n",
       "Index  k__Bacteria;p__WS4;c__;o__;f__;g__  k__Bacteria;p__WS5;c__;o__;f__;g__  \\\n",
       "0                                     0.0                                 0.0   \n",
       "1                                     0.0                                 0.0   \n",
       "2                                     0.0                                 0.0   \n",
       "3                                     0.0                                 0.0   \n",
       "4                                     0.0                                 0.0   \n",
       "\n",
       "Index  k__Bacteria;p__[Caldithrix];c__KSB1;o__MSB-5B5;f__;g__  \\\n",
       "0                                                    0.0        \n",
       "1                                                    0.0        \n",
       "2                                                    0.0        \n",
       "3                                                    0.0        \n",
       "4                                                    0.0        \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinobacterium  \\\n",
       "0                                                    0.0                                            \n",
       "1                                                    0.0                                            \n",
       "2                                                    0.0                                            \n",
       "3                                                    0.0                                            \n",
       "4                                                    0.0                                            \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus  \\\n",
       "0                                               0.000049                                         \n",
       "1                                               0.000000                                         \n",
       "2                                               0.000000                                         \n",
       "3                                               0.000000                                         \n",
       "4                                               0.000000                                         \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42  \\\n",
       "0                                                    0.0                                \n",
       "1                                                    0.0                                \n",
       "2                                                    0.0                                \n",
       "3                                                    0.0                                \n",
       "4                                                    0.0                                \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera  \\\n",
       "0                                                    0.0                                    \n",
       "1                                                    0.0                                    \n",
       "2                                                    0.0                                    \n",
       "3                                                    0.0                                    \n",
       "4                                                    0.0                                    \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus  \n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "[5 rows x 1454 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Preprocess microbiome sheet 4\n",
    "microbiome_4 = pd.read_excel(\"PP Genus Level QIIME1.9 taxa tables.xlsx\", sheet_name=3,skiprows = 1)\n",
    "microbiome_4.dropna(how='all', axis=1, inplace=True)\n",
    "microbiome_4.rename(columns={\"#OTU ID\":\"Index\"}, inplace = True)\n",
    "microbiome_4 = microbiome_4.set_index('Index').transpose()\n",
    "microbiome_4.reset_index(inplace = True)\n",
    "microbiome_4.rename(columns={\"index\":\"SampleID\"}, inplace = True)\n",
    "microbiome_4.replace({'\\.': '-','01': '1','02': '2','03': '3','04': '4','05': '5','06': '6','07': '7','08': '8','09': '9'}, regex=True, inplace=True)\n",
    "print(\"Number of duplicates SampleID in raw microbiome sheet4:\", microbiome_4.SampleID.duplicated().sum()) \n",
    "print(\"Rows vs columns in sheet4:\", microbiome_4.shape)\n",
    "microbiome_4.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of duplicates SampleID in raw microbiome sheet5: 0\n",
      "Rows vs columns in sheet5: (336, 1443)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Index</th>\n",
       "      <th>SampleID</th>\n",
       "      <th>Unassigned;Other;Other;Other;Other;Other</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MCG;o__pGrfC26;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__DSEG;o__104A5;f__;g__</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium</th>\n",
       "      <th>...</th>\n",
       "      <th>k__Bacteria;p__WS4;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__WS5;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__ZB3;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__R18-435</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Meiothermus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>B5-1</td>\n",
       "      <td>0.001980</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000113</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>B5-2</td>\n",
       "      <td>0.001438</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000133</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000012</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>B5-3</td>\n",
       "      <td>0.001399</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000182</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>B5-4</td>\n",
       "      <td>0.001206</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000101</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>B5-5</td>\n",
       "      <td>0.001823</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000720</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 1443 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Index SampleID  Unassigned;Other;Other;Other;Other;Other  \\\n",
       "0         B5-1                                  0.001980   \n",
       "1         B5-2                                  0.001438   \n",
       "2         B5-3                                  0.001399   \n",
       "3         B5-4                                  0.001206   \n",
       "4         B5-5                                  0.001823   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__  \\\n",
       "0                                                    0.0      \n",
       "1                                                    0.0      \n",
       "2                                                    0.0      \n",
       "3                                                    0.0      \n",
       "4                                                    0.0      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MCG;o__pGrfC26;f__;g__  \\\n",
       "0                                                    0.0       \n",
       "1                                                    0.0       \n",
       "2                                                    0.0       \n",
       "3                                                    0.0       \n",
       "4                                                    0.0       \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__  \\\n",
       "0                                                    0.0                               \n",
       "1                                                    0.0                               \n",
       "2                                                    0.0                               \n",
       "3                                                    0.0                               \n",
       "4                                                    0.0                               \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__  \\\n",
       "0                                                    0.0                                              \n",
       "1                                                    0.0                                              \n",
       "2                                                    0.0                                              \n",
       "3                                                    0.0                                              \n",
       "4                                                    0.0                                              \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera  \\\n",
       "0                                               0.000113                                                                       \n",
       "1                                               0.000133                                                                       \n",
       "2                                               0.000182                                                                       \n",
       "3                                               0.000101                                                                       \n",
       "4                                               0.000720                                                                       \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__DSEG;o__104A5;f__;g__  \\\n",
       "0                                                    0.0      \n",
       "1                                                    0.0      \n",
       "2                                                    0.0      \n",
       "3                                                    0.0      \n",
       "4                                                    0.0      \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__  \\\n",
       "0                                                    0.0                                                 \n",
       "1                                                    0.0                                                 \n",
       "2                                                    0.0                                                 \n",
       "3                                                    0.0                                                 \n",
       "4                                                    0.0                                                 \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium  \\\n",
       "0                                                    0.0                                                                 \n",
       "1                                                    0.0                                                                 \n",
       "2                                                    0.0                                                                 \n",
       "3                                                    0.0                                                                 \n",
       "4                                                    0.0                                                                 \n",
       "\n",
       "Index  ...  k__Bacteria;p__WS4;c__;o__;f__;g__  \\\n",
       "0      ...                                 0.0   \n",
       "1      ...                                 0.0   \n",
       "2      ...                                 0.0   \n",
       "3      ...                                 0.0   \n",
       "4      ...                                 0.0   \n",
       "\n",
       "Index  k__Bacteria;p__WS5;c__;o__;f__;g__  k__Bacteria;p__ZB3;c__;o__;f__;g__  \\\n",
       "0                                     0.0                                 0.0   \n",
       "1                                     0.0                                 0.0   \n",
       "2                                     0.0                                 0.0   \n",
       "3                                     0.0                                 0.0   \n",
       "4                                     0.0                                 0.0   \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus  \\\n",
       "0                                               0.000000                                         \n",
       "1                                               0.000012                                         \n",
       "2                                               0.000000                                         \n",
       "3                                               0.000000                                         \n",
       "4                                               0.000000                                         \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__R18-435  \\\n",
       "0                                                    0.0                                     \n",
       "1                                                    0.0                                     \n",
       "2                                                    0.0                                     \n",
       "3                                                    0.0                                     \n",
       "4                                                    0.0                                     \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__  \\\n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42  \\\n",
       "0                                                    0.0                                \n",
       "1                                                    0.0                                \n",
       "2                                                    0.0                                \n",
       "3                                                    0.0                                \n",
       "4                                                    0.0                                \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera  \\\n",
       "0                                                    0.0                                    \n",
       "1                                                    0.0                                    \n",
       "2                                                    0.0                                    \n",
       "3                                                    0.0                                    \n",
       "4                                                    0.0                                    \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Meiothermus  \\\n",
       "0                                                    0.0                                 \n",
       "1                                                    0.0                                 \n",
       "2                                                    0.0                                 \n",
       "3                                                    0.0                                 \n",
       "4                                                    0.0                                 \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Thermus  \n",
       "0                                                    0.0                            \n",
       "1                                                    0.0                            \n",
       "2                                                    0.0                            \n",
       "3                                                    0.0                            \n",
       "4                                                    0.0                            \n",
       "\n",
       "[5 rows x 1443 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Preprocess microbiome sheet 5\n",
    "microbiome_5 = pd.read_excel(\"PP Genus Level QIIME1.9 taxa tables.xlsx\", sheet_name=4,skiprows = 1)\n",
    "microbiome_5.dropna(how='all', axis=1, inplace=True)\n",
    "microbiome_5.rename(columns={\"#OTU ID\":\"Index\"}, inplace = True)\n",
    "microbiome_5 = microbiome_5.set_index('Index').transpose()\n",
    "microbiome_5.reset_index(inplace = True)\n",
    "microbiome_5.rename(columns={\"index\":\"SampleID\"}, inplace = True)\n",
    "microbiome_5.replace({'\\.': '-','01': '1','02': '2','03': '3','04': '4','05': '5','06': '6','07': '7','08': '8','09': '9'}, regex=True, inplace=True)\n",
    "print(\"Number of duplicates SampleID in raw microbiome sheet5:\", microbiome_5.SampleID.duplicated().sum()) \n",
    "print(\"Rows vs columns in sheet5:\", microbiome_5.shape)\n",
    "microbiome_5.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of duplicates SampleID in raw microbiome sheet6: 0\n",
      "Rows vs columns in sheet6: (318, 1380)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Index</th>\n",
       "      <th>SampleID</th>\n",
       "      <th>Unassigned;Other;Other;Other;Other;Other</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__</th>\n",
       "      <th>k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;Other</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium</th>\n",
       "      <th>k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobrevibacter</th>\n",
       "      <th>...</th>\n",
       "      <th>k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__PRR-10;g__</th>\n",
       "      <th>k__Bacteria;p__WS4;c__;o__;f__;g__</th>\n",
       "      <th>k__Bacteria;p__WWE1;c__[Cloacamonae];o__[Cloacamonales];f__SHA-116;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinobacterium</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__R18-435</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera</th>\n",
       "      <th>k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Meiothermus</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>E1-26</td>\n",
       "      <td>0.007763</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.003262</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000015</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000332</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000045</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000076</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>J1-1</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>J1-2</td>\n",
       "      <td>0.001813</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000025</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000124</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>J1-3</td>\n",
       "      <td>0.001437</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000034</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000103</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>J1-4</td>\n",
       "      <td>0.000923</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000142</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000071</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 1380 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Index SampleID  Unassigned;Other;Other;Other;Other;Other  \\\n",
       "0        E1-26                                  0.007763   \n",
       "1         J1-1                                  0.000743   \n",
       "2         J1-2                                  0.001813   \n",
       "3         J1-3                                  0.001437   \n",
       "4         J1-4                                  0.000923   \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__MBGA;o__NRP-J;f__;g__  \\\n",
       "0                                                    0.0      \n",
       "1                                                    0.0      \n",
       "2                                                    0.0      \n",
       "3                                                    0.0      \n",
       "4                                                    0.0      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__Cenarchaeaceae;g__  \\\n",
       "0                                                    0.0                                      \n",
       "1                                                    0.0                                      \n",
       "2                                                    0.0                                      \n",
       "3                                                    0.0                                      \n",
       "4                                                    0.0                                      \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Cenarchaeales;f__SAGMA-X;g__  \\\n",
       "0                                                    0.0                               \n",
       "1                                                    0.0                               \n",
       "2                                                    0.0                               \n",
       "3                                                    0.0                               \n",
       "4                                                    0.0                               \n",
       "\n",
       "Index  k__Archaea;p__Crenarchaeota;c__Thaumarchaeota;o__Nitrososphaerales;f__Nitrososphaeraceae;g__Candidatus Nitrososphaera  \\\n",
       "0                                               0.003262                                                                       \n",
       "1                                               0.000000                                                                       \n",
       "2                                               0.000025                                                                       \n",
       "3                                               0.000034                                                                       \n",
       "4                                               0.000142                                                                       \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;Other  \\\n",
       "0                                                    0.0                                                   \n",
       "1                                                    0.0                                                   \n",
       "2                                                    0.0                                                   \n",
       "3                                                    0.0                                                   \n",
       "4                                                    0.0                                                   \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__  \\\n",
       "0                                                    0.0                                                 \n",
       "1                                                    0.0                                                 \n",
       "2                                                    0.0                                                 \n",
       "3                                                    0.0                                                 \n",
       "4                                                    0.0                                                 \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobacterium  \\\n",
       "0                                                    0.0                                                                 \n",
       "1                                                    0.0                                                                 \n",
       "2                                                    0.0                                                                 \n",
       "3                                                    0.0                                                                 \n",
       "4                                                    0.0                                                                 \n",
       "\n",
       "Index  k__Archaea;p__Euryarchaeota;c__Methanobacteria;o__Methanobacteriales;f__Methanobacteriaceae;g__Methanobrevibacter  \\\n",
       "0                                               0.000015                                                                   \n",
       "1                                               0.000000                                                                   \n",
       "2                                               0.000124                                                                   \n",
       "3                                               0.000103                                                                   \n",
       "4                                               0.000071                                                                   \n",
       "\n",
       "Index  ...  k__Bacteria;p__WS3;c__PRR-12;o__Sediment-1;f__PRR-10;g__  \\\n",
       "0      ...                                                0.0          \n",
       "1      ...                                                0.0          \n",
       "2      ...                                                0.0          \n",
       "3      ...                                                0.0          \n",
       "4      ...                                                0.0          \n",
       "\n",
       "Index  k__Bacteria;p__WS4;c__;o__;f__;g__  \\\n",
       "0                                     0.0   \n",
       "1                                     0.0   \n",
       "2                                     0.0   \n",
       "3                                     0.0   \n",
       "4                                     0.0   \n",
       "\n",
       "Index  k__Bacteria;p__WWE1;c__[Cloacamonae];o__[Cloacamonales];f__SHA-116;g__  \\\n",
       "0                                                    0.0                        \n",
       "1                                                    0.0                        \n",
       "2                                                    0.0                        \n",
       "3                                                    0.0                        \n",
       "4                                                    0.0                        \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinobacterium  \\\n",
       "0                                                    0.0                                            \n",
       "1                                                    0.0                                            \n",
       "2                                                    0.0                                            \n",
       "3                                                    0.0                                            \n",
       "4                                                    0.0                                            \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__Deinococcus  \\\n",
       "0                                               0.000332                                         \n",
       "1                                               0.000000                                         \n",
       "2                                               0.000000                                         \n",
       "3                                               0.000000                                         \n",
       "4                                               0.000000                                         \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Deinococcaceae;g__R18-435  \\\n",
       "0                                                    0.0                                     \n",
       "1                                                    0.0                                     \n",
       "2                                                    0.0                                     \n",
       "3                                                    0.0                                     \n",
       "4                                                    0.0                                     \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__  \\\n",
       "0                                               0.000045                            \n",
       "1                                               0.000000                            \n",
       "2                                               0.000000                            \n",
       "3                                               0.000000                            \n",
       "4                                               0.000000                            \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__B-42  \\\n",
       "0                                                    0.0                                \n",
       "1                                                    0.0                                \n",
       "2                                                    0.0                                \n",
       "3                                                    0.0                                \n",
       "4                                                    0.0                                \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Deinococcales;f__Trueperaceae;g__Truepera  \\\n",
       "0                                               0.000076                                    \n",
       "1                                               0.000000                                    \n",
       "2                                               0.000000                                    \n",
       "3                                               0.000000                                    \n",
       "4                                               0.000000                                    \n",
       "\n",
       "Index  k__Bacteria;p__[Thermi];c__Deinococci;o__Thermales;f__Thermaceae;g__Meiothermus  \n",
       "0                                                    0.0                                \n",
       "1                                                    0.0                                \n",
       "2                                                    0.0                                \n",
       "3                                                    0.0                                \n",
       "4                                                    0.0                                \n",
       "\n",
       "[5 rows x 1380 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Preprocess microbiome sheet 6\n",
    "microbiome_6 = pd.read_excel(\"PP Genus Level QIIME1.9 taxa tables.xlsx\", sheet_name=5,skiprows = 1)\n",
    "microbiome_6.dropna(how='all', axis=1, inplace=True)\n",
    "microbiome_6.rename(columns={\"#OTU ID\":\"Index\"}, inplace = True)\n",
    "microbiome_6 = microbiome_6.set_index('Index').transpose()\n",
    "microbiome_6.reset_index(inplace = True)\n",
    "microbiome_6.rename(columns={\"index\":\"SampleID\"}, inplace = True)\n",
    "microbiome_6.replace({'\\.': '-','01': '1','02': '2','03': '3','04': '4','05': '5','06': '6','07': '7','08': '8','09': '9'}, regex=True, inplace=True)\n",
    "print(\"Number of duplicates SampleID in raw microbiome sheet6:\", microbiome_6.SampleID.duplicated().sum()) \n",
    "print(\"Rows vs columns in sheet6:\", microbiome_6.shape)\n",
    "microbiome_6.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of duplicates SampleID after merging all sheets: 6\n",
      "Number of duplicates SampleID after drop function: 0\n",
      "Microbiome Rows (SampleID) vs Columns (OTUS): (1990, 1825)\n"
     ]
    }
   ],
   "source": [
    "#Merged the 6 processed sheets\n",
    "microbiome = pd.concat([microbiome_1,microbiome_2,microbiome_3,microbiome_4,microbiome_5,microbiome_6], axis=0, ignore_index=True)\n",
    "print(\"Number of duplicates SampleID after merging all sheets:\", microbiome.SampleID.duplicated().sum()) \n",
    "microbiome.drop_duplicates(subset=\"SampleID\", inplace=True)\n",
    "print(\"Number of duplicates SampleID after drop function:\", microbiome.SampleID.duplicated().sum()) \n",
    "microbiome.fillna(0, inplace=True)\n",
    "print(\"Microbiome Rows (SampleID) vs Columns (OTUS):\", microbiome.shape)\n",
    "microbiome.head()\n",
    "\n",
    "#microbiome.to_csv(\"merged_microbiome.csv\")\n",
    "\n",
    "#drop listeria at genus level as it contains no information\n",
    "microbiome.drop('k__Bacteria;p__Firmicutes;c__Bacilli;o__Bacillales;f__Listeriaceae;g__Listeria', axis=1, inplace=True)\n",
    "#Listeria detectection was at the family level, rename as genus for analysis purpose\n",
    "microbiome.rename(columns = {'k__Bacteria;p__Firmicutes;c__Bacilli;o__Bacillales;f__Listeriaceae;Other':\n",
    "                                 'k__Bacteria;p__Firmicutes;c__Bacilli;o__Bacillales;f__Listeriaceae;g__Listeria'},inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Reduce Microbiome dataset dimension to unique genera"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unique Taxonomy\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Index\n",
       "Kingdom      3\n",
       "Phylum      63\n",
       "Class      176\n",
       "Order      305\n",
       "Family     389\n",
       "Genus      877\n",
       "dtype: int64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Check number of unique taxonomy at each of the 6 levels\n",
    "microbiome.rename(columns={\"SampleID\":\"Index\"}, inplace = True)\n",
    "microbiome = microbiome.set_index('Index').transpose()\n",
    "microbiome.reset_index(inplace = True)\n",
    "microbiome.rename(columns={\"Index\":\"OTU\"}, inplace = True)\n",
    "\n",
    "microbiomecopy = microbiome.copy()\n",
    "microbiomecopy[['Kingdom','Phylum','Class','Order','Family','Genus']] = microbiomecopy[\"OTU\"].str.split(pat=\";\", expand=True)\n",
    "microbiomecopy = microbiomecopy[['Kingdom','Phylum','Class','Order','Family','Genus']]\n",
    "print(\"Unique Taxonomy\")\n",
    "microbiomecopy.nunique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Listeria detectection was at the family level, rename as genus for analysis purpose\n",
    "microbiomecopy.rename(columns = {'k__Bacteria;p__Firmicutes;c__Bacilli;o__Bacillales;f__Listeriaceae;Other':\n",
    "                                 'k__Bacteria;p__Firmicutes;c__Bacilli;o__Bacillales;f__Listeriaceae;g__Listeria'},inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unique Kingdom to Genus= 1823\n",
      "Unique Kingdom to Family= 842\n",
      "Unique Kingdom to Order= 479\n",
      "Unique Kingdom to Class= 176\n"
     ]
    }
   ],
   "source": [
    "#Check uniques from kingdom down to lower levels\n",
    "microbiomecopy[\"Genus\"] = microbiomecopy[\"Kingdom\"]+\";\"+microbiomecopy[\"Phylum\"]+\";\"+ microbiomecopy[\"Class\"]+\";\"+microbiomecopy[\"Order\"]+\";\"+microbiomecopy[\"Family\"]+\";\"+microbiomecopy[\"Genus\"]\n",
    "print(\"Unique Kingdom to Genus=\", microbiomecopy.Genus.nunique())\n",
    "\n",
    "microbiomecopy[\"Family\"] = microbiomecopy[\"Kingdom\"]+\";\"+microbiomecopy[\"Phylum\"]+\";\"+ microbiomecopy[\"Class\"]+\";\"+microbiomecopy[\"Order\"]+\";\"+microbiomecopy[\"Family\"]\n",
    "print(\"Unique Kingdom to Family=\", microbiomecopy.Family.nunique())\n",
    "\n",
    "microbiomecopy[\"Order\"] = microbiomecopy[\"Kingdom\"]+\";\"+microbiomecopy[\"Phylum\"]+\";\"+ microbiomecopy[\"Class\"]+\";\"+microbiomecopy[\"Order\"]\n",
    "print(\"Unique Kingdom to Order=\", microbiomecopy.Order.nunique())\n",
    "\n",
    "microbiomecopy[\"Order\"] = microbiomecopy[\"Kingdom\"]+\";\"+microbiomecopy[\"Phylum\"]+\";\"+ microbiomecopy[\"Class\"]\n",
    "print(\"Unique Kingdom to Class=\", microbiomecopy.Class.nunique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Out of 1824 genera, unique ones = 877 , the rest are just repeated g_ or Other\n"
     ]
    }
   ],
   "source": [
    "#Compute unique genera\n",
    "microbiomecopy[['Kingdom','Phylum','Class','Order','Family','Genus']] = microbiomecopy[\"Genus\"].str.split(pat=\";\", expand=True)\n",
    "microbiome[\"Genus\"] =  microbiomecopy[\"Genus\"]\n",
    "print(\"Out of 1824 genera, unique ones =\",microbiome.Genus.nunique(),\", the rest are just repeated g_ or Other\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Genus</th>\n",
       "      <th>SampleID</th>\n",
       "      <th>Other</th>\n",
       "      <th>g__</th>\n",
       "      <th>g__02d06</th>\n",
       "      <th>g__1-68</th>\n",
       "      <th>g__4-29</th>\n",
       "      <th>g__5-7N15</th>\n",
       "      <th>g__A17</th>\n",
       "      <th>g__Acaryochloris</th>\n",
       "      <th>g__Acetobacter</th>\n",
       "      <th>...</th>\n",
       "      <th>g__cc_115</th>\n",
       "      <th>g__gut</th>\n",
       "      <th>g__heteroC45_4W</th>\n",
       "      <th>g__p-75-a5</th>\n",
       "      <th>g__ph2</th>\n",
       "      <th>g__rc4-4</th>\n",
       "      <th>g__u114</th>\n",
       "      <th>g__vadinCA02</th>\n",
       "      <th>g__vadinCA11</th>\n",
       "      <th>g__vadinHB04</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>A1-1</td>\n",
       "      <td>0.022448</td>\n",
       "      <td>0.120647</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000277</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000092</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>A1-10</td>\n",
       "      <td>0.052181</td>\n",
       "      <td>0.533922</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.001092</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000020</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000195</td>\n",
       "      <td>0.000020</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A1-11</td>\n",
       "      <td>0.006476</td>\n",
       "      <td>0.023213</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000015</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000015</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000029</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A1-12</td>\n",
       "      <td>0.189901</td>\n",
       "      <td>0.088024</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000020</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000221</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000020</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000040</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000080</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>A1-13</td>\n",
       "      <td>0.106045</td>\n",
       "      <td>0.343929</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.001824</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000261</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000782</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 878 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Genus SampleID     Other       g__  g__02d06  g__1-68   g__4-29  g__5-7N15  \\\n",
       "0         A1-1  0.022448  0.120647       0.0      0.0  0.000000        0.0   \n",
       "1        A1-10  0.052181  0.533922       0.0      0.0  0.000000        0.0   \n",
       "2        A1-11  0.006476  0.023213       0.0      0.0  0.000015        0.0   \n",
       "3        A1-12  0.189901  0.088024       0.0      0.0  0.000000        0.0   \n",
       "4        A1-13  0.106045  0.343929       0.0      0.0  0.000000        0.0   \n",
       "\n",
       "Genus    g__A17  g__Acaryochloris  g__Acetobacter  ...  g__cc_115  g__gut  \\\n",
       "0      0.000000               0.0             0.0  ...   0.000277     0.0   \n",
       "1      0.001092               0.0             0.0  ...   0.000020     0.0   \n",
       "2      0.000000               0.0             0.0  ...   0.000000     0.0   \n",
       "3      0.000020               0.0             0.0  ...   0.000221     0.0   \n",
       "4      0.000000               0.0             0.0  ...   0.001824     0.0   \n",
       "\n",
       "Genus  g__heteroC45_4W  g__p-75-a5    g__ph2  g__rc4-4  g__u114  g__vadinCA02  \\\n",
       "0             0.000000    0.000000  0.000000       0.0      0.0           0.0   \n",
       "1             0.000195    0.000020  0.000000       0.0      0.0           0.0   \n",
       "2             0.000000    0.000000  0.000015       0.0      0.0           0.0   \n",
       "3             0.000020    0.000000  0.000040       0.0      0.0           0.0   \n",
       "4             0.000000    0.000261  0.000000       0.0      0.0           0.0   \n",
       "\n",
       "Genus  g__vadinCA11  g__vadinHB04  \n",
       "0          0.000092           0.0  \n",
       "1          0.000000           0.0  \n",
       "2          0.000029           0.0  \n",
       "3          0.000080           0.0  \n",
       "4          0.000782           0.0  \n",
       "\n",
       "[5 rows x 878 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#make new dataframe with only unique microbiome\n",
    "microbiome = microbiome.groupby([\"Genus\"]).sum()\n",
    "microbiome = microbiome.transpose()\n",
    "microbiome.reset_index(inplace = True)\n",
    "microbiome.rename(columns={\"Index\":\"SampleID\"}, inplace = True)\n",
    "microbiome.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Microbiome microbiome SampleID vs OTUs'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "(1990, 878)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sum of rows in microbiome\n",
      " 0    1.0\n",
      "1    1.0\n",
      "2    1.0\n",
      "3    1.0\n",
      "4    1.0\n",
      "5    1.0\n",
      "6    1.0\n",
      "7    1.0\n",
      "8    1.0\n",
      "9    1.0\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "#Check number of samples vs microbiome\n",
    "display(\"Microbiome microbiome SampleID vs OTUs\", microbiome.shape)\n",
    "#check to see if sum of microbiome rows equal\n",
    "print(\"Sum of rows in microbiome\\n\",microbiome.sum(axis=1).round(2).head(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Genus</th>\n",
       "      <th>Pathogen_Salmonella</th>\n",
       "      <th>Pathogen_Campy</th>\n",
       "      <th>Pathogen_Listeria</th>\n",
       "      <th>Pathogen_Ecoli</th>\n",
       "      <th>Probiotic_Bacillus</th>\n",
       "      <th>Probiotic_Bifidobacterium</th>\n",
       "      <th>Probiotic_Clostridium</th>\n",
       "      <th>Probiotic_Enterococcus</th>\n",
       "      <th>Probiotic_Lactobacillus</th>\n",
       "      <th>Probiotic_Pediococcus</th>\n",
       "      <th>Probiotic_Propionibacterium</th>\n",
       "      <th>Probiotic_Streptococcus</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.001016</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000185</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000277</td>\n",
       "      <td>0.003695</td>\n",
       "      <td>0.744480</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000370</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.000078</td>\n",
       "      <td>0.000683</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.027739</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.005891</td>\n",
       "      <td>0.000468</td>\n",
       "      <td>0.021360</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000156</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.003289</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000614</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000336</td>\n",
       "      <td>0.001988</td>\n",
       "      <td>0.923812</td>\n",
       "      <td>0.000102</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.001579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000321</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000662</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000461</td>\n",
       "      <td>0.003248</td>\n",
       "      <td>0.645898</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000521</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.001563</td>\n",
       "      <td>0.001303</td>\n",
       "      <td>0.188640</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.001563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1985</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.062076</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.002807</td>\n",
       "      <td>0.000051</td>\n",
       "      <td>0.002092</td>\n",
       "      <td>0.000026</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1986</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.031484</td>\n",
       "      <td>0.000030</td>\n",
       "      <td>0.003245</td>\n",
       "      <td>0.000091</td>\n",
       "      <td>0.001675</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000060</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1987</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000013</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.029380</td>\n",
       "      <td>0.000038</td>\n",
       "      <td>0.001013</td>\n",
       "      <td>0.000139</td>\n",
       "      <td>0.001444</td>\n",
       "      <td>0.000025</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1988</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.025266</td>\n",
       "      <td>0.000082</td>\n",
       "      <td>0.002358</td>\n",
       "      <td>0.000082</td>\n",
       "      <td>0.001284</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000070</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1989</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.042847</td>\n",
       "      <td>0.000056</td>\n",
       "      <td>0.002449</td>\n",
       "      <td>0.000197</td>\n",
       "      <td>0.004504</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.207702</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1990 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Genus  Pathogen_Salmonella  Pathogen_Campy  Pathogen_Listeria  Pathogen_Ecoli  \\\n",
       "0                 0.000000        0.001016                0.0             0.0   \n",
       "1                 0.000078        0.000683                0.0             0.0   \n",
       "2                 0.000000        0.003289                0.0             0.0   \n",
       "3                 0.000000        0.000321                0.0             0.0   \n",
       "4                 0.000000        0.000521                0.0             0.0   \n",
       "...                    ...             ...                ...             ...   \n",
       "1985              0.000000        0.000000                0.0             0.0   \n",
       "1986              0.000000        0.000000                0.0             0.0   \n",
       "1987              0.000000        0.000013                0.0             0.0   \n",
       "1988              0.000000        0.000000                0.0             0.0   \n",
       "1989              0.000000        0.000000                0.0             0.0   \n",
       "\n",
       "Genus  Probiotic_Bacillus  Probiotic_Bifidobacterium  Probiotic_Clostridium  \\\n",
       "0                0.000185                   0.000000               0.000277   \n",
       "1                0.027739                   0.000000               0.005891   \n",
       "2                0.000614                   0.000000               0.000336   \n",
       "3                0.000662                   0.000000               0.000461   \n",
       "4                0.000000                   0.000000               0.001563   \n",
       "...                   ...                        ...                    ...   \n",
       "1985             0.062076                   0.000000               0.002807   \n",
       "1986             0.031484                   0.000030               0.003245   \n",
       "1987             0.029380                   0.000038               0.001013   \n",
       "1988             0.025266                   0.000082               0.002358   \n",
       "1989             0.042847                   0.000056               0.002449   \n",
       "\n",
       "Genus  Probiotic_Enterococcus  Probiotic_Lactobacillus  Probiotic_Pediococcus  \\\n",
       "0                    0.003695                 0.744480               0.000000   \n",
       "1                    0.000468                 0.021360               0.000000   \n",
       "2                    0.001988                 0.923812               0.000102   \n",
       "3                    0.003248                 0.645898               0.000000   \n",
       "4                    0.001303                 0.188640               0.000000   \n",
       "...                       ...                      ...                    ...   \n",
       "1985                 0.000051                 0.002092               0.000026   \n",
       "1986                 0.000091                 0.001675               0.000000   \n",
       "1987                 0.000139                 0.001444               0.000025   \n",
       "1988                 0.000082                 0.001284               0.000000   \n",
       "1989                 0.000197                 0.004504               0.000000   \n",
       "\n",
       "Genus  Probiotic_Propionibacterium  Probiotic_Streptococcus  \n",
       "0                              0.0                 0.000370  \n",
       "1                              0.0                 0.000156  \n",
       "2                              0.0                 0.001579  \n",
       "3                              0.0                 0.000321  \n",
       "4                              0.0                 0.001563  \n",
       "...                            ...                      ...  \n",
       "1985                           0.0                 0.000077  \n",
       "1986                           0.0                 0.000060  \n",
       "1987                           0.0                 0.000025  \n",
       "1988                           0.0                 0.000070  \n",
       "1989                           0.0                 0.207702  \n",
       "\n",
       "[1990 rows x 12 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#rename microbiome pathogens and probiotics for quick identification during analysis\n",
    "microbiome.rename(columns = {'g__Salmonella':'Pathogen_Salmonella',\n",
    "                   'g__Campylobacter':'Pathogen_Campy',\n",
    "                   'g__Listeria':'Pathogen_Listeria',\n",
    "                   'g__Escherichia':'Pathogen_Ecoli',\n",
    "                   \n",
    "                   'g__Bacillus': 'Probiotic_Bacillus',\n",
    "                   'g__Bifidobacterium': 'Probiotic_Bifidobacterium',\n",
    "                   'g__Clostridium':'Probiotic_Clostridium',\n",
    "                   'g__Enterococcus':'Probiotic_Enterococcus',\n",
    "                   'g__Lactobacillus':'Probiotic_Lactobacillus',\n",
    "                   'g__Pediococcus':'Probiotic_Pediococcus',\n",
    "                   'g__Propionibacterium':'Probiotic_Propionibacterium', \n",
    "                   'g__Streptococcus':'Probiotic_Streptococcus'}, inplace=True)\n",
    "\n",
    "#Check that pathogens and probiotics columns are found and rename was correctly done\n",
    "microbiome[['Pathogen_Salmonella', 'Pathogen_Campy','Pathogen_Listeria','Pathogen_Ecoli',\n",
    "        \n",
    "       'Probiotic_Bacillus','Probiotic_Bifidobacterium','Probiotic_Clostridium','Probiotic_Enterococcus',\n",
    "       'Probiotic_Lactobacillus','Probiotic_Pediococcus','Probiotic_Propionibacterium','Probiotic_Streptococcus']]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Load and process poultry dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Number of duplicates SampleID in raw poultry data:'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of EcoliLog10CFU/mL cells with missing value in raw data= 9\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SampleID</th>\n",
       "      <th>Farm</th>\n",
       "      <th>AvgNumBirds</th>\n",
       "      <th>AvgNumFlocks</th>\n",
       "      <th>YearsFarming</th>\n",
       "      <th>EggSource</th>\n",
       "      <th>BroodBedding</th>\n",
       "      <th>BroodFeed</th>\n",
       "      <th>BrGMOFree</th>\n",
       "      <th>BrSoyFree</th>\n",
       "      <th>...</th>\n",
       "      <th>Mn</th>\n",
       "      <th>Mo</th>\n",
       "      <th>Na</th>\n",
       "      <th>Ni</th>\n",
       "      <th>P</th>\n",
       "      <th>Pb</th>\n",
       "      <th>S</th>\n",
       "      <th>Si</th>\n",
       "      <th>Zn</th>\n",
       "      <th>Ecoli</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>E2-1</td>\n",
       "      <td>E</td>\n",
       "      <td>600</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>MM</td>\n",
       "      <td>WS</td>\n",
       "      <td>SS</td>\n",
       "      <td>N</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>173.72</td>\n",
       "      <td>1.29</td>\n",
       "      <td>642.021</td>\n",
       "      <td>1.563</td>\n",
       "      <td>3977.07</td>\n",
       "      <td>1.859</td>\n",
       "      <td>1091.660</td>\n",
       "      <td>863.766</td>\n",
       "      <td>128.039</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>E2-2</td>\n",
       "      <td>E</td>\n",
       "      <td>600</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>MM</td>\n",
       "      <td>WS</td>\n",
       "      <td>SS</td>\n",
       "      <td>N</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>128.763</td>\n",
       "      <td>1.00</td>\n",
       "      <td>477.242</td>\n",
       "      <td>1.156</td>\n",
       "      <td>2696.48</td>\n",
       "      <td>1.739</td>\n",
       "      <td>822.626</td>\n",
       "      <td>534.3</td>\n",
       "      <td>92.869</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>E2-3</td>\n",
       "      <td>E</td>\n",
       "      <td>600</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>MM</td>\n",
       "      <td>WS</td>\n",
       "      <td>SS</td>\n",
       "      <td>N</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>162.249</td>\n",
       "      <td>1.278</td>\n",
       "      <td>629.54</td>\n",
       "      <td>1.384</td>\n",
       "      <td>3385.39</td>\n",
       "      <td>2.304</td>\n",
       "      <td>1068.750</td>\n",
       "      <td>546.466</td>\n",
       "      <td>136.083</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>E2-4</td>\n",
       "      <td>E</td>\n",
       "      <td>600</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>MM</td>\n",
       "      <td>WS</td>\n",
       "      <td>SS</td>\n",
       "      <td>N</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>155.933</td>\n",
       "      <td>2.225</td>\n",
       "      <td>602.215</td>\n",
       "      <td>2.575</td>\n",
       "      <td>2872.70</td>\n",
       "      <td>13.079</td>\n",
       "      <td>878.725</td>\n",
       "      <td>242.178</td>\n",
       "      <td>103.2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>E2-5</td>\n",
       "      <td>E</td>\n",
       "      <td>600</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>MM</td>\n",
       "      <td>WS</td>\n",
       "      <td>SS</td>\n",
       "      <td>N</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>131.556</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1473.75</td>\n",
       "      <td>1.73</td>\n",
       "      <td>2175.49</td>\n",
       "      <td>5.522</td>\n",
       "      <td>1015.680</td>\n",
       "      <td>157.706</td>\n",
       "      <td>125.868</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 162 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  SampleID Farm  AvgNumBirds  AvgNumFlocks  YearsFarming EggSource  \\\n",
       "0     E2-1    E          600             4            14        MM   \n",
       "1     E2-2    E          600             4            14        MM   \n",
       "2     E2-3    E          600             4            14        MM   \n",
       "3     E2-4    E          600             4            14        MM   \n",
       "4     E2-5    E          600             4            14        MM   \n",
       "\n",
       "  BroodBedding BroodFeed BrGMOFree BrSoyFree  ...       Mn     Mo       Na  \\\n",
       "0           WS        SS         N         N  ...   173.72   1.29  642.021   \n",
       "1           WS        SS         N         N  ...  128.763   1.00  477.242   \n",
       "2           WS        SS         N         N  ...  162.249  1.278   629.54   \n",
       "3           WS        SS         N         N  ...  155.933  2.225  602.215   \n",
       "4           WS        SS         N         N  ...  131.556   1.00  1473.75   \n",
       "\n",
       "      Ni        P      Pb         S       Si       Zn Ecoli  \n",
       "0  1.563  3977.07   1.859  1091.660  863.766  128.039     1  \n",
       "1  1.156  2696.48   1.739   822.626    534.3   92.869     1  \n",
       "2  1.384  3385.39   2.304  1068.750  546.466  136.083     1  \n",
       "3  2.575  2872.70  13.079   878.725  242.178    103.2     1  \n",
       "4   1.73  2175.49   5.522  1015.680  157.706  125.868     1  \n",
       "\n",
       "[5 rows x 162 columns]"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#read-in the raw poultry dataset\n",
    "poultry = pd.read_excel(\"Pastured Poultry Summary DB 03162020.xlsx\")\n",
    "\n",
    "\n",
    "#SOME PREPROCESSING STEPS\n",
    "\n",
    "#Find number duplicates\n",
    "display(\"Number of duplicates SampleID in raw poultry data:\", poultry.SampleID.duplicated().sum()) \n",
    "\n",
    "#Drop the duplicates\n",
    "poultry.drop_duplicates(subset=\"SampleID\", inplace=True)\n",
    "\n",
    "# #Confirm no duplicates after drop function\n",
    "#display(\"Number of duplicates SampleID in poultry data now:\", poultry.SampleID.duplicated().sum()) \n",
    "\n",
    "# save_SampleID = poultry[\"SampleID\"]\n",
    "\n",
    "#SampleType in the original file\n",
    "#display(\"SampleType in the raw file \",poultry.SampleType.value_counts())\n",
    "\n",
    "#remove special characters * and < found in poultry file \n",
    "poultry.replace({'\\*': '','\\<': ''}, regex=True, inplace=True)\n",
    "\n",
    "#SampleType after special character was removed\n",
    "#display(\"SampleType count after * was removed\",poultry.SampleType.value_counts())\n",
    "\n",
    "#Count missing values in E coli CFU\n",
    "missing_values=pd.isnull(poultry['EcoliLog10CFU/mL']).sum()\n",
    "print(\"Number of EcoliLog10CFU/mL cells with missing value in raw data=\", missing_values)\n",
    "\n",
    "#Replace the E coli CFU * and na values with 0, and convert it to numeric 0\n",
    "poultry['EcoliLog10CFU/mL'].replace({'\\*': '0'}, regex=True, inplace = True)\n",
    "poultry['EcoliLog10CFU/mL'] = pd.to_numeric(poultry['EcoliLog10CFU/mL'])\n",
    "poultry['EcoliLog10CFU/mL'].fillna(value=0, inplace = True)\n",
    "\n",
    "#Double check the missing values are gone now\n",
    "missing_values=pd.isnull(poultry['EcoliLog10CFU/mL']).sum().sum()\n",
    "#print(\"Number of EcoliLog10CFU/mL cells with missing value now=\", missing_values)\n",
    "\n",
    "#Convert anywhere E coli CFU could be enumerated to presence (1), otherwise 0\n",
    "poultry['Ecoli'] = poultry['EcoliLog10CFU/mL'].values[poultry['EcoliLog10CFU/mL'] > 0] = 1\n",
    "\n",
    "#convert presence and absence of Campy from + and - to 1 and 0 respectively\n",
    "poultry.rename(columns = {'CampyCapetown': 'Campy'}, inplace=True)\n",
    "poultry['Campy'].replace({'\\+': '1', '\\-':'0'}, regex=True, inplace = True)\n",
    "poultry['Campy'] = pd.to_numeric(poultry['Campy'])\n",
    "\n",
    "#convert presence and absence of Salmonella from + and - to 1 and 0 respectively\n",
    "poultry['Salmonella'].replace({'\\+': '1', '\\-':'0'}, regex=True, inplace = True)\n",
    "poultry['Salmonella'] = pd.to_numeric(poultry['Salmonella'])\n",
    "\n",
    "#convert presence and absence of Listeria from + and - to 1 and 0 respectively\n",
    "poultry['Listeria'].replace({'\\+': '1', '\\-':'0'}, regex=True, inplace = True)\n",
    "poultry['Listeria'] = pd.to_numeric(poultry['Listeria'])\n",
    "\n",
    "#Check the top five rows of the poultry file now\n",
    "poultry.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Percentage Distribution of Culturally Isolated Pathogens"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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JK1Zs0aPP/54pu0XLlzQokWLdOXKFc2YMcMyq/zJJ58oLS3NUsSmpqbqwIEDVkVsUlKSTp48adW2bds2paenq0qVKrpw4YL27Nmj9PR0y/aMjAx99NFH6tKli/LluzoH7OnpqSpVqmjOnDmaPHmyFixYYNl25swZJSYmWnL4+voqPT1dly9ftszYHzx4ULNnz9a8efMkXf2Hir1792Y67scff6yuXbvql19+ueP3dXNz05UrV3T+/Hl5e3vf9Ge7detWq5+pm5ubzpw5o5CQEKsrD653s59jdmOmHQAAAACc1IMPPqimTZvqlVde0bfffqu9e/dq9+7d+v777/Xwww9r3759CgwMVGpqqubPn689e/Zo7NixGjZsmIoWLarChQtLujo7nC9fPlWuXNmy7/j4eBUoUMDqMu+EhASVKFFCvr6+2rp1qwzD0Hfffaf169drx44devLJJ3X69Gm98847Vjnr1KmjCRMmqHHjxnr00UetjuHi4mL5x4fatWsrMDBQb775pvbv368VK1aoRYsW6tChg1q0aGHJ4OLioilTpuiPP/7Q7t271bFjR507d05vvfVWlr7vtdfj9ejRQzt27ND27ds1adIkq3veMzIytGXLFh05ckQpKSmqXbu2/Pz8FB0drfj4eO3du1eLFy9Wnz59rH4++fLls7oqILsx0w4AAAAgzzKHmo6OcEfz58/XuHHjNGbMGO3fv18eHh4qVaqUWrdurQoVKqhixYp64YUXFB0dLS8vLz3zzDPq2LGjkpKSLPtISEhQuXLl5OXlZWm78Z7ua/2uvzS+XLlyevPNN/XEE0/o9OnT+te//qX169erQIECVp+rWrWqXF1d9cEHH2TaX7ly5Syz6v7+/vr555/Vp08fff755woJCVG3bt0yPeitTJkyGjp0qNq3b6+TJ0+qTZs2WrdunXx9fdWqVas7ft+CBQtqwYIFeuONN1SzZk25u7urVq1aevLJJy19Ro4cqYEDB2rcuHHq16+fPvzwQy1atEgDBw5UgwYNZJqmSpUqpejo6Ezfx9PT08Y/xbtnmKbp/KM0m6Wmpsrf318pKSny8/NzdBwAAAAAdnTx4kUlJiaqePHiOVps5XY9e/bUqVOnNH369Dv2feSRR1S5cmWNHz8++4PlIrcbe1mtQ5lpBwAAAABkEh8fr9atW99ye0ZGhv755x999dVX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NHPmTMXFxWnDhg2Zth07dkySFBQUZNUeFBSkpKSkW+5z1KhRGj58uH2DAgAAAABgZzYX7cnJyXrqqae0atUqFShQQKZpKiUlRY0aNdLMmTNVuHBhu4U7dOiQ+vTpo6VLl8rT0/OW/QzDsFq/dn/9rQwaNEj9+vWzrKempiosLOzeAwMAAAAAYEdZenr89V599VWlpqZq27ZtOnnypE6dOqU///xTqamp6t27t13Dbdq0ScnJyapevbpcXV3l6uqq1atXa8KECXJ1dbXMsF+bcb8mOTk50+z79Tw8POTn52e1AAAAAADgbGyeaV+8eLGWLVum8uXLW9oqVKigTz75xOrecnt49NFHtXXrVqu25557TuXKldPAgQNVokQJBQcHKzY2VlFRUZKktLQ0rV69WqNHj7ZrFgAAAAAAcprNRXtGRobc3Nwytbu5uSkjI8Muoa659vC76+XPn18FCxa0tPft21cxMTEqXbq0SpcurZiYGHl7e6tTp052zQIAAAAAQE6zuWh/5JFH1KdPH82YMUOhoaGSpMOHD+u1117To48+aveAdzJgwABduHBBr7zyik6dOqXatWtr6dKlvKMdAAAAAJDr2Vy0T5w4UW3btlWxYsUUFhYmwzB08OBBVapUSd999112ZLSyatUqq3XDMDRs2DANGzYs248NAAAAAEBOsrloDwsLU1xcnGJjY7Vz506ZpqkKFSqocePG2ZEPAAAAAIA8y+ai/ZomTZqoSZMm9swCAAAAAACuY/Mr3wAAAAAAQM6gaAcAAAAAwElRtAMAAAAA4KQo2gEAAAAAcFJ3VbTv27dP77zzjp5++mklJydLkhYvXqxt27bZNRwAAAAAAHmZzUX76tWrValSJf3++++aM2eOzp49K0nasmWLhg4daveAAAAAAADkVTYX7W+++aZGjhyp2NhYubu7W9obNWqk9evX2zUcAAAAAAB5mc1F+9atW/X4449nai9cuLBOnDhhl1AAAAAAAOAuivYCBQro6NGjmdo3b96sokWL2iUUAAAAAAC4i6K9U6dOGjhwoI4dOybDMJSRkaH//Oc/ev311/Xss89mR0YAAAAAAPIkm4v29957T+Hh4SpatKjOnj2rChUqqH79+qpbt67eeeed7MgIAAAAAECe5GrrB9zc3PT9999rxIgR2rx5szIyMhQVFaXSpUtnRz4AAAAAAPIs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\n",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "microbiomecopy = pd.merge(microbiome, poultry[['SampleID','SampleType','PastureTime','Salmonella','Campy','Listeria']])\n",
    "\n",
    "Start = microbiomecopy[microbiomecopy[\"PastureTime\"].str.contains('Start',na=False)]\n",
    "Feces_Start = Start[Start[\"SampleType\"].str.contains(\"Feces\")]\n",
    "Feces_Start.SampleType.replace({'Feces':'Feces_Start'}, regex=True, inplace=True)\n",
    "Soil_Start = Start[Start[\"SampleType\"].str.contains(\"Soil\")]\n",
    "Soil_Start.SampleType.replace({'Soil':'Soil_Start'}, regex=True, inplace=True)\n",
    "\n",
    "Mid = microbiomecopy[microbiomecopy[\"PastureTime\"].str.contains('Mid',na=False)]\n",
    "Feces_Mid = Mid[Mid[\"SampleType\"].str.contains(\"Feces\")]\n",
    "Feces_Mid.SampleType.replace({'Feces':'Feces_Mid'}, regex=True, inplace=True)\n",
    "Soil_Mid = Mid[Mid[\"SampleType\"].str.contains(\"Soil\")]\n",
    "Soil_Mid.SampleType.replace({'Soil':'Soil_Mid'}, regex=True, inplace=True)\n",
    "\n",
    "End = microbiomecopy[microbiomecopy[\"PastureTime\"].str.contains('End',na=False)]\n",
    "Feces_End = End[End[\"SampleType\"].str.contains(\"Feces\")]\n",
    "Feces_End.SampleType.replace({'Feces':'Feces_End'}, regex=True, inplace=True)\n",
    "Soil_End = End[End[\"SampleType\"].str.contains(\"Soil\")]\n",
    "Soil_End.SampleType.replace({'Soil':'Soil_End'}, regex=True, inplace=True)\n",
    "\n",
    "#Salmonella percentage\n",
    "Sal_FStart = round(Feces_Start[Feces_Start.Salmonella ==1].shape[0]/Feces_Start.shape[0]*100)\n",
    "Sal_FMid = round(Feces_Mid[Feces_Mid.Salmonella ==1].shape[0]/Feces_Mid.shape[0]*100)\n",
    "Sal_FEnd = round(Feces_End[Feces_End.Salmonella ==1].shape[0]/Feces_End.shape[0]*100)\n",
    "\n",
    "Sal_SStart = round(Soil_Start[Soil_Start.Salmonella ==1].shape[0]/Soil_Start.shape[0]*100)\n",
    "Sal_SMid = round(Soil_Mid[Soil_Mid.Salmonella ==1].shape[0]/Soil_Mid.shape[0]*100)\n",
    "Sal_SEnd = round(Soil_End[Soil_End.Salmonella ==1].shape[0]/Soil_End.shape[0]*100)\n",
    "\n",
    "\n",
    "#Campylobacter percentage\n",
    "Cam_FStart = round(Feces_Start[Feces_Start.Campy ==1].shape[0]/Feces_Start.shape[0]*100)\n",
    "Cam_FMid = round(Feces_Mid[Feces_Mid.Campy ==1].shape[0]/Feces_Mid.shape[0]*100)\n",
    "Cam_FEnd = round(Feces_End[Feces_End.Campy ==1].shape[0]/Feces_End.shape[0]*100)\n",
    "\n",
    "Cam_SStart = round(Soil_Start[Soil_Start.Campy ==1].shape[0]/Soil_Start.shape[0]*100)\n",
    "Cam_SMid = round(Soil_Mid[Soil_Mid.Campy ==1].shape[0]/Soil_Mid.shape[0]*100)\n",
    "Cam_SEnd = round(Soil_End[Soil_End.Campy ==1].shape[0]/Soil_End.shape[0]*100)\n",
    "\n",
    "#Listeria percentage\n",
    "Lis_FStart = round(Feces_Start[Feces_Start.Listeria ==1].shape[0]/Feces_Start.shape[0]*100)\n",
    "Lis_FMid = round(Feces_Mid[Feces_Mid.Listeria ==1].shape[0]/Feces_Mid.shape[0]*100)\n",
    "Lis_FEnd = round(Feces_End[Feces_End.Listeria ==1].shape[0]/Feces_End.shape[0]*100)\n",
    "\n",
    "Lis_SStart = round(Soil_Start[Soil_Start.Listeria ==1].shape[0]/Soil_Start.shape[0]*100)\n",
    "Lis_SMid = round(Soil_Mid[Soil_Mid.Listeria ==1].shape[0]/Soil_Mid.shape[0]*100)\n",
    "Lis_SEnd = round(Soil_End[Soil_End.Listeria ==1].shape[0]/Soil_End.shape[0]*100)\n",
    "\n",
    "#grouping the plots\n",
    "mic1 = Sal_FStart, Sal_FMid, Sal_FEnd, Sal_SStart, Sal_SMid, Sal_SEnd\n",
    "\n",
    "mic2 = Cam_FStart, Cam_FMid, Cam_FEnd, Cam_SStart, Cam_SMid, Cam_SEnd\n",
    "\n",
    "mic3 = Lis_FStart, Lis_FMid, Lis_FEnd, Lis_SStart, Lis_SMid, Lis_SEnd\n",
    "\n",
    "\n",
    "N = 6\n",
    "ind = np.arange(N)  # the x locations for the groups\n",
    "width = 0.27       # the width of the bars\n",
    "\n",
    "fig = plt.figure(figsize=(12, 6))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "rects1 = ax.bar(ind, mic1, width, color='r')\n",
    "rects2 = ax.bar(ind+width, mic2, width, color='g')\n",
    "rects3 = ax.bar(ind+width*2, mic3, width, color='b')\n",
    "\n",
    "ax.set_ylabel('Percentage of Samples with Pathogens')\n",
    "ax.set_xticks(ind+width)\n",
    "ax.set_xticklabels(('Feces_Start', 'Feces_Mid','Feces_End','Soil_Start','Soil_Mid','Soil_End'))\n",
    "ax.set_xlabel('Sample Type')\n",
    "ax.legend( (rects1[0], rects2[0], rects3[0]), ('$\\it{Salmonella}$', '$\\it{Campylobacter}$', '$\\it{Listeria}$') )\n",
    "\n",
    "def autolabel(rects):\n",
    "    for rect in rects:\n",
    "        h = rect.get_height()\n",
    "        ax.text(rect.get_x()+rect.get_width()/2., 1*h, '%d'%int(h),\n",
    "                ha='center', va='bottom')\n",
    "\n",
    "autolabel(rects1)\n",
    "autolabel(rects2)\n",
    "autolabel(rects3)\n",
    "\n",
    "plt.ylim(0, 100)\n",
    "plt.savefig(\"Supplementary Figure 1.jpg\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Performances with RandomForest, SVM and Logistic regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "scrolled": false
   },
   "source": [
    "### (1) Salmonella "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Salmonella Scores\n",
      "RandomForest: 0.84\n",
      "SVM: 0.84\n",
      "LogReg: 0.79\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Salmonella']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'Salmonella'],axis='columns'),sample.Salmonella,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=200000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score1 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score1 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score1 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('Salmonella Scores')\n",
    "print('RandomForest:',round(rf_score1.mean(),2))\n",
    "print('SVM:',round(svm_score1.mean(),2))\n",
    "print('LogReg:', round(lr_score1.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (2) Campylobacter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Campylobacter Scores\n",
      "RandomForest: 0.79\n",
      "SVM: 0.65\n",
      "LogReg: 0.74\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Campy']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'Campy'],axis='columns'),sample.Campy,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=200000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score2 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score2 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score2 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('Campylobacter Scores')\n",
    "print('RandomForest:',round(rf_score2.mean(),2))\n",
    "print('SVM:',round(svm_score2.mean(),2))\n",
    "print('LogReg:', round(lr_score2.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (3) Listeria"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Listeria Scores\n",
      "RandomForest: 0.86\n",
      "SVM: 0.86\n",
      "LogReg: 0.79\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Listeria']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'Listeria'],axis='columns'),sample.Listeria,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=200000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score3 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score3 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score3 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('Listeria Scores')\n",
    "print('RandomForest:',round(rf_score3.mean(),2))\n",
    "print('SVM:',round(svm_score3.mean(),2))\n",
    "print('LogReg:', round(lr_score3.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (4) AvgNumBirds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AvgNumBirds Scores\n",
      "RandomForest: 0.57\n",
      "SVM: 0.34\n",
      "LogReg: 0.5\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'AvgNumBirds']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'AvgNumBirds'],axis='columns'),sample.AvgNumBirds,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=1000, solver='liblinear')\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score4 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score4 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score4 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('AvgNumBirds Scores')\n",
    "print('RandomForest:',round(rf_score4.mean(),2))\n",
    "print('SVM:',round(svm_score4.mean(),2))\n",
    "print('LogReg:', round(lr_score4.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (5) AvgNumFlocks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AvgNumFlocks Scores\n",
      "RandomForest: 0.6\n",
      "SVM: 0.35\n",
      "LogReg: 0.53\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'AvgNumFlocks']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'AvgNumFlocks'],axis='columns'),sample.AvgNumFlocks,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=1000, solver='liblinear')\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score5 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score5 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score5 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('AvgNumFlocks Scores')\n",
    "print('RandomForest:',round(rf_score5.mean(),2))\n",
    "print('SVM:',round(svm_score5.mean(),2))\n",
    "print('LogReg:', round(lr_score5.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (6) YearsFarming"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "YearsFarming Scores\n",
      "RandomForest: 0.55\n",
      "SVM: 0.24\n",
      "LogReg: 0.46\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'YearsFarming']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'YearsFarming'],axis='columns'),sample.YearsFarming,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=1000, solver='liblinear')\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score6 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score6 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score6 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('YearsFarming Scores')\n",
    "print('RandomForest:',round(rf_score6.mean(),2))\n",
    "print('SVM:',round(svm_score6.mean(),2))\n",
    "print('LogReg:', round(lr_score6.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (7) EggSource"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EggSource Scores\n",
      "RandomForest: 0.63\n",
      "SVM: 0.59\n",
      "LogReg: 0.59\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'EggSource']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'EggSource'],axis='columns'),sample.EggSource,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=8000, solver='liblinear')\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score7 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score7 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score7 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('EggSource Scores')\n",
    "print('RandomForest:',round(rf_score7.mean(),2))\n",
    "print('SVM:',round(svm_score7.mean(),2))\n",
    "print('LogReg:', round(lr_score7.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (8) Broodbedding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BroodBedding Scores\n",
      "RandomForest: 0.91\n",
      "SVM: 0.91\n",
      "LogReg: 0.86\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'BroodBedding']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'BroodBedding'],axis='columns'),sample.BroodBedding,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score8 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score8 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score8 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('BroodBedding Scores')\n",
    "print('RandomForest:',round(rf_score8.mean(),2))\n",
    "print('SVM:',round(svm_score8.mean(),2))\n",
    "print('LogReg:', round(lr_score8.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (9) BroodFeed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BroodFeed Scores\n",
      "RandomForest: 0.53\n",
      "SVM: 0.34\n",
      "LogReg: 0.47\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'BroodFeed']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'BroodFeed'],axis='columns'),sample.BroodFeed,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score9 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score9 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score9 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('BroodFeed Scores')\n",
    "print('RandomForest:',round(rf_score9.mean(),2))\n",
    "print('SVM:',round(svm_score9.mean(),2))\n",
    "print('LogReg:', round(lr_score9.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (10) BrGMOFree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BrGMOFree Scores\n",
      "RandomForest: 0.77\n",
      "SVM: 0.68\n",
      "LogReg: 0.73\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'BrGMOFree']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'BrGMOFree'],axis='columns'),sample.BrGMOFree,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score10 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score10 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score10 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('BrGMOFree Scores')\n",
    "print('RandomForest:',round(rf_score10.mean(),2))\n",
    "print('SVM:',round(svm_score10.mean(),2))\n",
    "print('LogReg:', round(lr_score10.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (11) BrSoyFree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BrSoyFree Scores\n",
      "RandomForest: 0.85\n",
      "SVM: 0.84\n",
      "LogReg: 0.81\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'BrSoyFree']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'BrSoyFree'],axis='columns'),sample.BrSoyFree,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score11 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score11 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score11 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('BrSoyFree Scores')\n",
    "print('RandomForest:',round(rf_score11.mean(),2))\n",
    "print('SVM:',round(svm_score11.mean(),2))\n",
    "print('LogReg:', round(lr_score11.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (12) BrMedicated"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BrMedicated Scores\n",
      "RandomForest: 0.97\n",
      "SVM: 0.97\n",
      "LogReg: 0.95\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'BrMedicated']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'BrMedicated'],axis='columns'),sample.BrMedicated,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score12 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score12 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score12 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('BrMedicated Scores')\n",
    "print('RandomForest:',round(rf_score12.mean(),2))\n",
    "print('SVM:',round(svm_score12.mean(),2))\n",
    "print('LogReg:', round(lr_score12.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# sample = pd.merge(microbiome, poultry[['SampleID', 'BroodCleanFrequency']])\n",
    "# sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "# sample.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (13) BroodCleanFrequency"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BroodCleanFrequency Scores\n",
      "RandomForest: 0.7\n",
      "SVM: 0.63\n",
      "LogReg: 0.64\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'BroodCleanFrequency']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "sample.dropna(subset = ['BroodCleanFrequency'])\n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'BroodCleanFrequency'],axis='columns'),sample.BroodCleanFrequency,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score13 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score13 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score13 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('BroodCleanFrequency Scores')\n",
    "print('RandomForest:',round(rf_score13.mean(),2))\n",
    "print('SVM:',round(svm_score13.mean(),2))\n",
    "print('LogReg:', round(lr_score13.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (14) AvgAgeToPasture"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AvgAgeToPasture Scores\n",
      "RandomForest: 0.73\n",
      "SVM: 0.62\n",
      "LogReg: 0.69\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'AvgAgeToPasture']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'AvgAgeToPasture'],axis='columns'),sample.AvgAgeToPasture,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score14 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score14 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score14 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('AvgAgeToPasture Scores')\n",
    "print('RandomForest:',round(rf_score14.mean(),2))\n",
    "print('SVM:',round(svm_score14.mean(),2))\n",
    "print('LogReg:', round(lr_score14.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (15) PastureHousing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PastureHousing Scores\n",
      "RandomForest: 0.7\n",
      "SVM: 0.55\n",
      "LogReg: 0.61\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'PastureHousing']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'PastureHousing'],axis='columns'),sample.PastureHousing,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=1200000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score15 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score15 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score15 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('PastureHousing Scores')\n",
    "print('RandomForest:',round(rf_score15.mean(),2))\n",
    "print('SVM:',round(svm_score15.mean(),2))\n",
    "print('LogReg:', round(lr_score15.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (16) FreqHousingMove"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FreqHousingMove Scores\n",
      "RandomForest: 0.98\n",
      "SVM: 0.98\n",
      "LogReg: 0.96\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'FreqHousingMove']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'FreqHousingMove'],axis='columns'),sample.FreqHousingMove,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score16 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score16 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score16 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('FreqHousingMove Scores')\n",
    "print('RandomForest:',round(rf_score16.mean(),2))\n",
    "print('SVM:',round(svm_score16.mean(),2))\n",
    "print('LogReg:', round(lr_score16.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (17) AlwaysNewPasture"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AlwaysNewPasture Scores\n",
      "RandomForest: 0.9\n",
      "SVM: 0.87\n",
      "LogReg: 0.85\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'AlwaysNewPasture']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'AlwaysNewPasture'],axis='columns'),sample.AlwaysNewPasture,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score17 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score17 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score17 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('AlwaysNewPasture Scores')\n",
    "print('RandomForest:',round(rf_score17.mean(),2))\n",
    "print('SVM:',round(svm_score17.mean(),2))\n",
    "print('LogReg:', round(lr_score17.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (18) PastureFeed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PastureFeed Scores\n",
      "RandomForest: 0.53\n",
      "SVM: 0.33\n",
      "LogReg: 0.47\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'PastureFeed']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'PastureFeed'],axis='columns'),sample.PastureFeed,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score18 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score18 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score18 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('PastureFeed Scores')\n",
    "print('RandomForest:',round(rf_score18.mean(),2))\n",
    "print('SVM:',round(svm_score18.mean(),2))\n",
    "print('LogReg:', round(lr_score18.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (19) PaGMOFree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PaGMOFree Scores\n",
      "RandomForest: 0.77\n",
      "SVM: 0.68\n",
      "LogReg: 0.73\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'PaGMOFree']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'PaGMOFree'],axis='columns'),sample.PaGMOFree,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score19 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score19 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score19 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('PaGMOFree Scores')\n",
    "print('RandomForest:',round(rf_score19.mean(),2))\n",
    "print('SVM:',round(svm_score19.mean(),2))\n",
    "print('LogReg:', round(lr_score19.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (20) PaSoyFree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PaSoyFree Scores\n",
      "RandomForest: 0.76\n",
      "SVM: 0.62\n",
      "LogReg: 0.73\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'PaSoyFree']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'PaSoyFree'],axis='columns'),sample.PaSoyFree,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score20 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score20 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score20 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('PaSoyFree Scores')\n",
    "print('RandomForest:',round(rf_score20.mean(),2))\n",
    "print('SVM:',round(svm_score20.mean(),2))\n",
    "print('LogReg:', round(lr_score20.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (21) PaMedicated"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PaMedicated Scores\n",
      "RandomForest: 0.98\n",
      "SVM: 0.98\n",
      "LogReg: 0.95\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'PaMedicated']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'PaMedicated'],axis='columns'),sample.PaMedicated,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score21 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score21 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score21 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('PaMedicated Scores')\n",
    "print('RandomForest:',round(rf_score21.mean(),2))\n",
    "print('SVM:',round(svm_score21.mean(),2))\n",
    "print('LogReg:', round(lr_score21.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (22) LayersOnFarm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LayersOnFarm Scores\n",
      "RandomForest: 0.96\n",
      "SVM: 0.96\n",
      "LogReg: 0.94\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'LayersOnFarm']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'LayersOnFarm'],axis='columns'),sample.LayersOnFarm,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score22 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score22 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score22 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('LayersOnFarm Scores')\n",
    "print('RandomForest:',round(rf_score22.mean(),2))\n",
    "print('SVM:',round(svm_score22.mean(),2))\n",
    "print('LogReg:', round(lr_score22.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (23) CattleOnFarm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CattleOnFarm Scores\n",
      "RandomForest: 0.77\n",
      "SVM: 0.57\n",
      "LogReg: 0.71\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'CattleOnFarm']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'CattleOnFarm'],axis='columns'),sample.CattleOnFarm,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score23 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score23 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score23 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('CattleOnFarm Scores')\n",
    "print('RandomForest:',round(rf_score23.mean(),2))\n",
    "print('SVM:',round(svm_score23.mean(),2))\n",
    "print('LogReg:', round(lr_score23.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "24"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SwineOnFarm Scores\n",
      "RandomForest: 0.83\n",
      "SVM: 0.81\n",
      "LogReg: 0.81\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'SwineOnFarm']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'SwineOnFarm'],axis='columns'),sample.SwineOnFarm,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score24 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score24 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score24 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('SwineOnFarm Scores')\n",
    "print('RandomForest:',round(rf_score24.mean(),2))\n",
    "print('SVM:',round(svm_score24.mean(),2))\n",
    "print('LogReg:', round(lr_score24.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "25"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GoatsOnFarm Scores\n",
      "RandomForest: 0.75\n",
      "SVM: 0.65\n",
      "LogReg: 0.73\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'GoatsOnFarm']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'GoatsOnFarm'],axis='columns'),sample.GoatsOnFarm,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score25 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score25 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score25 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('GoatsOnFarm Scores')\n",
    "print('RandomForest:',round(rf_score25.mean(),2))\n",
    "print('SVM:',round(svm_score25.mean(),2))\n",
    "print('LogReg:', round(lr_score25.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "26"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "26"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SheepOnFarm Scores\n",
      "RandomForest: 0.79\n",
      "SVM: 0.58\n",
      "LogReg: 0.73\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'SheepOnFarm']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'SheepOnFarm'],axis='columns'),sample.SheepOnFarm,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score26 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score26 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score26 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('SheepOnFarm Scores')\n",
    "print('RandomForest:',round(rf_score26.mean(),2))\n",
    "print('SVM:',round(svm_score26.mean(),2))\n",
    "print('LogReg:', round(lr_score26.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "27"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "27"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WaterSource Scores\n",
      "RandomForest: 0.72\n",
      "SVM: 0.51\n",
      "LogReg: 0.64\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'WaterSource1']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'WaterSource1'],axis='columns'),sample.WaterSource1,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score27 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score27 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score27 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('WaterSource Scores')\n",
    "print('RandomForest:',round(rf_score27.mean(),2))\n",
    "print('SVM:',round(svm_score27.mean(),2))\n",
    "print('LogReg:', round(lr_score27.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "28"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "28"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FreqBirdHandling Scores\n",
      "RandomForest: 0.89\n",
      "SVM: 0.86\n",
      "LogReg: 0.85\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'FreqBirdHandling']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'FreqBirdHandling'],axis='columns'),sample.FreqBirdHandling,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score28 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score28 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score28 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('FreqBirdHandling Scores')\n",
    "print('RandomForest:',round(rf_score28.mean(),2))\n",
    "print('SVM:',round(svm_score28.mean(),2))\n",
    "print('LogReg:', round(lr_score28.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "29"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AnyABXUse Scores\n",
      "RandomForest: 0.98\n",
      "SVM: 0.98\n",
      "LogReg: 0.96\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'AnyABXUse']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'AnyABXUse'],axis='columns'),sample.AnyABXUse,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score29 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score29 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score29 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('AnyABXUse Scores')\n",
    "print('RandomForest:',round(rf_score29.mean(),2))\n",
    "print('SVM:',round(svm_score29.mean(),2))\n",
    "print('LogReg:', round(lr_score29.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "30"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "30"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LengthFeedRestrixProcess Scores\n",
      "RandomForest: 0.26\n",
      "SVM: 0.62\n",
      "LogReg: 0.57\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'LengthFeedRestrixProcess']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'LengthFeedRestrixProcess'],axis='columns'),sample.LengthFeedRestrixProcess,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestRegressor(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score30 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score30 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score30 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('LengthFeedRestrixProcess Scores')\n",
    "print('RandomForest:',round(rf_score30.mean(),2))\n",
    "print('SVM:',round(svm_score30.mean(),2))\n",
    "print('LogReg:', round(lr_score30.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "31"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "31"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Seasons Scores\n",
      "RandomForest: 0.63\n",
      "SVM: 0.55\n",
      "LogReg: 0.55\n"
     ]
    }
   ],
   "source": [
    "#Define Seasons from Daysof the year\n",
    "\n",
    "category = pd.cut(poultry.DayOfYear,bins=[1,60,152,244,335,365],labels=['Winter','Spring','Summer','Fall','Winter'],ordered=False)\n",
    "poultry.insert(5,'Seasons',category)\n",
    "\n",
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Seasons']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'Seasons'],axis='columns'),sample.Seasons,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score31 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score31 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score31 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('Seasons Scores')\n",
    "print('RandomForest:',round(rf_score31.mean(),2))\n",
    "print('SVM:',round(svm_score31.mean(),2))\n",
    "print('LogReg:', round(lr_score31.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "32"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FlockAgeDays Scores\n",
      "RandomForest: 0.37\n",
      "SVM: 0.08\n",
      "LogReg: 0.28\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'FlockAgeDays']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'FlockAgeDays'],axis='columns'),sample.FlockAgeDays,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score32 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score32 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score32 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('FlockAgeDays Scores')\n",
    "print('RandomForest:',round(rf_score32.mean(),2))\n",
    "print('SVM:',round(svm_score32.mean(),2))\n",
    "print('LogReg:', round(lr_score32.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "33"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "33"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Breed Scores\n",
      "RandomForest: 0.69\n",
      "SVM: 0.65\n",
      "LogReg: 0.64\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Breed']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'Breed'],axis='columns'),sample.Breed,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score33 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score33 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score33 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('Breed Scores')\n",
    "print('RandomForest:',round(rf_score33.mean(),2))\n",
    "print('SVM:',round(svm_score33.mean(),2))\n",
    "print('LogReg:', round(lr_score33.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "34"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "34"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FlockSize Scores\n",
      "RandomForest: 0.51\n",
      "SVM: 0.35\n",
      "LogReg: 0.45\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'FlockSize']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'FlockSize'],axis='columns'),sample.FlockSize,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score34 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score34 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score34 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('FlockSize Scores')\n",
    "print('RandomForest:',round(rf_score34.mean(),2))\n",
    "print('SVM:',round(svm_score34.mean(),2))\n",
    "print('LogReg:', round(lr_score34.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "35"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "35"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AnimalSource Scores\n",
      "RandomForest: 0.91\n",
      "SVM: 0.87\n",
      "LogReg: 0.87\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'AnimalSource']])\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'AnimalSource'],axis='columns'),sample.AnimalSource,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score35 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score35 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score35 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('AnimalSource Scores')\n",
    "print('RandomForest:',round(rf_score35.mean(),2))\n",
    "print('SVM:',round(svm_score35.mean(),2))\n",
    "print('LogReg:', round(lr_score35.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Ensure physicochemicals are numeric values (after removal of < from some values that could have converted them to string)\n",
    "poultry[['pH', 'EC', 'Moisture', 'TotalC', 'TotalN', 'CNRatio', 'Al', 'B', 'Ca',\n",
    "           'Cd', 'Cr', 'Cu', 'Fe', 'K', 'Mg', 'Mn', 'Mo', 'Na', 'Ni', 'P', 'Pb',\n",
    "           'S', 'Si', 'Zn']] = poultry[['pH', 'EC', 'Moisture', 'TotalC', 'TotalN', 'CNRatio', 'Al', 'B', 'Ca',\n",
    "           'Cd', 'Cr', 'Cu', 'Fe', 'K', 'Mg', 'Mn', 'Mo', 'Na', 'Ni', 'P', 'Pb',\n",
    "           'S', 'Si', 'Zn']].apply(pd.to_numeric, errors='coerce', axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "36"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "36"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_pH Scores\n",
      "RandomForest: 0.94\n",
      "SVM: 0.62\n",
      "LogReg: 0.82\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'pH']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['pH'] < sample.pH.median(), 'new_pH'] = 'Low' \n",
    "sample.loc[sample['pH'] >= sample.pH.median(), 'new_pH'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_pH'],axis='columns'),sample.new_pH,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score36 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score36 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score36 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_pH Scores')\n",
    "print('RandomForest:',round(rf_score36.mean(),2))\n",
    "print('SVM:',round(svm_score36.mean(),2))\n",
    "print('LogReg:', round(lr_score36.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "37"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "37"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_EC Scores\n",
      "RandomForest: 0.96\n",
      "SVM: 0.59\n",
      "LogReg: 0.89\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'EC']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['EC'] < sample.EC.median(), 'new_EC'] = 'Low' \n",
    "sample.loc[sample['EC'] >= sample.EC.median(), 'new_EC'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_EC'],axis='columns'),sample.new_EC,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score37 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score37 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score37 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_EC Scores')\n",
    "print('RandomForest:',round(rf_score37.mean(),2))\n",
    "print('SVM:',round(svm_score37.mean(),2))\n",
    "print('LogReg:', round(lr_score37.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "38"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "38"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Moisture Scores\n",
      "RandomForest: 0.97\n",
      "SVM: 0.7\n",
      "LogReg: 0.89\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Moisture']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Moisture'] < sample.Moisture.median(), 'new_Moisture'] = 'Low' \n",
    "sample.loc[sample['Moisture'] >= sample.Moisture.median(), 'new_Moisture'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Moisture'],axis='columns'),sample.new_Moisture,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score38 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score38 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score38 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Moisture Scores')\n",
    "print('RandomForest:',round(rf_score38.mean(),2))\n",
    "print('SVM:',round(svm_score38.mean(),2))\n",
    "print('LogReg:', round(lr_score38.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "39"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "39"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_TotalC Scores\n",
      "RandomForest: 0.92\n",
      "SVM: 0.55\n",
      "LogReg: 0.85\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'TotalC']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['TotalC'] < sample.TotalC.median(), 'new_TotalC'] = 'Low' \n",
    "sample.loc[sample['TotalC'] >= sample.TotalC.median(), 'new_TotalC'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_TotalC'],axis='columns'),sample.new_TotalC,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score39 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score39 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score39 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_TotalC Scores')\n",
    "print('RandomForest:',round(rf_score39.mean(),2))\n",
    "print('SVM:',round(svm_score39.mean(),2))\n",
    "print('LogReg:', round(lr_score39.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "40"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "40"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_TotalN Scores\n",
      "RandomForest: 0.92\n",
      "SVM: 0.6\n",
      "LogReg: 0.84\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'TotalN']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['TotalN'] < sample.TotalN.median(), 'new_TotalN'] = 'Low' \n",
    "sample.loc[sample['TotalN'] >= sample.TotalN.median(), 'new_TotalN'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_TotalN'],axis='columns'),sample.new_TotalN,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score40 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score40 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score40 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_TotalN Scores')\n",
    "print('RandomForest:',round(rf_score40.mean(),2))\n",
    "print('SVM:',round(svm_score40.mean(),2))\n",
    "print('LogReg:', round(lr_score40.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "41"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_CNRatio Scores\n",
      "RandomForest: 0.97\n",
      "SVM: 0.54\n",
      "LogReg: 0.81\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'CNRatio']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['CNRatio'] < sample.CNRatio.median(), 'new_CNRatio'] = 'Low' \n",
    "sample.loc[sample['CNRatio'] >= sample.CNRatio.median(), 'new_CNRatio'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_CNRatio'],axis='columns'),sample.new_CNRatio,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score41 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score41 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score41 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_CNRatio Scores')\n",
    "print('RandomForest:',round(rf_score41.mean(),2))\n",
    "print('SVM:',round(svm_score41.mean(),2))\n",
    "print('LogReg:', round(lr_score41.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 42"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Al Scores\n",
      "RandomForest: 0.9\n",
      "SVM: 0.56\n",
      "LogReg: 0.76\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Al']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Al'] < sample.Al.median(), 'new_Al'] = 'Low' \n",
    "sample.loc[sample['Al'] >= sample.Al.median(), 'new_Al'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Al'],axis='columns'),sample.new_Al,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score42 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score42 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score42 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Al Scores')\n",
    "print('RandomForest:',round(rf_score42.mean(),2))\n",
    "print('SVM:',round(svm_score42.mean(),2))\n",
    "print('LogReg:', round(lr_score42.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "43"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "43"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_B Scores\n",
      "RandomForest: 0.93\n",
      "SVM: 0.6\n",
      "LogReg: 0.78\n"
     ]
    }
   ],
   "source": [
    "#poultry['B'] = poultry[['B']].apply(pd.to_numeric, errors='coerce', axis=1)\n",
    "sample = pd.merge(microbiome, poultry[['SampleID', 'B']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "\n",
    "sample.loc[sample['B'] < sample.B.median(), 'new_B'] = 'Low' \n",
    "sample.loc[sample['B'] >= sample.B.median(), 'new_B'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_B'],axis='columns'),sample.new_B,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score43 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score43 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score43 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_B Scores')\n",
    "print('RandomForest:',round(rf_score43.mean(),2))\n",
    "print('SVM:',round(svm_score43.mean(),2))\n",
    "print('LogReg:', round(lr_score43.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "44"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "44"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Ca Scores\n",
      "RandomForest: 0.94\n",
      "SVM: 0.63\n",
      "LogReg: 0.84\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Ca']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Ca'] < sample.Ca.median(), 'new_Ca'] = 'Low' \n",
    "sample.loc[sample['Ca'] >= sample.Ca.median(), 'new_Ca'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Ca'],axis='columns'),sample.new_Ca,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score44 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score44 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score44 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Ca Scores')\n",
    "print('RandomForest:',round(rf_score44.mean(),2))\n",
    "print('SVM:',round(svm_score44.mean(),2))\n",
    "print('LogReg:', round(lr_score44.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "45"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Cd Scores\n",
      "RandomForest: 0.98\n",
      "SVM: 0.88\n",
      "LogReg: 0.93\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Cd']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Cd'] < sample.Cd.median(), 'new_Cd'] = 'Low' \n",
    "sample.loc[sample['Cd'] >= sample.Cd.median(), 'new_Cd'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Cd'],axis='columns'),sample.new_Cd,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score45 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score45 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score45 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Cd Scores')\n",
    "print('RandomForest:',round(rf_score45.mean(),2))\n",
    "print('SVM:',round(svm_score45.mean(),2))\n",
    "print('LogReg:', round(lr_score45.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "46"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "46"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Cr Scores\n",
      "RandomForest: 0.98\n",
      "SVM: 0.89\n",
      "LogReg: 0.92\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Cr']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Cr'] < sample.Cr.median(), 'new_Cr'] = 'Low' \n",
    "sample.loc[sample['Cr'] >= sample.Cr.median(), 'new_Cr'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Cr'],axis='columns'),sample.new_Cr,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score46 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score46 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score46 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Cr Scores')\n",
    "print('RandomForest:',round(rf_score46.mean(),2))\n",
    "print('SVM:',round(svm_score46.mean(),2))\n",
    "print('LogReg:', round(lr_score46.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "47"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "47"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Cu Scores\n",
      "RandomForest: 0.92\n",
      "SVM: 0.66\n",
      "LogReg: 0.82\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Cu']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Cu'] < sample.Cu.median(), 'new_Cu'] = 'Low' \n",
    "sample.loc[sample['Cu'] >= sample.Cu.median(), 'new_Cu'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Cu'],axis='columns'),sample.new_Cu,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score47 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score47 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score47 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Cu Scores')\n",
    "print('RandomForest:',round(rf_score47.mean(),2))\n",
    "print('SVM:',round(svm_score47.mean(),2))\n",
    "print('LogReg:', round(lr_score47.mean(),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 48"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Fe Scores\n",
      "RandomForest: 0.95\n",
      "SVM: 0.62\n",
      "LogReg: 0.85\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Fe']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Fe'] < sample.Fe.median(), 'new_Fe'] = 'Low' \n",
    "sample.loc[sample['Fe'] >= sample.Fe.median(), 'new_Fe'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Fe'],axis='columns'),sample.new_Fe,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score48 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score48 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score48 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Fe Scores')\n",
    "print('RandomForest:',round(rf_score48.mean(),2))\n",
    "print('SVM:',round(svm_score48.mean(),2))\n",
    "print('LogReg:', round(lr_score48.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "49"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "49"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_K Scores\n",
      "RandomForest: 0.97\n",
      "SVM: 0.71\n",
      "LogReg: 0.91\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'K']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['K'] < sample.K.median(), 'new_K'] = 'Low' \n",
    "sample.loc[sample['K'] >= sample.K.median(), 'new_K'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_K'],axis='columns'),sample.new_K,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score49 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score49 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score49 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_K Scores')\n",
    "print('RandomForest:',round(rf_score49.mean(),2))\n",
    "print('SVM:',round(svm_score49.mean(),2))\n",
    "print('LogReg:', round(lr_score49.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "50"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "50"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Mg Scores\n",
      "RandomForest: 0.95\n",
      "SVM: 0.64\n",
      "LogReg: 0.88\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Mg']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Mg'] < sample.Mg.median(), 'new_Mg'] = 'Low' \n",
    "sample.loc[sample['Mg'] >= sample.Mg.median(), 'new_Mg'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Mg'],axis='columns'),sample.new_Mg,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score50 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score50 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score50 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Mg Scores')\n",
    "print('RandomForest:',round(rf_score50.mean(),2))\n",
    "print('SVM:',round(svm_score50.mean(),2))\n",
    "print('LogReg:', round(lr_score50.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "51"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "51"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Mn Scores\n",
      "RandomForest: 0.93\n",
      "SVM: 0.6\n",
      "LogReg: 0.82\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Mn']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Mn'] < sample.Mn.median(), 'new_Mn'] = 'Low' \n",
    "sample.loc[sample['Mn'] >= sample.Mn.median(), 'new_Mn'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Mn'],axis='columns'),sample.new_Mn,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score51 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score51 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score51 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Mn Scores')\n",
    "print('RandomForest:',round(rf_score51.mean(),2))\n",
    "print('SVM:',round(svm_score51.mean(),2))\n",
    "print('LogReg:', round(lr_score51.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "52"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "52"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Mo Scores\n",
      "RandomForest: 0.98\n",
      "SVM: 0.61\n",
      "LogReg: 0.92\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Mo']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Mo'] < sample.Mo.median(), 'new_Mo'] = 'Low' \n",
    "sample.loc[sample['Mo'] >= sample.Mo.median(), 'new_Mo'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Mo'],axis='columns'),sample.new_Mo,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score52 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score52 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score52 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Mo Scores')\n",
    "print('RandomForest:',round(rf_score52.mean(),2))\n",
    "print('SVM:',round(svm_score52.mean(),2))\n",
    "print('LogReg:', round(lr_score52.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "53"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "53"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Na Scores\n",
      "RandomForest: 0.96\n",
      "SVM: 0.65\n",
      "LogReg: 0.88\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Na']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Na'] < sample.Na.median(), 'new_Na'] = 'Low' \n",
    "sample.loc[sample['Na'] >= sample.Na.median(), 'new_Na'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Na'],axis='columns'),sample.new_Na,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score53 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score53 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score53 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Na Scores')\n",
    "print('RandomForest:',round(rf_score53.mean(),2))\n",
    "print('SVM:',round(svm_score53.mean(),2))\n",
    "print('LogReg:', round(lr_score53.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "54"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "54"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Ni Scores\n",
      "RandomForest: 0.96\n",
      "SVM: 0.78\n",
      "LogReg: 0.9\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Ni']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Ni'] < sample.Ni.median(), 'new_Ni'] = 'Low' \n",
    "sample.loc[sample['Ni'] >= sample.Ni.median(), 'new_Ni'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Ni'],axis='columns'),sample.new_Ni,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score54 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score54 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score54 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Ni Scores')\n",
    "print('RandomForest:',round(rf_score54.mean(),2))\n",
    "print('SVM:',round(svm_score54.mean(),2))\n",
    "print('LogReg:', round(lr_score54.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "55"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "55"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_P Scores\n",
      "RandomForest: 0.97\n",
      "SVM: 0.7\n",
      "LogReg: 0.88\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'P']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['P'] < sample.P.median(), 'new_P'] = 'Low' \n",
    "sample.loc[sample['P'] >= sample.P.median(), 'new_P'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_P'],axis='columns'),sample.new_P,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score55 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score55 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score55 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_P Scores')\n",
    "print('RandomForest:',round(rf_score55.mean(),2))\n",
    "print('SVM:',round(svm_score55.mean(),2))\n",
    "print('LogReg:', round(lr_score55.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "56"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "56"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Pb Scores\n",
      "RandomForest: 0.91\n",
      "SVM: 0.62\n",
      "LogReg: 0.79\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Pb']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Pb'] < sample.Pb.median(), 'new_Pb'] = 'Low' \n",
    "sample.loc[sample['Pb'] >= sample.Pb.median(), 'new_Pb'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Pb'],axis='columns'),sample.new_Pb,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score56 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score56 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score56 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Pb Scores')\n",
    "print('RandomForest:',round(rf_score56.mean(),2))\n",
    "print('SVM:',round(svm_score56.mean(),2))\n",
    "print('LogReg:', round(lr_score56.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "57"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "57"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_S Scores\n",
      "RandomForest: 0.95\n",
      "SVM: 0.58\n",
      "LogReg: 0.73\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'S']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['S'] < sample.S.median(), 'new_S'] = 'Low' \n",
    "sample.loc[sample['S'] >= sample.S.median(), 'new_S'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_S'],axis='columns'),sample.new_S,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score57 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score57 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score57 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_S Scores')\n",
    "print('RandomForest:',round(rf_score57.mean(),2))\n",
    "print('SVM:',round(svm_score57.mean(),2))\n",
    "print('LogReg:', round(lr_score57.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "58"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "58"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Si Scores\n",
      "RandomForest: 0.93\n",
      "SVM: 0.55\n",
      "LogReg: 0.78\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Si']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Si'] < sample.Si.median(), 'new_Si'] = 'Low' \n",
    "sample.loc[sample['Si'] >= sample.Si.median(), 'new_Si'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Si'],axis='columns'),sample.new_Si,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score58 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score58 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score58 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Si Scores')\n",
    "print('RandomForest:',round(rf_score58.mean(),2))\n",
    "print('SVM:',round(svm_score58.mean(),2))\n",
    "print('LogReg:', round(lr_score58.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "59"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "59"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new_Zn Scores\n",
      "RandomForest: 0.92\n",
      "SVM: 0.58\n",
      "LogReg: 0.83\n"
     ]
    }
   ],
   "source": [
    "sample = pd.merge(microbiome, poultry[['SampleID', 'Zn']])\n",
    "sample =sample[~sample.isin([np.nan, np.inf, -np.inf]).any(1)]\n",
    "\n",
    "sample.loc[sample['Zn'] < sample.Zn.median(), 'new_Zn'] = 'Low' \n",
    "sample.loc[sample['Zn'] >= sample.Zn.median(), 'new_Zn'] = 'High' \n",
    "\n",
    "#Train test split\n",
    "X_train, X_test, y_train, y_test = train_test_split(sample.drop(['SampleID', 'new_Zn'],axis='columns'),sample.new_Zn,test_size=0.3) \n",
    "\n",
    "#Scaling\n",
    "feature_scaler = RobustScaler()\n",
    "X_train = feature_scaler.fit_transform(X_train)\n",
    "X_test = feature_scaler.transform(X_test)\n",
    "\n",
    "#Models\n",
    "svm = SVC()\n",
    "lr = LogisticRegression(max_iter=420000)\n",
    "rf = RandomForestClassifier(n_estimators=100, random_state = 0)\n",
    "\n",
    "#Cross-validation\n",
    "rf_score59 = cross_val_score(estimator=rf, X=X_train, y=y_train, cv=5)\n",
    "svm_score59 = cross_val_score(estimator=svm, X=X_train, y=y_train, cv=5)\n",
    "lr_score59 = cross_val_score(estimator=lr, X=X_train, y=y_train, cv=5)\n",
    "\n",
    "#Scores\n",
    "print('new_Zn Scores')\n",
    "print('RandomForest:',round(rf_score59.mean(),2))\n",
    "print('SVM:',round(svm_score59.mean(),2))\n",
    "print('LogReg:', round(lr_score59.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Build Model Performance Table"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame() \n",
    " \n",
    "# append columns to an empty DataFrame \n",
    "df['Target Variable'] = [\n",
    "         \n",
    "        #3 Pathogens\n",
    "        'Salmonella', 'Campylobacter', 'Listeria',\n",
    "        \n",
    "       \n",
    "        #32 Common Variables variables\n",
    "       'AvgNumBirds','AvgNumFlocks', 'YearsFarming', 'EggSource', 'BroodBedding',\n",
    "       'BroodFeed', 'BrGMOFree', 'BrSoyFree', 'BrMedicated',\n",
    "       'BroodCleanFrequency', 'AvgAgeToPasture', 'PastureHousing',\n",
    "       'FreqHousingMove', 'AlwaysNewPasture', 'PastureFeed', 'PaGMOFree',\n",
    "       'PaSoyFree', 'PaMedicated', 'LayersOnFarm', 'CattleOnFarm', 'SwineOnFarm',\n",
    "       'GoatsOnFarm', 'SheepOnFarm', 'WaterSource', 'FreqBirdHandling',\n",
    "       'AnyABXUse', 'LengthFeedRestrixProcess','Seasons','FlockAgeDays','Breed','FlockSize',\n",
    "        'AnimalSource',\n",
    "        \n",
    "        \n",
    "        #24 Unique to preharvest samples\n",
    "        'pH', 'EC', 'Moisture', 'TotalC', 'TotalN',\n",
    "       'CNRatio', 'Al', 'B', 'Ca', 'Cd', 'Cr', 'Cu', 'Fe', 'K', 'Mg', 'Mn',\n",
    "       'Mo', 'Na', 'Ni', 'P', 'Pb', 'S', 'Si', 'Zn'] \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['RandomForest'] = [round(rf_score1.mean(),2), round(rf_score2.mean(),2),round(rf_score3.mean(),2),round(rf_score4.mean(),2),round(rf_score5.mean(),2)\n",
    "                     ,round(rf_score6.mean(),2),round(rf_score7.mean(),2),round(rf_score8.mean(),2),round(rf_score9.mean(),2),round(rf_score10.mean(),2)\n",
    "                     ,round(rf_score11.mean(),2),round(rf_score12.mean(),2),round(rf_score13.mean(),2),round(rf_score14.mean(),2),round(rf_score15.mean(),2)\n",
    "                     ,round(rf_score16.mean(),2),round(rf_score17.mean(),2),round(rf_score18.mean(),2),round(rf_score19.mean(),2),round(rf_score20.mean(),2)\n",
    "                     ,round(rf_score21.mean(),2),round(rf_score22.mean(),2),round(rf_score23.mean(),2),round(rf_score24.mean(),2),round(rf_score25.mean(),2)\n",
    "                     ,round(rf_score26.mean(),2),round(rf_score27.mean(),2),round(rf_score28.mean(),2),round(rf_score29.mean(),2),round(rf_score30.mean(),2)\n",
    "                     ,round(rf_score31.mean(),2),round(rf_score32.mean(),2),round(rf_score33.mean(),2),round(rf_score34.mean(),2),round(rf_score35.mean(),2)\n",
    "                     ,round(rf_score36.mean(),2),round(rf_score37.mean(),2),round(rf_score39.mean(),2),round(rf_score40.mean(),2),round(rf_score45.mean(),2)\n",
    "                     ,round(rf_score41.mean(),2),round(rf_score42.mean(),2),round(rf_score43.mean(),2),round(rf_score44.mean(),2),round(rf_score45.mean(),2)\n",
    "                     ,round(rf_score46.mean(),2),round(rf_score47.mean(),2),round(rf_score48.mean(),2),round(rf_score49.mean(),2),round(rf_score50.mean(),2)\n",
    "                     ,round(rf_score51.mean(),2),round(rf_score52.mean(),2),round(rf_score53.mean(),2),round(rf_score54.mean(),2),round(rf_score55.mean(),2)\n",
    "                     ,round(rf_score56.mean(),2),round(rf_score57.mean(),2),round(rf_score58.mean(),2),round(rf_score59.mean(),2)] \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['SVM'] = [round(svm_score1.mean(),2), round(svm_score2.mean(),2),round(svm_score3.mean(),2),round(svm_score4.mean(),2),round(svm_score5.mean(),2)\n",
    "                     ,round(svm_score6.mean(),2),round(svm_score7.mean(),2),round(svm_score8.mean(),2),round(svm_score9.mean(),2),round(svm_score10.mean(),2)\n",
    "                     ,round(svm_score11.mean(),2),round(svm_score12.mean(),2),round(svm_score13.mean(),2),round(svm_score14.mean(),2),round(svm_score15.mean(),2)\n",
    "                     ,round(svm_score16.mean(),2),round(svm_score17.mean(),2),round(svm_score18.mean(),2),round(svm_score19.mean(),2),round(svm_score20.mean(),2)\n",
    "                     ,round(svm_score21.mean(),2),round(svm_score22.mean(),2),round(svm_score23.mean(),2),round(svm_score24.mean(),2),round(svm_score25.mean(),2)\n",
    "                     ,round(svm_score26.mean(),2),round(svm_score27.mean(),2),round(svm_score28.mean(),2),round(svm_score29.mean(),2),round(svm_score30.mean(),2)\n",
    "                     ,round(svm_score31.mean(),2),round(svm_score32.mean(),2),round(svm_score33.mean(),2),round(svm_score34.mean(),2),round(svm_score35.mean(),2)\n",
    "                     ,round(svm_score36.mean(),2),round(svm_score37.mean(),2),round(svm_score39.mean(),2),round(svm_score40.mean(),2),round(svm_score45.mean(),2)\n",
    "                     ,round(svm_score41.mean(),2),round(svm_score42.mean(),2),round(svm_score43.mean(),2),round(svm_score44.mean(),2),round(svm_score45.mean(),2)\n",
    "                     ,round(svm_score46.mean(),2),round(svm_score47.mean(),2),round(svm_score48.mean(),2),round(svm_score49.mean(),2),round(svm_score50.mean(),2)\n",
    "                     ,round(svm_score51.mean(),2),round(svm_score52.mean(),2),round(svm_score53.mean(),2),round(svm_score54.mean(),2),round(svm_score55.mean(),2)\n",
    "                     ,round(svm_score56.mean(),2),round(svm_score57.mean(),2),round(svm_score58.mean(),2),round(svm_score59.mean(),2)] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Target Variable</th>\n",
       "      <th>RandomForest</th>\n",
       "      <th>SVM</th>\n",
       "      <th>LogReg</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Salmonella</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Campylobacter</td>\n",
       "      <td>0.79</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Listeria</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>AvgNumBirds</td>\n",
       "      <td>0.57</td>\n",
       "      <td>0.34</td>\n",
       "      <td>0.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>AvgNumFlocks</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.35</td>\n",
       "      <td>0.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>YearsFarming</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>EggSource</td>\n",
       "      <td>0.63</td>\n",
       "      <td>0.59</td>\n",
       "      <td>0.59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>BroodBedding</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>BroodFeed</td>\n",
       "      <td>0.53</td>\n",
       "      <td>0.34</td>\n",
       "      <td>0.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>BrGMOFree</td>\n",
       "      <td>0.77</td>\n",
       "      <td>0.68</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>BrSoyFree</td>\n",
       "      <td>0.85</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>BrMedicated</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>BroodCleanFrequency</td>\n",
       "      <td>0.70</td>\n",
       "      <td>0.63</td>\n",
       "      <td>0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>AvgAgeToPasture</td>\n",
       "      <td>0.73</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>PastureHousing</td>\n",
       "      <td>0.70</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>FreqHousingMove</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>AlwaysNewPasture</td>\n",
       "      <td>0.90</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>PastureFeed</td>\n",
       "      <td>0.53</td>\n",
       "      <td>0.33</td>\n",
       "      <td>0.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>PaGMOFree</td>\n",
       "      <td>0.77</td>\n",
       "      <td>0.68</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>PaSoyFree</td>\n",
       "      <td>0.76</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>PaMedicated</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>LayersOnFarm</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>CattleOnFarm</td>\n",
       "      <td>0.77</td>\n",
       "      <td>0.57</td>\n",
       "      <td>0.71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>SwineOnFarm</td>\n",
       "      <td>0.83</td>\n",
       "      <td>0.81</td>\n",
       "      <td>0.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>GoatsOnFarm</td>\n",
       "      <td>0.75</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>SheepOnFarm</td>\n",
       "      <td>0.79</td>\n",
       "      <td>0.58</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>WaterSource</td>\n",
       "      <td>0.72</td>\n",
       "      <td>0.51</td>\n",
       "      <td>0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>FreqBirdHandling</td>\n",
       "      <td>0.89</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>AnyABXUse</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>LengthFeedRestrixProcess</td>\n",
       "      <td>0.26</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>Seasons</td>\n",
       "      <td>0.63</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>FlockAgeDays</td>\n",
       "      <td>0.37</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>Breed</td>\n",
       "      <td>0.69</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>FlockSize</td>\n",
       "      <td>0.51</td>\n",
       "      <td>0.35</td>\n",
       "      <td>0.45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>AnimalSource</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>pH</td>\n",
       "      <td>0.94</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>EC</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.59</td>\n",
       "      <td>0.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>Moisture</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>TotalC</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>TotalN</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.88</td>\n",
       "      <td>0.93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>CNRatio</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.54</td>\n",
       "      <td>0.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>Al</td>\n",
       "      <td>0.90</td>\n",
       "      <td>0.56</td>\n",
       "      <td>0.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>B</td>\n",
       "      <td>0.93</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>Ca</td>\n",
       "      <td>0.94</td>\n",
       "      <td>0.63</td>\n",
       "      <td>0.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>Cd</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.88</td>\n",
       "      <td>0.93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>Cr</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.89</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>Cu</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.66</td>\n",
       "      <td>0.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>Fe</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>K</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.71</td>\n",
       "      <td>0.91</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>Mg</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.64</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>Mn</td>\n",
       "      <td>0.93</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>Mo</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>Na</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>Ni</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.78</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>P</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.70</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>Pb</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56</th>\n",
       "      <td>S</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.58</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>Si</td>\n",
       "      <td>0.93</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>58</th>\n",
       "      <td>Zn</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.58</td>\n",
       "      <td>0.83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             Target Variable  RandomForest   SVM  LogReg\n",
       "0                 Salmonella          0.84  0.84    0.79\n",
       "1              Campylobacter          0.79  0.65    0.74\n",
       "2                   Listeria          0.86  0.86    0.79\n",
       "3                AvgNumBirds          0.57  0.34    0.50\n",
       "4               AvgNumFlocks          0.60  0.35    0.53\n",
       "5               YearsFarming          0.55  0.24    0.46\n",
       "6                  EggSource          0.63  0.59    0.59\n",
       "7               BroodBedding          0.91  0.91    0.86\n",
       "8                  BroodFeed          0.53  0.34    0.47\n",
       "9                  BrGMOFree          0.77  0.68    0.73\n",
       "10                 BrSoyFree          0.85  0.84    0.81\n",
       "11               BrMedicated          0.97  0.97    0.95\n",
       "12       BroodCleanFrequency          0.70  0.63    0.64\n",
       "13           AvgAgeToPasture          0.73  0.62    0.69\n",
       "14            PastureHousing          0.70  0.55    0.61\n",
       "15           FreqHousingMove          0.98  0.98    0.96\n",
       "16          AlwaysNewPasture          0.90  0.87    0.85\n",
       "17               PastureFeed          0.53  0.33    0.47\n",
       "18                 PaGMOFree          0.77  0.68    0.73\n",
       "19                 PaSoyFree          0.76  0.62    0.73\n",
       "20               PaMedicated          0.98  0.98    0.95\n",
       "21              LayersOnFarm          0.96  0.96    0.94\n",
       "22              CattleOnFarm          0.77  0.57    0.71\n",
       "23               SwineOnFarm          0.83  0.81    0.81\n",
       "24               GoatsOnFarm          0.75  0.65    0.73\n",
       "25               SheepOnFarm          0.79  0.58    0.73\n",
       "26               WaterSource          0.72  0.51    0.64\n",
       "27          FreqBirdHandling          0.89  0.86    0.85\n",
       "28                 AnyABXUse          0.98  0.98    0.96\n",
       "29  LengthFeedRestrixProcess          0.26  0.62    0.57\n",
       "30                   Seasons          0.63  0.55    0.55\n",
       "31              FlockAgeDays          0.37  0.08    0.28\n",
       "32                     Breed          0.69  0.65    0.64\n",
       "33                 FlockSize          0.51  0.35    0.45\n",
       "34              AnimalSource          0.91  0.87    0.87\n",
       "35                        pH          0.94  0.62    0.82\n",
       "36                        EC          0.96  0.59    0.89\n",
       "37                  Moisture          0.92  0.55    0.85\n",
       "38                    TotalC          0.92  0.60    0.84\n",
       "39                    TotalN          0.98  0.88    0.93\n",
       "40                   CNRatio          0.97  0.54    0.81\n",
       "41                        Al          0.90  0.56    0.76\n",
       "42                         B          0.93  0.60    0.78\n",
       "43                        Ca          0.94  0.63    0.84\n",
       "44                        Cd          0.98  0.88    0.93\n",
       "45                        Cr          0.98  0.89    0.92\n",
       "46                        Cu          0.92  0.66    0.82\n",
       "47                        Fe          0.95  0.62    0.85\n",
       "48                         K          0.97  0.71    0.91\n",
       "49                        Mg          0.95  0.64    0.88\n",
       "50                        Mn          0.93  0.60    0.82\n",
       "51                        Mo          0.98  0.61    0.92\n",
       "52                        Na          0.96  0.65    0.88\n",
       "53                        Ni          0.96  0.78    0.90\n",
       "54                         P          0.97  0.70    0.88\n",
       "55                        Pb          0.91  0.62    0.79\n",
       "56                         S          0.95  0.58    0.73\n",
       "57                        Si          0.93  0.55    0.78\n",
       "58                        Zn          0.92  0.58    0.83"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['LogReg'] = [round(lr_score1.mean(),2), round(lr_score2.mean(),2),round(lr_score3.mean(),2),round(lr_score4.mean(),2),round(lr_score5.mean(),2)\n",
    "                     ,round(lr_score6.mean(),2),round(lr_score7.mean(),2),round(lr_score8.mean(),2),round(lr_score9.mean(),2),round(lr_score10.mean(),2)\n",
    "                     ,round(lr_score11.mean(),2),round(lr_score12.mean(),2),round(lr_score13.mean(),2),round(lr_score14.mean(),2),round(lr_score15.mean(),2)\n",
    "                     ,round(lr_score16.mean(),2),round(lr_score17.mean(),2),round(lr_score18.mean(),2),round(lr_score19.mean(),2),round(lr_score20.mean(),2)\n",
    "                     ,round(lr_score21.mean(),2),round(lr_score22.mean(),2),round(lr_score23.mean(),2),round(lr_score24.mean(),2),round(lr_score25.mean(),2)\n",
    "                     ,round(lr_score26.mean(),2),round(lr_score27.mean(),2),round(lr_score28.mean(),2),round(lr_score29.mean(),2),round(lr_score30.mean(),2)\n",
    "                     ,round(lr_score31.mean(),2),round(lr_score32.mean(),2),round(lr_score33.mean(),2),round(lr_score34.mean(),2),round(lr_score35.mean(),2)\n",
    "                     ,round(lr_score36.mean(),2),round(lr_score37.mean(),2),round(lr_score39.mean(),2),round(lr_score40.mean(),2),round(lr_score45.mean(),2)\n",
    "                     ,round(lr_score41.mean(),2),round(lr_score42.mean(),2),round(lr_score43.mean(),2),round(lr_score44.mean(),2),round(lr_score45.mean(),2)\n",
    "                     ,round(lr_score46.mean(),2),round(lr_score47.mean(),2),round(lr_score48.mean(),2),round(lr_score49.mean(),2),round(lr_score50.mean(),2)\n",
    "                     ,round(lr_score51.mean(),2),round(lr_score52.mean(),2),round(lr_score53.mean(),2),round(lr_score54.mean(),2),round(lr_score55.mean(),2)\n",
    "                     ,round(lr_score56.mean(),2),round(lr_score57.mean(),2),round(lr_score58.mean(),2),round(lr_score59.mean(),2)] \n",
    "\n",
    "df.head(100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [],
   "source": [
    "#df.to_csv('Microbiome-Poultry Model Performances.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Good Models: RandomForest 5-fold C.V >= 0.7\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>Target Variable</th>\n",
       "      <th>RandomForest</th>\n",
       "      <th>SVM</th>\n",
       "      <th>LogReg</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>Salmonella</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>Campylobacter</td>\n",
       "      <td>0.79</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>Listeria</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7</td>\n",
       "      <td>BroodBedding</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9</td>\n",
       "      <td>BrGMOFree</td>\n",
       "      <td>0.77</td>\n",
       "      <td>0.68</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>10</td>\n",
       "      <td>BrSoyFree</td>\n",
       "      <td>0.85</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>11</td>\n",
       "      <td>BrMedicated</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>12</td>\n",
       "      <td>BroodCleanFrequency</td>\n",
       "      <td>0.70</td>\n",
       "      <td>0.63</td>\n",
       "      <td>0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>13</td>\n",
       "      <td>AvgAgeToPasture</td>\n",
       "      <td>0.73</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>14</td>\n",
       "      <td>PastureHousing</td>\n",
       "      <td>0.70</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>15</td>\n",
       "      <td>FreqHousingMove</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>16</td>\n",
       "      <td>AlwaysNewPasture</td>\n",
       "      <td>0.90</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>18</td>\n",
       "      <td>PaGMOFree</td>\n",
       "      <td>0.77</td>\n",
       "      <td>0.68</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>19</td>\n",
       "      <td>PaSoyFree</td>\n",
       "      <td>0.76</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>20</td>\n",
       "      <td>PaMedicated</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>21</td>\n",
       "      <td>LayersOnFarm</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>22</td>\n",
       "      <td>CattleOnFarm</td>\n",
       "      <td>0.77</td>\n",
       "      <td>0.57</td>\n",
       "      <td>0.71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>23</td>\n",
       "      <td>SwineOnFarm</td>\n",
       "      <td>0.83</td>\n",
       "      <td>0.81</td>\n",
       "      <td>0.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>24</td>\n",
       "      <td>GoatsOnFarm</td>\n",
       "      <td>0.75</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>25</td>\n",
       "      <td>SheepOnFarm</td>\n",
       "      <td>0.79</td>\n",
       "      <td>0.58</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>26</td>\n",
       "      <td>WaterSource</td>\n",
       "      <td>0.72</td>\n",
       "      <td>0.51</td>\n",
       "      <td>0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>27</td>\n",
       "      <td>FreqBirdHandling</td>\n",
       "      <td>0.89</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>28</td>\n",
       "      <td>AnyABXUse</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>34</td>\n",
       "      <td>AnimalSource</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>35</td>\n",
       "      <td>pH</td>\n",
       "      <td>0.94</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>36</td>\n",
       "      <td>EC</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.59</td>\n",
       "      <td>0.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>37</td>\n",
       "      <td>Moisture</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>38</td>\n",
       "      <td>TotalC</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>39</td>\n",
       "      <td>TotalN</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.88</td>\n",
       "      <td>0.93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>40</td>\n",
       "      <td>CNRatio</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.54</td>\n",
       "      <td>0.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>41</td>\n",
       "      <td>Al</td>\n",
       "      <td>0.90</td>\n",
       "      <td>0.56</td>\n",
       "      <td>0.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>42</td>\n",
       "      <td>B</td>\n",
       "      <td>0.93</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>43</td>\n",
       "      <td>Ca</td>\n",
       "      <td>0.94</td>\n",
       "      <td>0.63</td>\n",
       "      <td>0.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>44</td>\n",
       "      <td>Cd</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.88</td>\n",
       "      <td>0.93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>45</td>\n",
       "      <td>Cr</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.89</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>46</td>\n",
       "      <td>Cu</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.66</td>\n",
       "      <td>0.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>47</td>\n",
       "      <td>Fe</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>48</td>\n",
       "      <td>K</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.71</td>\n",
       "      <td>0.91</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>49</td>\n",
       "      <td>Mg</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.64</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>50</td>\n",
       "      <td>Mn</td>\n",
       "      <td>0.93</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>51</td>\n",
       "      <td>Mo</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>52</td>\n",
       "      <td>Na</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>53</td>\n",
       "      <td>Ni</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.78</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>54</td>\n",
       "      <td>P</td>\n",
       "      <td>0.97</td>\n",
       "      <td>0.70</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>55</td>\n",
       "      <td>Pb</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>56</td>\n",
       "      <td>S</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.58</td>\n",
       "      <td>0.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>57</td>\n",
       "      <td>Si</td>\n",
       "      <td>0.93</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>58</td>\n",
       "      <td>Zn</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.58</td>\n",
       "      <td>0.83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    index      Target Variable  RandomForest   SVM  LogReg\n",
       "0       0           Salmonella          0.84  0.84    0.79\n",
       "1       1        Campylobacter          0.79  0.65    0.74\n",
       "2       2             Listeria          0.86  0.86    0.79\n",
       "3       7         BroodBedding          0.91  0.91    0.86\n",
       "4       9            BrGMOFree          0.77  0.68    0.73\n",
       "5      10            BrSoyFree          0.85  0.84    0.81\n",
       "6      11          BrMedicated          0.97  0.97    0.95\n",
       "7      12  BroodCleanFrequency          0.70  0.63    0.64\n",
       "8      13      AvgAgeToPasture          0.73  0.62    0.69\n",
       "9      14       PastureHousing          0.70  0.55    0.61\n",
       "10     15      FreqHousingMove          0.98  0.98    0.96\n",
       "11     16     AlwaysNewPasture          0.90  0.87    0.85\n",
       "12     18            PaGMOFree          0.77  0.68    0.73\n",
       "13     19            PaSoyFree          0.76  0.62    0.73\n",
       "14     20          PaMedicated          0.98  0.98    0.95\n",
       "15     21         LayersOnFarm          0.96  0.96    0.94\n",
       "16     22         CattleOnFarm          0.77  0.57    0.71\n",
       "17     23          SwineOnFarm          0.83  0.81    0.81\n",
       "18     24          GoatsOnFarm          0.75  0.65    0.73\n",
       "19     25          SheepOnFarm          0.79  0.58    0.73\n",
       "20     26          WaterSource          0.72  0.51    0.64\n",
       "21     27     FreqBirdHandling          0.89  0.86    0.85\n",
       "22     28            AnyABXUse          0.98  0.98    0.96\n",
       "23     34         AnimalSource          0.91  0.87    0.87\n",
       "24     35                   pH          0.94  0.62    0.82\n",
       "25     36                   EC          0.96  0.59    0.89\n",
       "26     37             Moisture          0.92  0.55    0.85\n",
       "27     38               TotalC          0.92  0.60    0.84\n",
       "28     39               TotalN          0.98  0.88    0.93\n",
       "29     40              CNRatio          0.97  0.54    0.81\n",
       "30     41                   Al          0.90  0.56    0.76\n",
       "31     42                    B          0.93  0.60    0.78\n",
       "32     43                   Ca          0.94  0.63    0.84\n",
       "33     44                   Cd          0.98  0.88    0.93\n",
       "34     45                   Cr          0.98  0.89    0.92\n",
       "35     46                   Cu          0.92  0.66    0.82\n",
       "36     47                   Fe          0.95  0.62    0.85\n",
       "37     48                    K          0.97  0.71    0.91\n",
       "38     49                   Mg          0.95  0.64    0.88\n",
       "39     50                   Mn          0.93  0.60    0.82\n",
       "40     51                   Mo          0.98  0.61    0.92\n",
       "41     52                   Na          0.96  0.65    0.88\n",
       "42     53                   Ni          0.96  0.78    0.90\n",
       "43     54                    P          0.97  0.70    0.88\n",
       "44     55                   Pb          0.91  0.62    0.79\n",
       "45     56                    S          0.95  0.58    0.73\n",
       "46     57                   Si          0.93  0.55    0.78\n",
       "47     58                   Zn          0.92  0.58    0.83"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"Good Models: RandomForest 5-fold C.V >= 0.7\")\n",
    "\n",
    "good_models = df[df.RandomForest >= 0.7].reset_index()\n",
    "\n",
    "good_models.to_csv(\"Script 1 Good Models.csv\")\n",
    "good_models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Poor Models: RandomForest 5-fold C.V < 0.7\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>Target Variable</th>\n",
       "      <th>RandomForest</th>\n",
       "      <th>SVM</th>\n",
       "      <th>LogReg</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>AvgNumBirds</td>\n",
       "      <td>0.57</td>\n",
       "      <td>0.34</td>\n",
       "      <td>0.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>AvgNumFlocks</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.35</td>\n",
       "      <td>0.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5</td>\n",
       "      <td>YearsFarming</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6</td>\n",
       "      <td>EggSource</td>\n",
       "      <td>0.63</td>\n",
       "      <td>0.59</td>\n",
       "      <td>0.59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>8</td>\n",
       "      <td>BroodFeed</td>\n",
       "      <td>0.53</td>\n",
       "      <td>0.34</td>\n",
       "      <td>0.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>17</td>\n",
       "      <td>PastureFeed</td>\n",
       "      <td>0.53</td>\n",
       "      <td>0.33</td>\n",
       "      <td>0.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>29</td>\n",
       "      <td>LengthFeedRestrixProcess</td>\n",
       "      <td>0.26</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>30</td>\n",
       "      <td>Seasons</td>\n",
       "      <td>0.63</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>31</td>\n",
       "      <td>FlockAgeDays</td>\n",
       "      <td>0.37</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>32</td>\n",
       "      <td>Breed</td>\n",
       "      <td>0.69</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>33</td>\n",
       "      <td>FlockSize</td>\n",
       "      <td>0.51</td>\n",
       "      <td>0.35</td>\n",
       "      <td>0.45</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    index           Target Variable  RandomForest   SVM  LogReg\n",
       "0       3               AvgNumBirds          0.57  0.34    0.50\n",
       "1       4              AvgNumFlocks          0.60  0.35    0.53\n",
       "2       5              YearsFarming          0.55  0.24    0.46\n",
       "3       6                 EggSource          0.63  0.59    0.59\n",
       "4       8                 BroodFeed          0.53  0.34    0.47\n",
       "5      17               PastureFeed          0.53  0.33    0.47\n",
       "6      29  LengthFeedRestrixProcess          0.26  0.62    0.57\n",
       "7      30                   Seasons          0.63  0.55    0.55\n",
       "8      31              FlockAgeDays          0.37  0.08    0.28\n",
       "9      32                     Breed          0.69  0.65    0.64\n",
       "10     33                 FlockSize          0.51  0.35    0.45"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"Poor Models: RandomForest 5-fold C.V < 0.7\")\n",
    "\n",
    "poor_models = df[df.RandomForest < 0.7].reset_index()\n",
    "poor_models.to_csv(\"Script 1 Poor Models.csv\")\n",
    "poor_models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average RF 5-fold CV: 0.83\n"
     ]
    }
   ],
   "source": [
    "print(\"Average RF 5-fold CV:\",round(df.RandomForest.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average LogReg 5-fold CV: 0.76\n"
     ]
    }
   ],
   "source": [
    "print(\"Average LogReg 5-fold CV:\",round(df.LogReg.mean(),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average SVM 5-fold CV: 0.65\n"
     ]
    }
   ],
   "source": [
    "print(\"Average SVM 5-fold CV:\",round(df.SVM.mean(),2))"
   ]
  }
 ],
 "metadata": {
  "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.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
