{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Comparison and assessment of GRN inference methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load GRNs inferences\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\"Concatenation.csv\",index_col=0)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rank_Fpscore_Fprank_Ffscore_Ffrank_L1score_L1rank_genie3score_genie3rank_lassoscore_lassorank_MUscore_MU
AP-2_128up697038.019.810534697038.019.81053440.00.003222376.00.000051224782.0-0.01491542.00.095487
AP-2_14-3-3epsilon2914431.00.8919302914431.00.89193040.00.003599075.00.000010224782.0-0.02371660.00.036340
AP-2_14-3-3zeta1675339.05.6266921675339.05.62669240.00.00403323.00.003226224782.00.01759208.00.076210
AP-2_140up639279.021.589479639279.021.58947938.00.04516395.00.002409224782.00.02106952.00.053130
AP-2_18w127334.066.664716127334.066.66471640.00.00691518.00.001697224782.00.0463400.00.214440
\n", "
" ], "text/plain": [ " rank_Fp score_Fp rank_Ff score_Ff rank_L1 \\\n", "AP-2_128up 697038.0 19.810534 697038.0 19.810534 40.0 \n", "AP-2_14-3-3epsilon 2914431.0 0.891930 2914431.0 0.891930 40.0 \n", "AP-2_14-3-3zeta 1675339.0 5.626692 1675339.0 5.626692 40.0 \n", "AP-2_140up 639279.0 21.589479 639279.0 21.589479 38.0 \n", "AP-2_18w 127334.0 66.664716 127334.0 66.664716 40.0 \n", "\n", " score_L1 rank_genie3 score_genie3 rank_lasso \\\n", "AP-2_128up 0.00 3222376.0 0.000051 224782.0 \n", "AP-2_14-3-3epsilon 0.00 3599075.0 0.000010 224782.0 \n", "AP-2_14-3-3zeta 0.00 403323.0 0.003226 224782.0 \n", "AP-2_140up 0.04 516395.0 0.002409 224782.0 \n", "AP-2_18w 0.00 691518.0 0.001697 224782.0 \n", "\n", " score_lasso rank_MU score_MU \n", "AP-2_128up -0.0 1491542.0 0.095487 \n", "AP-2_14-3-3epsilon -0.0 2371660.0 0.036340 \n", "AP-2_14-3-3zeta 0.0 1759208.0 0.076210 \n", "AP-2_140up 0.0 2106952.0 0.053130 \n", "AP-2_18w 0.0 463400.0 0.214440 " ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "df_rank = df[[c for c in df.columns if \"rank\" in c]]\n", "df_score = df[[c for c in df.columns if \"score\" in c]]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "df_rank_z = (df_rank - df_rank.mean())/df_rank.std()\n", "df_score_z = (df_score - df_score.mean())/df_score.std()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.imshow(df_rank_z,aspect=\"auto\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load \"High Confidence\" GRN" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TFTGconfidence
abd-A_2mitabd-A2mitmedium
abd-A_5-HT1Aabd-A5-HT1Ahigh
abd-A_5-HT1Aabd-A5-HT1Amedium
abd-A_5-HT7abd-A5-HT7high
abd-A_5-HT7abd-A5-HT7medium
\n", "
" ], "text/plain": [ " TF TG confidence\n", "abd-A_2mit abd-A 2mit medium\n", "abd-A_5-HT1A abd-A 5-HT1A high\n", "abd-A_5-HT1A abd-A 5-HT1A medium\n", "abd-A_5-HT7 abd-A 5-HT7 high\n", "abd-A_5-HT7 abd-A 5-HT7 medium" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hc = pd.read_csv(\"high_and_medium_confidence_tf_to_predicted_target_genes_cytoscape.tsv\",sep=\"\\t\",header=None)\n", "hc.columns = [\"TF\",\"TG\",\"confidence\"]\n", "hc.index = hc[\"TF\"]+\"_\"+hc[\"TG\"]\n", "hc.head()" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(245, 245)" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(np.unique(hc[\"TF\"])),len(set(hc[\"TF\"]).intersection(set([e.split(\"_\")[0] for e in df.index])))" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [], "source": [ "possible_links = set(hc.index).intersection(set(df.index))\n", "hc = hc.loc[possible_links]" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(122823, 3)" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hc.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compare methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ Represent the correlation between the different methods using a heatmap " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.heatmap(df_rank_z.corr())" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.heatmap(df_score_z.corr())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ Generate a [dendogram](https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.cluster.hierarchy.dendrogram.html) or a [clustermap](https://seaborn.pydata.org/generated/seaborn.clustermap.html) using the ranking or the score vectors " ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.clustermap(df_score_z.loc[hc.index])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " + Compare the top $k$ links of each method using the [Jaccard similarity score](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.jaccard_similarity_score.html), represent the results in a matrix" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import jaccard_similarity_score" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rank_Fp rank_Ff\n", "rank_Fp rank_L1\n", "rank_Fp rank_genie3\n", "rank_Fp rank_lasso\n", "rank_Fp rank_MU\n", "rank_Ff rank_L1\n", "rank_Ff rank_genie3\n", "rank_Ff rank_lasso\n", "rank_Ff rank_MU\n", "rank_L1 rank_genie3\n", "rank_L1 rank_lasso\n", "rank_L1 rank_MU\n", "rank_genie3 rank_lasso\n", "rank_genie3 rank_MU\n", "rank_lasso rank_MU\n" ] } ], "source": [ "k=10000\n", "jaccard_sim = pd.DataFrame(columns=df_rank.columns,index=df_rank.columns)\n", "methods = list(jaccard_sim.columns)\n", "for i,c in enumerate(methods[:-1]):\n", " top_k_c = list(df_rank[c].sort_values().index)[:k]\n", " for j,b in enumerate(methods[i+1:]):\n", " top_k_i = list(df_rank[b].sort_values().index)[:k]\n", " inter = len(set(top_k_i).intersection(set(top_k_c)))\n", " union = len(set(top_k_i).union(set(top_k_c)))\n", " jaccard_sim.loc[b,c] = inter/union\n", " jaccard_sim.loc[c,b] = jaccard_sim.loc[b,c]\n", " print(c,b)\n", " " ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rank_Fprank_Ffrank_L1rank_genie3rank_lassorank_MU
rank_FpNaN10.1045450.08701560.03734440.251564
rank_Ff1NaN0.1045450.08701560.03734440.251564
rank_L10.1045450.104545NaN0.09283650.06524630.0716391
rank_genie30.08701560.08701560.0928365NaN0.0746910.0894433
rank_lasso0.03734440.03734440.06524630.074691NaN0.0308747
rank_MU0.2515640.2515640.07163910.08944330.0308747NaN
\n", "
" ], "text/plain": [ " rank_Fp rank_Ff rank_L1 rank_genie3 rank_lasso rank_MU\n", "rank_Fp NaN 1 0.104545 0.0870156 0.0373444 0.251564\n", "rank_Ff 1 NaN 0.104545 0.0870156 0.0373444 0.251564\n", "rank_L1 0.104545 0.104545 NaN 0.0928365 0.0652463 0.0716391\n", "rank_genie3 0.0870156 0.0870156 0.0928365 NaN 0.074691 0.0894433\n", "rank_lasso 0.0373444 0.0373444 0.0652463 0.074691 NaN 0.0308747\n", "rank_MU 0.251564 0.251564 0.0716391 0.0894433 0.0308747 NaN" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "jaccard_sim" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.heatmap(jaccard_sim.fillna(0))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ For each method, keep only the edges that are reported in the \"high confidence\" GRN.\n", "+ Apply a [PCA](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html) to the rankings of the methods for the chosen links, keep 3 dimensions, and the location of each method in this new space (you go from $M$ points in a $|E_{HC}|$-th dimensional space to $M$ points in a 3D space ). \n", "\n", "__Check the following example:__" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " score_Fp score_Ff score_L1 score_genie3 score_lasso \\\n", "lola_clt -0.395138 -0.395138 -0.210425 -0.166242 -0.043711 \n", "Xbp1_Syx5 0.465924 0.465924 0.547407 0.947467 7.452334 \n", "E2f_flfl 10.315223 10.315223 1.305238 0.037365 -0.043711 \n", "grh_CG32479 2.696419 2.696419 0.547407 -0.115135 -0.043711 \n", "srp_BM-40-SPARC 1.904669 1.904669 8.125720 42.921821 16.380173 \n", "\n", " score_MU \n", "lola_clt -0.895213 \n", "Xbp1_Syx5 -0.374862 \n", "E2f_flfl 4.819065 \n", "grh_CG32479 2.104183 \n", "srp_BM-40-SPARC 2.222184 \n", "\n", "Explained variance ratio for each PC\n", "[0.53746059 0.23295944 0.15957145]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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qQw7gCIzW+Tubye2shOrqakhLS0xm79r167HDTqALl268Je//IXWrVvz3SdW8eCtBZx7XV8i5w2m67/+igOrF/Cd703j4iGND5RIJHLE+Ne+9jXmzTu1RyOa2XHHReT0lurdmEOAre7+rrv/DXgSGNNcKzt48CCjR48mKyuLAQMGMH/+fIqKihg6dChZWVkMGTKE8vJyqqqqmDBhApmZmWRnZ/Pyyy8DMGfOHAoKChg5ciSXXnopEO0WzM3NZeDAgUyfPv246//Rj35Ev379uOSSSxg/fjwPPPAAAO+88w6XX345F154IcOHD2fTpk0AfPOb3+SOO+5g6NChnHfeebUBt23bNgYMGADAp59+ytSpU2tr+NWvfgXAGWecQevWrQF4atV74A7AoV1baRk5kw75txEZdCUbNmygsrKSuXPnAtG9xqqqKnJzc2uXtXTpUg4ePEheXt4xn+nqq6/mueeeY9euXQAUFxezYcOGRv/bVFRU8PHHH1NZWcnChQsZNmxYo5chIuGV0nt2QDfgg5jxHcA/NtfKlixZQteuXVm8eDEA+/fvJzs7m/nz55Obm8uBAweIRCI89NBDmBnr169n06ZN5OXlsWXLFgDWrl3LunXryMjIoLCwkJKSElavXo27U1BQwIoVKxgxYsQx6y4qKuLZZ5/lzTffpLq6msGDB3PhhRcCMHHiRH75y1/St29fVq1axeTJk3nppZcAKCsrY+XKlWzatImCggK++tWvHrHcxx57jLPOOouioiIOHTrEsGHDyMvLo0+fPnzwwQeMHj2a9zdu4ex/nkDamR2oWL+MXX9+EswwjDmPzcLdue2227j11ltp2bIlW7duZe7cueTm5tKmTRtatGjBT37yE9q3b3/M55o2bRpFRUX07t0bgFatWvHcc89xwQUXNOrfJhKJcPXVV7Njxw6uu+46dWGKyBFSPexOKHg80USAnj17ntQyFr5eyoylm9n+7l4+euZ59lZP5t9uGk96ejpdunQhNzcXoPaP+cqVK5kyZQoA/fv3p1evXrVhd9lll5GRkQFAYWEhhYWFZGdnA9G9k5KSkjrD7tVXX2XMmDG0adOGNm3acOWVV9a+589//jPXXHNN7byHDh2qHR47diwtWrTg/PPP58MPPzxmuYWFhaxbt652r2///v2UlJTQp08fevTowbp16+h1++/YteBHfK7fMNKHfo30oV8DoKUZ118/CqD2mF2skpKSY9oeffTRY9oWLFhwTFt9PNjDjHXOOedw/fXX88gjjzR4OSJyekn1sCsFesSMdw/aagVPbZgFkJOTc+xfyhNY+Hop0xasp7L6U9IyutHx+v/mte1rufVbU7m24MuNLvjwiRhBbUybNo1bbrml0cs57LPPPiM9PZ033nijzumHuyIPr+9o7s7DDz9Mfn5+vev4xpcG8d8relH1wQba9r+ktn38P/ao9z0iIskk1Y/ZFQF9zayPmZ0BjAMWNeUKZizdTGX1pwDUlO+lRavWnNH/i3w24EpWrVpFWVkZRUVFAJSXl1NTU8Pw4cNrT7jYsmUL77//Pv369Ttm2fn5+cyePZuKigoASktL2b17d511DBs2jOeff56qqioqKip44YUXgOjeZJ8+fXj66aeBaHi9+eabDf58+fn5zJw5k+rq6tp6Dx48yI4dO2rPerzri91p/VEJbTpEw62lGddd1JMfj81s8Hoao6Sk5Ii7pBx+1bWnCNFjk9qrE5HjSek9O3evMbPbgaVELz2Y7e6NP7vhOHbu+/tp7tV7trH7ld9Ej1e1SON3z/8ed2fKlClUVlYSiURYtmwZkydPZtKkSWRmZpKWlsacOXOO2MM6LC8vj40bN3LxxRcD0K5dOx5//HE6dep0zLy5ubkUFBQwcOBAOnfuTGZmJmeddRYA8+bNY9KkSfz4xz+murqacePGkZWV1aDPd/PNN7Nt2zYGDx6Mu9OxY0cWLlzIxo0bueuuuzAz3J377v0/TJw48WQ2YaP17du3zssLREROltXVtRVWOTk53tiLjYfd/xKl+479w9stPcKrd49sqtIapKKignbt2vHJJ58wYsQIZs2axeDBg+Nag4icfsxsjbun9Flfqd6N2eym5vcj0qrlEW2RVi2Zmn9st2RzmzhxIoMGDWLw4MFcffXVCjoRkQZK6W7MeBib3Q2IHrvbua+SrukRpub3q21vanv37q29Bi/W8uXL+f3vf98s6xQRCTt1Y4qIyHGpG1NERCQFKOxERCT0FHYiIhJ6CjsREQk9hZ2IiISewk5EREJPYSciIqGnsBMRkdBT2ImISOgp7EREJPQUdiIiEnoKOxERCT2FnYiIhJ7CTkREQk9hJyIioZfUYWdm95pZqZm9EbxGxUybZmZbzWyzmeUnsk4REUluqfCk8p+5+wOxDWZ2PjAOuADoCiwzs39w908TUaCIiCS3pN6zO44xwJPufsjd3wO2AkMSXJOIiCSpVAi7281snZnNNrOzg7ZuwAcx8+wI2kRERI6R8LAzs2Vm9lYdrzHATODzwCCgDPjpSSx/opkVm1nxnj17mrh6ERFJBQk/ZufuX2rIfGb2a+CFYLQU6BEzuXvQVtfyZwGzAHJycvzkKxURkVSV8D274zGzLjGjVwFvBcOLgHFm1trM+gB9gdXxrk9ERFJDwvfsTuAnZjYIcGAbcAuAu28ws6eAt4Ea4DadiSkiIvVJ6rBz928cZ9p/AP8Rx3JERCRFJXU3poiISFNQ2ImISOgp7EROQ2bGddddVzteU1NDx44dueKKKwC49957eeCBI25cRO/evfnoo4/iWqdIU1HYiaS4mpqaRr+nbdu2vPXWW1RWVgLw4osv0q2b7ssg4aWwE0mAgwcPMnr0aLKyshgwYADz58+nqKiIoUOHkpWVxZAhQygvL6eqqooJEyaQmZlJdnY2L7/8MgBz5syhoKCAkSNHcumllwIwY8YMcnNzGThwINOnTz9hDaNGjWLx4sUAPPHEE4wfP775PrBIgiX12ZgiYbVkyRK6du1aGzb79+8nOzub+fPnk5uby4EDB4hEIjz00EOYGevXr2fTpk3k5eWxZcsWANauXcu6devIyMigsLCQkpISVq9ejbtTUFDAihUrGDFiRL01jBs3jh/+8IdcccUVrFu3jhtvvJE//elPcfn8IvGmsBOJo4WvlzJj6Wa2v7uXj555nr3Vk/m3m8aTnp5Oly5dyM3NBaB9+/YArFy5kilTpgDQv39/evXqVRt2l112GRkZGQAUFhZSWFhIdnY2ABUVFZSUlBw37AYOHMi2bdt44oknGDVq1BHTzKzO99TXLpLsFHYicbLw9VKmLVhPZfWnpGV0o+P1/81r29dy67emcm3Blxu9vLZt29YOuzvTpk3jlltuadQyCgoK+M53vsMrr7zC3r17a9s7dOhAWVnZEfOWl5eTnp7e6DpFkoGO2YnEyYylm6msjt7op6Z8Ly1ateaM/l/kswFXsmrVKsrKyigqKgKiwVJTU8Pw4cOZN28eAFu2bOH999+nX79+xyw7Pz+f2bNnU1FRAUBpaSm7d+8+YU033ngj06dPJzMz84j2ESNGsGjRIsrLywFYsGABWVlZtGzZ8uQ3gEgCac9OJE527qusHa7es43dr/wGzLAWafzu+d/j7kyZMoXKykoikQjLli1j8uTJTJo0iczMTNLS0pgzZw6tW7c+Ztl5eXls3LiRiy++GIB27drx+OOP06lTp+PW1L17d+64445j2gcOHMjtt9/OJZdcgpnRqVMnHn300VPcAiKJY+6nz4MAcnJyvLi4ONFlyGlq2P0vURoTeId1S4/w6t0jE1CRSMOY2Rp3z0l0HadC3ZgicTI1vx+RVkd2A0ZatWRq/rHdkiLStNSNKRInY7OjF23PWLqZnfsq6ZoeYWp+v9r2prZ3797aa/BiLV++nA4dOjTLOkWSlboxRUTkuNSNKSIikgIUdiIiEnoKOxERCT2FnYiIhJ7CTkREQi8pws7MrjGzDWb2mZnlHDVtmpltNbPNZpYf03550LbVzO6Of9UiIpIqkiLsgLeArwArYhvN7HxgHHABcDnwP2bW0sxaAr8AvgycD4wP5hURETlGUlxU7u4boc7Hh4wBnnT3Q8B7ZrYVGBJM2+ru7wbvezKY9+34VCwiIqkkWfbs6tMN+CBmfEfQVl+7iIjIMeK2Z2dmy4Bz65j0fXd/rhnXOxGYCNCzZ8/mWo2IiCSxuIWdu3/pJN5WCvSIGe8etHGc9qPXOwuYBdHbhZ1EDSIikuKSvRtzETDOzFqbWR+gL7AaKAL6mlkfMzuD6EksixJYp4iIJLGkOEHFzK4CHgY6AovN7A13z3f3DWb2FNETT2qA29z90+A9twNLgZbAbHffkKDyRUQkyempByIiclx66oGIiEgKUNiJiEjoKexERCT0FHYiIhJ6CjsREQk9hZ2IiISewk5EREJPYSciIqGnsBMRkdBT2ImISOgp7EREJC7MrCJR61bYiYhIo5lZUjxIoKEUdiIip4mDBw8yevRosrKyGDBgAPPnz6eoqIihQ4eSlZXFkCFDKC8vp6qqigkTJpCZmUl2djbAmQBm9k0zW2RmLwHLg7apZlZkZuvM7AcNqcPM2pnZcjNba2brzWxM0N7WzBab2Ztm9paZfS1ov9/M3g7W8UDQ1tvMXgralpvZcZ/OnVLJLCIiJ2/JkiV07dqVxYsXA7B//36ys7OZP38+ubm5HDhwgEgkwkMPPYSZsX79ejZt2sQXvvCF3mbWJljMYGCgu39sZnlEnzM6BDBgkZmNcPcVJyilCrjK3Q+Y2TnAa2a2CLgc2OnuowHM7Cwz6wBcBfR3dzez9GAZDwNz3X2umd0I/BwYW98KFXYiIiG28PVSZizdzM59lZxdXcGOxUvI+N73uOKKK0hPT6dLly7k5uYC0L59ewBWrlzJlClTAOjfvz/A34B/CBb5ort/HAznBa/Xg/F2RMPvRGFnwH+a2QjgM6Ab0BlYD/zUzP4LeMHd/xR0l1YBj5nZC8ALwTIuBr4SDP8O+MnxVqiwExEJqYWvlzJtwXoqqz8F4ONW55D+9Qc5dGYZ99xzDyNHjjyZxR6MGTbgPnf/VSOX8S9EH9Z9obtXm9k2oI27bzGzwcAo4Mdmttzdf2hmQ4BLga8CtwONLlzH7EREQmrG0s21QQdQU76XQ6RRlDaAqVOnsmrVKsrKyigqKgKgvLycmpoahg8fzrx58wDYsmULwBnA5jpWsRS40czaAZhZNzPr1IDSzgJ2B0H3z0Cv4P1dgU/c/XFgBjA4WPZZ7v4H4N+ArGAZfwbGBcP/AvzpeCvUnp2ISEjt3Fd5xHj1nm3sfuU3lJnxg54dmDlzJu7OlClTqKysJBKJsGzZMiZPnsykSZPIzMwkLS0NYJu7HzKzI5bn7oVm9gXgL8G0CuA6YPcJSpsHPG9m64FiYFPQngnMMLPPgGpgEtGTY54Ljhka8O1g3inAb8xsKrAHmHC8FZq7n6Cm5mdm1wD3Al8Ahrh7cdDeG9jI3/9H8Zq73xpMuxCYA0SAPwB3+gk+TE5OjhcXFzf9BxARSULD7n+J0qMCD6BbeoRX7254T6CZrXH3nKasLd6SpRvzLaIHGus6qPmOuw8KXrfGtM8E/pXowdC+RM/iERGRwNT8fkRatTyiLdKqJVPz+yWoosRJim5Md98IcPQucn3MrAvQ3t1fC8Z/S/SU0z82V40iIqlmbHY3gNqzMbumR5ia36+2vTkElwosr2PSpe6+t9lWfAJJEXYn0MfMXgcOAPe4+5+Inqa6I2aeHUGbiIjEGJvdrVnD7WhBoA2K2wobKG5hZ2bLgHPrmPR9d3+unreVAT3dfW9wjG6hmV3QyPVOBCYC9Ox53AvsRUQkpOIWdu7+pZN4zyHgUDC8xszeIXphYynQPWbW7kFbXcuYBcyC6Akqja1BRERSX7KcoFInM+toZi2D4fOInojyrruXAQfM7CKLHui7Hqhv71BERE5zSRF2ZnaVme0gevuXxWa2NJg0AlhnZm8AzwC3xtymZjLwKLAVeAednCIiIvVIiuvs4kXX2YmINF4YrrM7rcLOzPYA2xNcxjnARwmu4XhU36lJ9vog+WtUfaemOerr5e4dm3iZcXVahV0yMLPiZP4fkuo7NcleHyR/jarv1CR7fYmSFMfsREREmpPCTkREQk9hF3+zEl3ACai+U5Ps9UHy16j6Tk2y15cQOmYnIiKhpz07EREJPYVdMzGza8xsg5l9ZmY5Me29zazSzN4IXr+MmXahma03s61m9nNr6GMgmrC+YNq0oIbNZpYf03550LbVzO5urtrqqffMfnB8AAAEz0lEQVReMyuN2W6jTlRvvCVy+9THzLYF36k3zOzwcyIzzOxFMysJfp4d55pmm9luM3srpq3Omizq58E2XWdmgxNUX9J8/8ysh5m9bGZvB7/DdwbtSbMNk5K769UML6IPou0HvALkxLT3Bt6q5z2rgYuIPo33j8CXE1Df+cCbQGugD9G707QMXu8A5wFnBPOcH8fteS/wnTra66w3Af/eCd0+x6lrG3DOUW0/Ae4Ohu8G/ivONY0ABsf+HtRXEzAq+F2w4HdjVYLqS5rvH9AFGBwMnwlsCepImm2YjC/t2TUTd9/o7ptPPGdU7DP6PPoNPfyMvnjXNwZ40t0Puft7RG/HNiR4bXX3d939b8CTwbyJVl+98Zas26cuY4C5wfBcmvF7Vhd3XwF8fFRzfTWNAX7rUa8B6cHvSrzrq0/cv3/uXubua4PhcmAj0UecJc02TEYKu8ToY2avm9n/M7PhQVuyPKOvG/BBHXXU1x5PtwfdMLNjut6Soa5kquNoDhSa2RqLPu4KoLNHb6YOsAvonJjSjlBfTcm0XZPu+2dmvYFsYBWpsQ0TJhUe3pq0LEHP6Gvm+hLmePUCM4EfEf3j/SPgp8CN8asuZV3i7qVm1gl40cw2xU50dzezpDolOxlrIgm/f2bWDngW+Ja7H4g9xJ+k2zChFHanwBP0jL7mrC9YZ4966qivvUk0tF4z+zXwQjB6vHrjKVnqOIK7lwY/d5vZ/xLtYvvQzLq4e1nQnbU7oUVG1VdTUmxXd//w8HAyfP/MrBXRoJvn7guC5qTehommbsw4s+R/Rt8iYJyZtTazPkF9q4EioK+Z9TGzM4BxwbxxcdQxhquAw2fK1VdvvCV0+9TFzNqa2ZmHh4E8otttEXBDMNsNJMezIOuraRFwfXBG4UXA/piuurhJpu9f8PfhMWCjuz8YMympt2HCJfoMmbC+iP5C7CC6F/chsDRovxrYALwBrAWujHlPDtFfoneARwgu+o9nfcG07wc1bCbmjFCiZ3VtCaZ9P87b83fAemAd0V/eLieqNwH/5gnbPvXUcx7RMwXfDL5z3w/aOwDLgRJgGZAR57qeINqdXx18B2+qryaiZxD+Itim64k5czjO9SXN9w+4hGh36rrg78gbwXcvabZhMr50BxUREQk9dWOKiEjoKexERCT0FHYiIhJ6CjsREQk9hZ2IiISewk5EREJPYSciIqGnsBOJEzO7xcx2Bc9De9fMvhkz7RozWxVM22Bm0xNYqkjoKOxE4icTuNfdBwFfJXozYczsBuB7wNXBtFwa/ogZEWkA3UFFJE7MbAXwf939leApBFuAnsB7QK67v5vQAkVCTHt2IvGTCWwMbuR7B9E7548l+uRoBZ1IM1LYicSBmfUA2gFLid4V/2zgNmAA0Rv51vWe88zsMTN7Jm6FioSUnmcnEh+ZwHJ3vzy20cwOApG63hDs7d2ksBM5ddqzE4mPgUQftXO0PwLXmFlngOC5aP8a18pETgMKO5H4yCT6/LEjuPtq4F5gqZkdfj5Zp/iWJhJ+OhtTJEmZWQfgP4DLgEfd/b4ElySSshR2IiISeurGFBGR0FPYiYhI6CnsREQk9BR2IiISego7EREJPYWdiIiEnsJORERCT2EnIiKhp7ATEZHQ+//NKz4izY1N0QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a dummy join ranking of 10 methods and 100 edges\n", "rankings = df_score_z.loc[possible_links]\n", "print(rankings.head())\n", "# transpose the ranking matrix\n", "rankingsT = rankings.T\n", "# import PCA\n", "from sklearn.decomposition import PCA\n", "# create PCA object with k principal axis\n", "k = 3\n", "pca = PCA(n_components=k)\n", "# Apply the PCA\n", "rankingsT_pca = pca.fit_transform(rankingsT)\n", "# Explained variance ratio for each principal axis\n", "print(\"\\nExplained variance ratio for each PC\")\n", "print(pca.explained_variance_ratio_)\n", "# plot the coordinates of each method along the Principal Axis\n", "plt.plot(rankingsT_pca[:,0],rankingsT_pca[:,1],\"o\")\n", "plt.xlabel(\"$PC_0$\")\n", "plt.ylabel(\"$PC_1$\")\n", "for i,method in enumerate(rankingsT.index):\n", " plt.text(x=rankingsT_pca[i,0], y=rankingsT_pca[i,1], s=method)\n", "plt.figure() \n", "plt.plot(rankingsT_pca[:,1],rankingsT_pca[:,2],\"o\")\n", "plt.xlabel(\"$PC_1$\")\n", "plt.ylabel(\"$PC_2$\")\n", "for i,method in enumerate(rankingsT.index):\n", " plt.text(x=rankingsT_pca[i,1], y=rankingsT_pca[i,2], s=method)\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Assess the quality of the inferred GRNs\n", "In this section we are going to use the following quality measures to evaluate the inferred GRNs with respect to the \"High Confidence\" GRN:\n", "\n", "+ [Precision](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html)\n", "+ [Recall](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html)\n", "+ [Accuracy](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html)\n", "\n", "These measures are defined using the __confusion matrix__\n", "$$ConfMat=\\begin{pmatrix}& T_{real} & F_{real}\\\\T_{pred}& TP & FP \\\\F_{pred} & FN & TN \\end{pmatrix}$$\n", "\n", "__Where__:\n", "+ $TP$: True positive (correctly predicted as True)\n", "+ $FP$: False positive (wrongly predicted as True)\n", "+ $FN$: False negative (wrongly predicted as False)\n", "+ $TN$: True negative (correctly predicted as False)\n", "\n", "__Metrics__:\n", "+ $Recall = \\frac{TP}{TP + FN}$\n", "+ $Precision = \\frac{TP}{TP + FP}$\n", "+ $Accuracy = \\frac{TP+TN}{TP+TN+FP+FN}$\n", "\n", "__Bonus__:\n", "You can also use the follwing evaluation criteria:\n", "+ [ROC curve](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html)\n", "+ [AUC curve](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html#sklearn.metrics.roc_auc_score)\n", "+ [Average Precision Score](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.average_precision_score.html#sklearn.metrics.average_precision_score)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ Select the to $k = |E_{HC}|$ best edges for each method\n", "+ Evaluate the different results with respect to the \"High Confidence\" GRN using the previous measures\n", "+ Which are the best methods, w.r.t. this dataset? Explain" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import precision_score,recall_score,accuracy_score" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [], "source": [ "k = 16000\n", "total_best_links = set(possible_links)\n", "top_K = {}\n", "for c in df_rank.columns:\n", " top_k_c = list(df_rank[c].sort_values().index)[:k]\n", " total_best_links = total_best_links.union(top_k_c)\n", " top_K[c] = top_k_c" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rank_Fp 2144 122382\n", "rank_Ff 2144 122382\n", "rank_L1 1512 123014\n", "rank_genie3 1906 122620\n", "rank_lasso 1045 123481\n", "rank_MU 2281 122245\n" ] } ], "source": [ "results = {}\n", "for c in top_K:\n", " y_pred = pd.Series(0,index=total_best_links)\n", " y_true = pd.Series(0,index=total_best_links)\n", " y_pred[top_K[c]] = 1\n", " y_true[possible_links] = 1\n", " acc = accuracy_score(y_pred=y_pred,y_true=y_true)\n", " rec = recall_score(y_pred=y_pred,y_true=y_true)\n", " pre = precision_score(y_pred=y_pred,y_true=y_true)\n", " results[c] = {\"accuracy\":acc,\"recall\":rec,\"precision\":pre}\n", " print(c, len(set(top_K[c]).intersection(possible_links)), len(set(top_K[c]).union(possible_links)))\n", "results = pd.DataFrame(results)" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rank_Fprank_Ffrank_L1rank_genie3rank_lassorank_MU
accuracy0.2563120.2563120.2484940.2533680.2427170.258007
precision0.1340000.1340000.0945000.1191250.0653120.142563
recall0.0197560.0197560.0139320.0175630.0096290.021018
\n", "
" ], "text/plain": [ " rank_Fp rank_Ff rank_L1 rank_genie3 rank_lasso rank_MU\n", "accuracy 0.256312 0.256312 0.248494 0.253368 0.242717 0.258007\n", "precision 0.134000 0.134000 0.094500 0.119125 0.065312 0.142563\n", "recall 0.019756 0.019756 0.013932 0.017563 0.009629 0.021018" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Build a meta learner\n", "In [Marbach et al. 2012](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3512113/), the authors have suggest that \"no single inference method performs optimally across all datasets. In contrast, integration of predictions from multiple inference methods shows robust and high performance across diverse datasets\"\n", "\n", "+ Compute a new GRN by averaging the ranks of the different methods. " ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", " \"\"\"Entry point for launching an IPython kernel.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "rank_Fp 1390 117136\n", "rank_Ff 1390 117136\n", "rank_L1 981 117545\n", "rank_genie3 1323 117203\n", "rank_lasso 719 117807\n", "rank_MU 1456 117070\n", "rank_average 1548 116978\n" ] } ], "source": [ "df_rank[\"rank_average\"] = df_rank.mean(axis=1)\n", "k = 10000\n", "total_best_links = set(possible_links)\n", "top_K = {}\n", "for c in df_rank.columns:\n", " top_k_c = list(df_rank[c].sort_values().index)[:k]\n", " total_best_links = total_best_links.union(top_k_c)\n", " top_K[c] = top_k_c\n", "results = {}\n", "for c in top_K:\n", " y_pred = pd.Series(0,index=total_best_links)\n", " y_true = pd.Series(0,index=total_best_links)\n", " y_pred[top_K[c]] = 1\n", " y_true[possible_links] = 1\n", " acc = accuracy_score(y_pred=y_pred,y_true=y_true)\n", " rec = recall_score(y_pred=y_pred,y_true=y_true)\n", " pre = precision_score(y_pred=y_pred,y_true=y_true)\n", " results[c] = {\"accuracy\":acc,\"recall\":rec,\"precision\":pre}\n", " print(c, len(set(top_K[c]).intersection(possible_links)), len(set(top_K[c]).union(possible_links)))\n", "results = pd.DataFrame(results)" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rank_Fprank_Ffrank_L1rank_genie3rank_lassorank_MUrank_average
accuracy0.1967440.1967440.1910670.1958140.1874310.1976600.198937
precision0.1390000.1390000.0981000.1323000.0719000.1456000.154800
recall0.0128080.0128080.0090390.0121910.0066250.0134160.014264
\n", "
" ], "text/plain": [ " rank_Fp rank_Ff rank_L1 rank_genie3 rank_lasso rank_MU \\\n", "accuracy 0.196744 0.196744 0.191067 0.195814 0.187431 0.197660 \n", "precision 0.139000 0.139000 0.098100 0.132300 0.071900 0.145600 \n", "recall 0.012808 0.012808 0.009039 0.012191 0.006625 0.013416 \n", "\n", " rank_average \n", "accuracy 0.198937 \n", "precision 0.154800 \n", "recall 0.014264 " ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ Compute the similarity of this new GRN w.r.t. the previous ones" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.heatmap(df_rank.corr())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ Let $X^{rank}$ be a matrix with $E$ rows (one for each edge) and $M$ columns (one for each method). The value $X^{rank}_{i,j}$ is the rank that method $j$ has attributed to edge $i$. \n", "+ Let $y$ be a binary label vector with $E$ rows (one for each edge), s.t. $y_e=1$ if $e \\in E_{HC}$ and $y_e=0$ otherwise\n", "+ Train a Random Forest classifier to predict $y$, from the values $X_{rank}$\n", "+ Extract the feature importance from this classifier to infer which are the better methods\n", "\n", "__Check the following example:__" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import cross_validate\n", "from sklearn.model_selection import StratifiedKFold" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.0689658 , 0.06933868, 0.17540625, 0.22551546, 0.23318317,\n", " 0.08801744, 0.1395732 ])" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rankings = df_rank.loc[total_best_links]\n", "y = pd.DataFrame()\n", "y[\"labels\"] = y_true" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "# Train the RF classifier\n", "from sklearn.ensemble import RandomForestClassifier\n", "rf = RandomForestClassifier(n_estimators=100)" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [], "source": [ "skf = StratifiedKFold(n_splits=5, shuffle=False, random_state=None)" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [], "source": [ "scores = cross_validate(rf, rankings, y[\"labels\"], cv=skf,scoring=['f1','recall','precision','accuracy'])\n" ] }, { "cell_type": "code", "execution_count": 126, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:125: FutureWarning: You are accessing a training score ('train_f1'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n", " warnings.warn(*warn_args, **warn_kwargs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:125: FutureWarning: You are accessing a training score ('train_recall'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n", " warnings.warn(*warn_args, **warn_kwargs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:125: FutureWarning: You are accessing a training score ('train_precision'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n", " warnings.warn(*warn_args, **warn_kwargs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:125: FutureWarning: You are accessing a training score ('train_accuracy'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n", " warnings.warn(*warn_args, **warn_kwargs)\n" ] }, { "data": { "text/plain": [ "{'fit_time': array([13.40377903, 11.63035178, 13.84735227, 15.5873313 , 13.51631999]),\n", " 'score_time': array([1.29449987, 0.92264795, 1.06069398, 0.97042775, 0.99701929]),\n", " 'test_f1': array([0.97895825, 0.97918624, 0.98013462, 0.97835844, 0.97924103]),\n", " 'train_f1': array([0.99997696, 1. , 0.99998272, 0.99998848, 1. ]),\n", " 'test_recall': array([0.96024141, 0.9601935 , 0.96268141, 0.95913384, 0.96060815]),\n", " 'train_recall': array([0.99995393, 1. , 0.99996545, 0.99997696, 1. ]),\n", " 'test_precision': array([0.99841924, 0.9989455 , 0.99823237, 0.99836946, 0.99861104]),\n", " 'train_precision': array([1., 1., 1., 1., 1.]),\n", " 'test_accuracy': array([0.96891048, 0.96925639, 0.97060967, 0.96804192, 0.96932579]),\n", " 'train_accuracy': array([0.9999653 , 1. , 0.99997398, 0.99998265, 1. ])}" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }