{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example: Imbalanced datasets\n", "------------------------------\n", "\n", "This example shows how ATOM can help you handle imbalanced datasets. We will evaluate the performance of three different Random Forest models: one trained directly on the imbalanced dataset, one trained on an oversampled dataset and the last one trained on an undersampled dataset." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load the data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Import packages\n", "from atom import ATOMClassifier\n", "from sklearn.datasets import make_classification" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Create a mock imbalanced dataset\n", "X, y = make_classification(\n", " n_samples=5000,\n", " n_features=30,\n", " n_informative=20,\n", " weights=(0.95,),\n", " random_state=1,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run the pipeline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<< ================== ATOM ================== >>\n", "\n", "Configuration ==================== >>\n", "Algorithm task: Binary classification.\n", "\n", "Dataset stats ==================== >>\n", "Shape: (5000, 31)\n", "Train set size: 4000\n", "Test set size: 1000\n", "-------------------------------------\n", "Memory: 1.24 MB\n", "Scaled: False\n", "Outlier values: 570 (0.5%)\n", "\n" ] } ], "source": [ "# Initialize atom\n", "atom = ATOMClassifier(X, y, test_size=0.2, verbose=2, random_state=1)" ] }, { "cell_type": "code", "execution_count": 4, "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", " \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", "
x0x1x2x3x4x5x6x7x8x9...x21x22x23x24x25x26x27x28x29target
0-0.535760-2.4260451.2568360.374501-3.241958-1.239468-0.208750-6.0159953.6986690.112512...0.044302-1.93572710.8703530.286755-2.4165070.556990-1.5226353.7192011.4491350
1-3.311935-3.149920-0.801252-2.644414-0.704889-3.3122560.7145152.9923455.0569103.036775...2.2243590.451273-1.822108-1.4358010.036132-1.3645831.2156635.2321611.4087980
23.8211991.328129-1.000720-13.1516970.2542531.263636-1.0884514.924264-1.225646-6.974824...3.5412221.686667-13.763703-1.3212561.6776870.774966-5.0676894.663386-1.7141860
35.9311263.3388300.5459062.296355-3.9410883.527252-0.1587703.138381-0.927460-1.642079...-3.6344427.853176-8.4575980.000490-2.612756-1.1382060.4971504.351289-0.3217480
4-2.829472-1.227185-0.7518923.056106-1.988920-2.219184-0.0758825.790102-2.7866712.023458...4.0579541.178564-15.0281871.627140-1.093587-0.4226551.7770116.660638-2.5537230
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " x0 x1 x2 x3 x4 x5 x6 \\\n", "0 -0.535760 -2.426045 1.256836 0.374501 -3.241958 -1.239468 -0.208750 \n", "1 -3.311935 -3.149920 -0.801252 -2.644414 -0.704889 -3.312256 0.714515 \n", "2 3.821199 1.328129 -1.000720 -13.151697 0.254253 1.263636 -1.088451 \n", "3 5.931126 3.338830 0.545906 2.296355 -3.941088 3.527252 -0.158770 \n", "4 -2.829472 -1.227185 -0.751892 3.056106 -1.988920 -2.219184 -0.075882 \n", "\n", " x7 x8 x9 ... x21 x22 x23 x24 \\\n", "0 -6.015995 3.698669 0.112512 ... 0.044302 -1.935727 10.870353 0.286755 \n", "1 2.992345 5.056910 3.036775 ... 2.224359 0.451273 -1.822108 -1.435801 \n", "2 4.924264 -1.225646 -6.974824 ... 3.541222 1.686667 -13.763703 -1.321256 \n", "3 3.138381 -0.927460 -1.642079 ... -3.634442 7.853176 -8.457598 0.000490 \n", "4 5.790102 -2.786671 2.023458 ... 4.057954 1.178564 -15.028187 1.627140 \n", "\n", " x25 x26 x27 x28 x29 target \n", "0 -2.416507 0.556990 -1.522635 3.719201 1.449135 0 \n", "1 0.036132 -1.364583 1.215663 5.232161 1.408798 0 \n", "2 1.677687 0.774966 -5.067689 4.663386 -1.714186 0 \n", "3 -2.612756 -1.138206 0.497150 4.351289 -0.321748 0 \n", "4 -1.093587 -0.422655 1.777011 6.660638 -2.553723 0 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's have a look at the data. Note that, since the input wasn't\n", "# a dataframe, atom has given default names to the columns.\n", "atom.head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fitting FeatureSelector...\n", "Performing feature selection ...\n", " --> rfe selected 12 features from the dataset.\n", " --> Dropping feature x1 (rank 8).\n", " --> Dropping feature x2 (rank 11).\n", " --> Dropping feature x4 (rank 3).\n", " --> Dropping feature x6 (rank 16).\n", " --> Dropping feature x7 (rank 14).\n", " --> Dropping feature x10 (rank 19).\n", " --> Dropping feature x12 (rank 13).\n", " --> Dropping feature x13 (rank 12).\n", " --> Dropping feature x14 (rank 9).\n", " --> Dropping feature x16 (rank 10).\n", " --> Dropping feature x18 (rank 17).\n", " --> Dropping feature x19 (rank 2).\n", " --> Dropping feature x20 (rank 4).\n", " --> Dropping feature x22 (rank 7).\n", " --> Dropping feature x23 (rank 5).\n", " --> Dropping feature x24 (rank 18).\n", " --> Dropping feature x25 (rank 6).\n", " --> Dropping feature x26 (rank 15).\n" ] } ], "source": [ "# Let's start reducing the number of features\n", "atom.feature_selection(\"rfe\", solver=\"rf\", n_features=12)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Training ========================= >>\n", "Models: RF\n", "Metric: ba\n", "\n", "\n", "Results for RandomForest:\n", "Fit ---------------------------------------------\n", "Train evaluation --> ba: 1.0\n", "Test evaluation --> ba: 0.5556\n", "Time elapsed: 1.148s\n", "-------------------------------------------------\n", "Time: 1.148s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 1.150s\n", "-------------------------------------\n", "RandomForest --> ba: 0.5556 ~\n" ] } ], "source": [ "# Fit a model directly on the imbalanced data\n", "atom.run(\"RF\", metric=\"ba\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Branch(main)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The transformer and the models have been added to the branch\n", "atom.branch" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Oversampling" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Successfully created new branch: oversample.\n" ] } ], "source": [ "# Create a new branch for oversampling\n", "atom.branch = \"oversample\"" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Oversampling with SMOTE...\n", " --> Adding 3570 samples to class 1.\n" ] } ], "source": [ "# Perform oversampling of the minority class\n", "atom.balance(strategy=\"smote\")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "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", "
datasettraintest
047313785946
13839378554
\n", "
" ], "text/plain": [ " dataset train test\n", "0 4731 3785 946\n", "1 3839 3785 54" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "atom.classes # Check the balanced training set!" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Training ========================= >>\n", "Models: RF_os\n", "Metric: ba\n", "\n", "\n", "Results for RandomForest:\n", "Fit ---------------------------------------------\n", "Train evaluation --> ba: 1.0\n", "Test evaluation --> ba: 0.7672\n", "Time elapsed: 2.089s\n", "-------------------------------------------------\n", "Time: 2.089s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 2.091s\n", "-------------------------------------\n", "RandomForest --> ba: 0.7672 ~\n" ] } ], "source": [ "# Train another model on the new branch. Add a tag after \n", "# the model's acronym to distinguish it from the first model\n", "atom.run(\"rf_os\") # os for oversample" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Undersampling" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Successfully created new branch: undersample.\n" ] } ], "source": [ "# Create the undersampling branch\n", "# Split from master to not adopt the oversmapling transformer\n", "atom.branch = \"undersample_from_main\"" ] }, { "cell_type": "code", "execution_count": 13, "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", "
datasettraintest
047313785946
126921554
\n", "
" ], "text/plain": [ " dataset train test\n", "0 4731 3785 946\n", "1 269 215 54" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "atom.classes # In this branch, the data is still imbalanced" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Undersampling with NearMiss...\n", " --> Removing 3570 samples from class 0.\n" ] } ], "source": [ "# Perform undersampling of the majority class\n", "atom.balance(strategy=\"NearMiss\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Training ========================= >>\n", "Models: RF_us\n", "Metric: ba\n", "\n", "\n", "Results for RandomForest:\n", "Fit ---------------------------------------------\n", "Train evaluation --> ba: 1.0\n", "Test evaluation --> ba: 0.6706\n", "Time elapsed: 0.207s\n", "-------------------------------------------------\n", "Time: 0.207s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 0.209s\n", "-------------------------------------\n", "RandomForest --> ba: 0.6706 ~\n" ] } ], "source": [ "atom.run(\"rf_us\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Branch(undersample)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Check that the branch only contains the desired transformers \n", "atom.branch" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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vbRw4UJJMkuC7rjjDrNMxx8KSkmCAAAAIMCUOA/q/ayXNOWbsdpRsMHqcHymsrJSlZWVys3N1YQJE+R0OnXZZZdJkrZv366RI0fqvffe01tvvaWwsDCdf/75Xjc+R9uxY4cGDRqkt99+W++9955atWqlCy+8UDt37vRab9OmTZo8ebKeeeYZTZs2TUuXLtV9991nfr5v3z717dtX69ev1z/+8Q/NmTNHQ4cONW8Ac3Nzdf7552vXrl2aPn263nnnHe3YsUNDhw6Vy+XyOtatt96qCy+8UPPmzdMVV1zhq7861HEHyws0c+lfNfW7h7W3aKvXZ95P7munfGHnzp2y2Wxq2rSp+Xr06NH66KOPNHXqVO3atUuXXHLJMUmbN998UytWrNCbb76pRx55RFOnTtWrr75qfj5r1iyNGzdON9xwg9577z05nU796U9/8trHvn37NHDgQIWFhWnWrFl6+umnNXPmTN12223HxHnzzTfrzjvv1Lvvvqvdu3fr5ptv1nXXXaehQ4fq/ffflyRdd911x2znHr3h/uP+ObKysvTrX/9aLVu21Jw5czR27Fg999xzmjBhgtf2RUVFuvvuuzV27FjNnz9frVu31jPPPKOxY8dq1KhRmjdvnm644Qbde++9mj17tiTpwIEDGjZsmDIzMzVnzhz95z//0fDhw5Wfny9JWrx4sSRp/PjxWrx4sfna19znU2xkoqLCo/1yjEBGOQwAAEAA21X4i176ZqzObTZYQzrcrNioRKtDOmvff/+9IiIizNeRkZGaMWOGMjMzJUljxowxP6uqqtKAAQOUmpqq+fPna8SIEcfdp+fNjcvl0oABA/Tdd9/p3Xff1e9//3vzs/z8fP38889q0qSJpOqn248++qhcLpfsdrteeOEFlZeXa9GiRUpJSZEkXXzxxeb2L774olwulxYsWKD4+HhJUs+ePdWyZUvNnTtXV155pbnujTfeeMwNE3C6tuStPlwiM0yXtL9BjojYWhsJUllZafYEeeaZZ3TrrbeqQYMGkqQnnnjCXK+qqko9evRQs2bNtHTpUvXs2dP8LCEhQe+++67sdrsuvfRSffPNN/rwww/N7/ezzz6r4cOH669//askafDgwerRo4fXyKznn39e0dHR+uSTT8xyssTERF177bWaOHGiOnToYK47YcIEXX311ZKk3bt365577tFzzz2n+++/X5JkGIaGDBmiLVu2qGXLluZ2gwcP9vrZJ0+erMcee0xPP/202rdvr1mzZslms+myyy5TVVWVnnzyST388MPm74dDhw5p6tSpGjRokKTqBMdTTz2lp556yvzdM2jQIOXm5mry5Mm66qqrtHHjRh04cEAvvfSS+Xvk0ksvNWNwl+e0bNnSZ6U6R6t0OXWgNE9SaE6PKzESBAAAoFat3vM/fbJ2xgn/VLqcx2xjyNCP2z/Vnxferv9tnXfc4fLBoEuXLvr555/1888/a+HChbr55pt122236ccff5RUXW5y9dVXKz09XeHh4YqJiVFJSclJS2JycnJ0++23q1GjRgoPD1dERIQ2bdp0zDaZmZlmAkSq7gdQWVlpzn7xzTffaOjQoeYNztG++OILDR48WA6Hw3xynJ6ernbt2mnp0qVe67pHtgBny2W4tGjLR/rLwju0ZMdC5RXvMz/zV/mCO0kZHR1tlr28/PLL5ucrVqzQpZdeqnr16ik8PFzNmlU3cz36u9a/f3/Z7UduM9u3b6/du3dLqk6yrFixQpdffrnXNsOGDfN6vWTJEg0ZMsSrn87w4cNls9mOKXcbMGCAudyqVStJ1bNIHf3enj17vLZ7+eWXzd9HP//8sznKZMmSJeax3K6++mqVlpZ6ldVERkZq4MCB5uvFixerpKREV111ldcIk/79+2vVqlWqqKhQq1atFBcXp+uvv17//e9/dfDgQdW2wtIcGar+NyQUS2EkRoIAAADUms25qzTjp8lnvX2p85A+WPEPRYYF5/DluLg4ryfGAwcO1E8//aRnnnlGs2fPNm+MXnjhBTVv3lxRUVEaPHjwcfsFuN10001as2aNnnzySWVmZiomJka33HLLMdskJSV5vXY3MHSvl5eXp/PPP/+Ex8nNzdWMGTM0Y8aMYz7r1q2b1+v69YNztoUfts3Xit3fWh1GyDHkOuFnB8sL9J9lz5vfebvNrsToVL/E0aVLF02bNk0VFRX6/PPP9cc//lGPPvqo/va3v6moqEiXXnqpWrdurddee02NGjWSYRjq27fvaX3X3Ovk5uaqqqpKaWlpXusc/Xrv3r1evyskKSIiQikpKcf08klMPDI6zv29Pt57R8eZmZl5zDHcxz76O5yenm5+5paamuqVKMnNzZUkr9Emnvbs2aPmzZvrs88+0xNPPGEmWi6//HK99NJLysjIOO52vmZFf5lAQxIEAACglqza8/2pVzqFMFu4oiNiVVF14sRAMMnMzNSqVau0adMmrV69Wt98840uuOACSZLT6VRhYeEJty0tLdVnn32mN954QzfeeKP5flFR0RnHUa9evWNurjylpKTo6quv1sMPP3zcbT35q5mhv1VUldWZ86ouCbdHymVUJ0oSo1MVZvfPVK6eScrzzjtPOTk5evnll/Xggw9q7dq12rdvn3788UezR8iWLVvO+BipqakKCwtTTk6O1/tHv27QoIE5SsvN6XQqPz/fLM/xl+Md290A1vPYR3/P3aPIFixYcEwiyHPb8847TwsWLFBxcbHmz5+vBx54wKtviL/lF/t/pqFARxIEAACglmzIri6bsNvsuq33HxVmP/ZS7K2fnlaJ8/hDpNukddNvzrlbs5a/qANleX6NtbasX79eTZo0UWlpqSR5TTE5e/bsY5qOeiovL5fL5fLa5ocffjimKerp6N+/v1599VUVFBQoOTn5mM8HDBiguXPnqkuXLl59TeqSyLBoOU4wRSv8p+gk3+WOGX00uP1v9cJX90qSUmJrZ7SAJE2cOFHTp0/Xiy++aI6S8vyuzZo164z3GR4eri5dumju3Lm66aabzPc//vhjr/V69eqlGTNmqKysTNHR1aNg5syZI8Mwjjt6w5d69eqlDz/8UJMmTTITHe+//74cDoc6dep0wu169+4th8Oh/fv3m31CTiY2NlYjRozQ4sWLNX/+fPP9iIgIlZeX1/wHOYH8kiOlVSm11GQ30JAEAQAAqAX5xfuVc6h6ppGmye3UNr3Hcdc73iiCREeqLu90p85p2C9oRxlI0sGDB/XDDz9Iqm4i+O6772rlypV6/PHH1a5dOzVo0EAPPfSQJk6cqG3btunPf/6zEhISTri/pKQkdevWTU8++aRiY2NVVFSkiRMnntWT4rFjx2rGjBm68MILNX78eKWlpWnJkiVq0aKFRo4cqQcffFD/+te/NGjQIN1zzz3KyMjQnj17tHDhQl133XVevQGCVe/ml+nyzndaHUbIGffh0GNKYurFNtCVne9S+4xztafoyIiL2ixfSE9P1y233KJp06bpgQceUExMjEaPHq0xY8Zo2bJleuONN85qv+PGjdO1116rcePGadCgQfr3v/99zCisBx98UFOnTtXQoUM1duxY7d27Vw8//LCuueYa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18iRI/Xee+/prbfeUlhYmM4//3yvG5+j7dixQ4MGDdLbb7+t9957T61atdKFF16onTt3eq23adMmTZ48Wc8884ymTZumpUuX6r777jM/37dvn/r27av169frH//4h+bMmaOhQ4eaN4C5ubk6//zztWvXLk2fPl3vvPOOduzYoaFDh8rlcnkd69Zbb9WFF16oefPm6YorrvDVXx1CxCdbt2rkvP/qvY0bVHn43LKifGHnzp2y2Wxq2rSp+Xr06NH66KOPNHXqVO3atUuXXHKJjMNTrbq9+eabWrFihd5880098sgjmjp1ql599VXz81mzZmncuHG64YYb9N5778npdOpPf/qT1z727dungQMHKiwsTLNmzdLTTz+tmTNn6rbbbjsmzptvvll33nmn3n33Xe3evVs333yzrrvuOg0dOlTvv/++JOm66647Zjv36A33H/fPkZWVpV//+tdq2bKl5syZo7Fjx+q5557ThAkTvLYvKirS3XffrbFjx2r+/Plq3bq1nnnmGY0dO1ajRo3SvHnzdMMNN+jee+/V7NmzJUkHDhzQsGHDlJmZqTlz5ug///mPhg8frvz8fEnS4sWLJUnjx4/X4sWLzde+VOlyKbukRFJojgKRKIcBAAB1XFFprvYe2CZJapzURrGRCZbGszYvT5sKC074eeVRN9SSVFZVpakrVmjeluoSmWD1/fffKyIiwnwdGRmpGTNmKDMzU5I0ZswY87OqqioNGDBAqampmj9/vkaMGHHcfXre3LhcLg0YMEDfffed3n33Xf3+9783P8vPz9fPP/+sJk2aSKp+uv3oo4/K5XLJbrfrhRdeUHl5uRYtWqSUlBRJ0sUXX2xu/+KLL8rlcmnBggWKj4+XJPXs2VMtW7bU3LlzdeWVV5rr3njjjcfcMAFn4pDTqReWLjVLZGprStPKykqzJ8gzzzyjW2+9VQ0aNJAkPfHEE+Z6VVVV6tGjh5o1a6alS5eqZ88jv5cSEhL07rvvym6369JLL9U333yjDz/80Px+P/vssxo+fLj++te/SpIGDx6sHj16eI3Mev755xUdHa1PPvnELCdLTEzUtddeq4kTJ6pDhw7muhMmTNDVV18tSdq9e7fuuecePffcc7r//vslSYZhaMiQIdqyZYtatmxpbjd48GCvn33y5Ml67LHH9PTTT6t9+/aaNWuWbDabLrvsMlVV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PHhQd999t1q1aiWHw6F27drp+eefr3M3QQheh8rL9dCsWer25JP6ev16q8Pxkpubq9tuu01paWlyOBwaMGCA1qxZ47XOQw89pPbt2ysmJkatWrXS+PHjVVFRIal6uGmLFi0kSRdffLFsNpuaN28uqXqo59GjMY5XCmez2fTSSy9p9OjRSklJ0ZAhQyRJW7du1YgRI5SUlKS4uDhdeeWVXr+/9uzZo+TkZDMB4slzuG1VVZUmT56sFi1aKCoqSh07dtSHH354yr+bqVOnqn379oqKilKrVq2OGUkjVT9hateunaKiotS4cWPde++9kqSLLrpI33zzjd555x3z95X7Z963b5+uvfZa8+f69a9/rc2bN5v7dA/hfffdd3XNNdcoPj5ed9999ynjtcr6/UvM5UJXQ93WubNij/P/BAAgfbh8udo/9pgmf/yxyo4qkbHipvXo+4NT3RtIR0pIn3rqKaWnpystLU1jxoyR86if57nnnlNGRoYSEhJ0xx13qKys7Jjj//TTT7rgggvkcDiUlpame+65R8XFxebnM2bMkM1mU1ZWlvr06SOHw6F+/fppx44d2rVrlwYPHqy4uDj16NFDq1evPqOf/dNPP1WPHj0UHR2tRo0aacKECaqqqjI/d1/HLFy4UF26dFFUVJT+97//STr1NcK3336r8847T/Hx8UpKSlKvXr20cOFCSSe+p/E1dzlMXFSUUkJwdCZJEEiSdu7cKZvNpqZNm3q9N3r0aH300UeaOnWqdu3apUsuucRMIPTt21fLly9XSUmJJOn7779XdHS0vvvuO3Mf33//vX71q18p/ARPuHfs2KErrrhCrVq10gcffKBBgwZ5JVHc9u3bp3HjxmnevHn6y1/+ou+++07XX3+9+fnixYslSePHj9fixYvN18XFxYqIiNDzzz+vTz/9VPfee68mT56sv/3tbzX8GwN8a82ePer/17/q2tde0+6Cglo/fmVlpfmnqqpK5eXlGjhwoL7//nv9/e9/1+zZsxUWFqZBgwZ5XYAUFhbqj3/8o+bPn68JEyboX//6l37/+99Lkho0aGD2vZgyZYoWL16sOXPmnHFsTz/9tCoqKvSf//xHjz/+uHJzc3X++edr165dmj59ut555x3t2LFDQ4cOlcvlkiR17dpVa9eu1SOPPKKNGzeecN/33HOPnnvuOT3wwAP673//q4EDB+qqq67STz/9dMJtnnnmGY0dO1ajRo3SvHnzdMMNN+jee+/V7NmzzXUmTpyosWPHatiwYfr444/13HPP6dChQ5KkV155Rd26ddPgwYPN31fdu3eXYRgaNmyYvv/+e73yyit66623tH37dg0cOFDl5eVeMfzud79T06ZN9eGHH+rOO+8847/T2uAyXFq9rzoJUmWEKym2la5o1driqAAgsJU5nZr44YfqNHGi5q1YYb5vRQ+Ho+8PTnVv4Pbmm29qxYoVevPNN/XII49o6tSpevXVV83PZ82apXHjxumGG27Qe++9J6fTqT/96U9e+9i3b58GDhyosLAwzZo1S08//bRmzpyp22677Zg4b775Zt1555169913tXv3bt1888267rrrNHToUL3//vuSpOuuu+6Y7dyjN9x/3D9HVlaWfv3rX6tly5aaM2eOxo4dq+eee04TJkzw2r6oqEh33323xo4dq/nz56t169anvEY4cOCAhg0bpszMTM2ZM0f/+c9/NHz4cOUfLnc60T2NL7lcLm0/fD41T00NzZnajBDRqFEjQ5LRqFGjWtkukN10001G3759DafTaZSVlRk//PCD0bx5c+O222474TaVlZXG9u3bDUnGzz//bBiGYeTn5xs2m8344osvzP2OHj3asNvtxv79+w3DMIwePXoYjz/++An3++CDDxoZGRlGeXm513uSjK+++uqEsXz77beGzWYzsrOzzfclGa+//voJj+VyuQyn02lMnjzZ6Nix4wnXCzY1OUfr4vkdLKZ9+62hW2897p+4u+82/jp/vvHVunXme79/912/xHHTTTcZkrz+hIWFGa+//rrhcDiMHTt2mOsWFxcb9evXN/72t78dd19Op9N46623jPj4eKOqqsowDMPYunWrIclYsGCB17pPPPHEMefdL7/8csx3X5LRt29fr/UmTJhgNGjQwDhw4ID53q5du4zIyEhjzpw5ZizDhw83f6b69esbt99+u7Fu3Tpzm40bNxo2m8147733vPY/dOhQ44orrjBfN2vWzJgwYYJhGIZRVFRkxMTEGH/961+9trn33nuNLl26GIZhGHl5eUZUVJTx2GOPHffvyTAM48ILLzSuv/56r/f++9//ev2ONQzD2LFjhxEREWG88sorhmEc+fs8eltfWrdnjxF+521G5pOjjd/+68/GvA1fndWfWSvfMx6ac6nx0JxLjVvev934dtdOv8UMAMHMftttJ7wmuHzKFGNLdrZx7Wuvme+t27PH5zGc6f3B8e4NDKP638wOHTqY1wGGYRi//vWvjQEDBpivu3fvbgwfPtxrf927dzc8b01///vfG6mpqUZJSYn53n/+8x/DZrMZa9asMQzDMN544w1DkjFr1ixznVdeecWQZDz33HPme5988okhydi8ebNhGEf+LT36z+TJkw3DMIwRI0YYnTp1Mlwul7mPP//5z4bD4TDy8vIMw6i+jjn6+uZ0rhF+/vlnQ5LXNczRTnVPU1O78vPNc+nXf/+7344TyEKmJ8ju3bu9/hvqvv/+e69h4l26dNHLL7/stc6KFSv0yCOP6Oeffzazk1L1kPWePXsqOTlZHTp00KJFizRgwAB99913+vvf/67vvvtOixYt0uDBg7VixQo9/fTTJ4xjyZIluvTSS73q54YNG6YXXnjBa71vvvlGjz32mFauXKkDBw6Y72/evFlpaWkn/Vlfe+01TZkyRZs3bzafpkZFRZ10m1BRmp4u/epX2hsdrcaHn96jdhQf9WTf06Hyco177z01q6UnPV26dNG0adPM1+7ZYXr37q0GDRqY5WyRkZHq3bu3li49MtvHBx98oKefflrr1683R4VJUnZ2tjIyMnwS32WXXeb1+osvvtDgwYPlcDjM2NLT09WuXTstXbpUV155pcLDwzV79mwtW7ZMc+fO1ddff6033nhDM2fO1Ndff61evXrpyy+/VGRkpIYOHepVsjdgwIATjhZbvHixSkpKdNVVV3lt079/f02dOlUVFRX68ccfVV5erhtvvPGMfs4lS5aoadOm6tmzp/lekyZN1Lt3b/38889eZS9H/534krPKqTsuKVRMWLGk7fpy7dc13mdOcYqu/duLNd4PANRFrpOUac/NytLna9Yo1WPmEn9dH5zq/uBU9wZu/fv3l91+pOCgffv2mjt3rqTqkacrVqzQ/fff73XsYcOGec2IsmTJEg0ZMsSr59Xw4cNls9m0ZMkSdejQwXx/wIAB5nKrVq0kVZeeHv3enj17vJq0v/zyy16l/e6+J0uWLNGNN97oNULi6quv1qOPPqrVq1frggsukFR9XTRw4EBzndO5RmjVqpXi4uJ0/fXX684779SFF16o+Ph41SbP0qoWIdgPRKIxashy3/RUVFTo888/1x//+Ec9+uij5oV/UVGRLr30UrVu3VqvvfaaGjVqJMMw1LdvX6+avX79+um7777T/v37tXXrVvXt21d9+/bVd999p6SkJLlcLvXp0+eEcezfv1+/+tWvvN47OqmxdetWDRkyRIMGDdK//vUvpaena+fOnbr66quPWz/oadasWbrrrrs0btw4DRo0SMnJyfrggw/05z//+Uz/yuqkgy1aSImJckmWlGDg5Grr/0lcXJzXxYtU3Q/kq6++Om5PjQsvvFBS9T/2V199tW666SY99dRTqlevnn788Ufdf//9p/xunon69esfE9uMGTM0Y8aMY9bt1q2b1+vu3bub3dVXrVqlfv366emnn9aHH36o3NxclZeXKyYm5pj92O12uVwur4s497ElnXCmmz179ijv8BDTBg0anN4PeNjevXuP+Vml6gTP3r17vd473nq+UlpZrij7iZN0Z8pl2PXTmkPKLvDdOQEAoaTM6dT+ww8B0xMS5PBT882T3R+c7r2BJCUlJXm9joyMNNfJzc1VVVXVMdf7R7/eu3fvMdcmERERSklJOebfxMTERK9jnei9o+PMzMw85hjuYx/972x6err5mVvqUaUkp3ON0Lx5c3322Wd64oknzKTO5ZdfrpdeeslnD49OJdSnx5VIgoQsz5ue8847Tzk5OXr55Zf14IMPqkmTJvrhhx+0b98+/fjjj2Yd4JYtW47ZT9++ffXOO+/om2++UceOHZWUlKR+/frp73//u5KTk9W5c2clJCScMI709HTl5OR4vXf0688//1xVVVV67733zF9inj0JTmbOnDnq37+//vKXv5jvffzxx6e1bSiI37pV+c2byx4dfcY3bKiZ4vJyFXqMnDjaJR076qbzztP1r79ei1EdkZKSor59++rFF1885jP3E4u5c+eqefPmmj59uvnZ6TYei4qKMhuouhWcIOlzdK1qSkqKrr76aj388MPHrFvvJP+Yd+7cWYMGDdLatWvN/TgcDn377bfHXf/oBIh7G0lasGDBMRd5UnXiwx3D3r171aZNmxPGc7xts7Ozj3l///79at3au5eGP+t3E6Li9OHyhmrXxFC4XQq3n/2UgYZs2pMXrYgquxolB+YMNgBgtZM99EhPSNCfhg/XbYcT//58cn+y+4O1a9ee1r3BqaSmpiosLOyU1//H+zfR6XQqPz/f79esxzu2uwGs57GPd30infwaQar+u12wYIGKi4s1f/58PfDAA8f0FvOnUJ8ZRgqhJEijRo3q7PROvjBx4kRNnz5dL774op5//nmVlpZKkleZyqxZs47Zrl+/fjp06JD+8Y9/qF+/fuZ7t9xyiyIjI833TqRnz56aOXOmKioqzGMdnaQoLS1VeHi419zdx4slIiLimOaBpaWlXj+Dy+UyGyRBcuzfLy1bpgaNGnnNrAH/++eiRbr9OCMZmqak6G+jRuk33bvr+02baj+wwwYMGKDHH39crVu3Pu4/5FL19+vokSJHfzfd37+jv5uNGzdWXl6e8vLyzKSBuzP66cQ2d+5cdenS5bgjVaTqcpyjn+IYhqEtW7aY7/fv31+lpaUqLy9X3759T+vYvXv3lsPh0P79+zVo0KATrhMdHa23335bTz755HHXiYyMPObvpFevXpo0aZKWLl2qHj16SKou4fzhhx+O29DNn7btrtS23dLNffvqjVuObVYNAPCdsNtvP6YkJsxu15iBAzXp8svNUSBS7d60et4fnH/++ZJOfW9wKuHh4erSpYvmzp2rm266yXz/6Ov/Xr16acaMGSorK1N0dLSk6oebhmEcd/SGL/Xq1UsffvihJk2aZCY63n//fTkcDnXq1OmE253ONYKn2NhYjRgxQosXL9b8+fPN9493T+NLJEFCKAmCk0tPT9ctt9yiadOm6YknnlDv3r0VExOj0aNHa8yYMVq2bJneeOONY7Zr0aKFGjZsqEWLFumuu+4y30tPT9fixYs1ZsyYkx73/vvv18svv6zhw4fr3nvvVVZW1jFJiosuukglJSW66667NHLkSH3xxRf6/PPPj9lX27ZtNXv2bHXt2lVRUVHq2bOnBgwYoLFjx+rFF19Uu3bt9Nprr3n1LQACRWR4uMYNHqw/DB2qmADoWXPTTTdp6tSpuuiii/Tggw+qWbNmys7O1qJFi3Tuuefqt7/9rQYMGKC///3veuyxx3ThhRdq1qxZWn/UNL8ZGRlKTEzU22+/rXr16ik2NladO3fW4MGDFRkZqdtuu0333nuvVq5cedzyluN58MEH9a9//UuDBg3SPffco4yMDO3Zs0cLFy7Uddddp4EDB2ry5MlatWqVrrvuOrVr106FhYV68803lZWVpXfffVeS1K5dO915550aPny4HnnkEXXt2lWHDh3SihUrdOjQIT377LPHHDs5OVmPP/647rrrLm3evFl9+vSR0+nU2rVrtXbtWk2fPl3Jycl69NFHNXnyZJWVlWnQoEEqLCzUJ598Yv4edf+++vzzz5WSkqK2bdvqsssuU8+ePXXVVVfpmWeeUXR0tCZNmqSGDRvqlltuqdn/UABA0LggM1P/uP56dT48lfyPHiMuavOm1fP+4IEHHjite4PTMW7cOF177bVmufq///3vY0pcHnzwQU2dOlVDhw7V2LFjtXfvXj388MO65pprvPqB+MOECRPUo0cPjRw5UrfeeqvWrFmjiRMn6ne/+5052uN4TucaYd68eXrjjTd05ZVXqkmTJtq2bZvefvttXX311eZ+jndP40uUwzBFLjyMGzdOJSUlmjZtmjIyMjRz5kytW7dOw4YN07x58044RMv9BNVz1Mfx3jueZs2a6cMPP9Qvv/yi3/zmN/rss8+8GjRK1VNdvvrqq/rss890xRVXaM2aNXrzzTeP2deUKVOUk5OjAQMGqFevXpKku+++W3fffbcmT56s3/72t2revLkeeeSR0/9LAWrBZZ07a/Uf/6inhg8PiASIJEVHR+urr75S3759NX78eF1yySV66KGHlJubqy5dukiSLr/8ck2aNEmvv/66RowYoYqKimOaGtvtdv3f//2flixZovPPP1/Dhg2TVN3Twp00ueKKK7Rw4UK9fpqlP2lpaVq8eLGaNm2q++67T4MHD9Zjjz0mu91ulp9cf/31at68uf7yl79o8ODBuv3225WXl6dPPvlE11xzjbmvqVOnaty4cfq///s/XXbZZbrjjju0aNGik44MGT9+vKZMmaIPPvhAw4YN0w033KCPPvrIfEomSU888YSee+45ffDBB/r1r3+tBx980Kvx2bhx49ShQwddddVV6tWrl5YuXSqbzaaPP/5YvXv31l133aXf/va3aty4sRYuXEgzZwAIAQ0SE/XOHXfo64cfNhMgkrU3re77g/fff/+07w1OZdSoUXr22Wf11ltvacSIEbLb7Ro/frzXOhkZGfriiy9UUVGhESNGaPz48Ro1apT++c9/+uLHOqkuXbro448/1qZNm3TFFVfo+eef10MPPaSnnnrqlNue6hqhdevWMgxDjz76qC655BJNnDhRN9xwg/7617+a+zjePY0vuUeCxEdHKzk21uf7DwY2wzhJO+I6pHHjxmY5zJkM+z/b7YDaUpNzlPPb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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Visualize the complete pipeline\n", "atom.plot_pipeline()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analyze the results" ] }, { "cell_type": "code", "execution_count": 18, "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", "
 accuracyapbaf1jaccardmccprecisionrecallauc
RF0.9520000.6562000.5556000.2000000.1111000.3252001.0000000.1111000.910700
RF_os0.9560000.6215000.7672000.5769000.4054000.5542000.6000000.5556000.925100
RF_us0.5090000.3687000.6706000.1578000.0857000.1545000.0870000.8519000.825800
\n" ], "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "atom.evaluate()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plotly.com" }, "data": [ { "hovertemplate": "(%{x}, %{y})RF - test", "legendgroup": "RF", "legendgrouptitle": { "font": { "size": 16 }, "text": "RF" }, "line": { "color": "rgb(0, 98, 98)", "dash": "solid", "width": 2 }, "marker": { "color": "rgb(0, 98, 98)", "line": { "color": "rgba(255, 255, 255, 0.9)", "width": 1 }, "size": 8, "symbol": "circle" }, "mode": "lines", "name": "test", "showlegend": true, "type": "scatter", "x": [ 1, 0.9814814814814815, 0.9629629629629629, 0.9259259259259259, 0.9074074074074074, 0.8518518518518519, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8148148148148148, 0.8148148148148148, 0.7777777777777778, 0.7777777777777778, 0.7407407407407407, 0.7407407407407407, 0.7222222222222222, 0.7037037037037037, 0.6851851851851852, 0.6481481481481481, 0.5925925925925926, 0.5555555555555556, 0.5370370370370371, 0.5370370370370371, 0.5, 0.46296296296296297, 0.46296296296296297, 0.4444444444444444, 0.4074074074074074, 0.3888888888888889, 0.37037037037037035, 0.35185185185185186, 0.35185185185185186, 0.3148148148148148, 0.2962962962962963, 0.2777777777777778, 0.25925925925925924, 0.2222222222222222, 0.16666666666666666, 0.12962962962962962, 0.1111111111111111, 0.07407407407407407, 0.05555555555555555, 0.037037037037037035, 0.018518518518518517, 0 ], "xaxis": "x", "y": [ 0.054, 0.07076101468624833, 0.09252669039145907, 0.10989010989010989, 0.1320754716981132, 0.1503267973856209, 0.1717557251908397, 0.1939655172413793, 0.21951219512195122, 0.24725274725274726, 0.26785714285714285, 0.3103448275862069, 0.3308270676691729, 0.36666666666666664, 0.38181818181818183, 0.40384615384615385, 0.43010752688172044, 0.4878048780487805, 0.4936708860759494, 0.5, 0.5285714285714286, 0.5303030303030303, 0.5423728813559322, 0.625, 0.6590909090909091, 0.7435897435897436, 0.75, 0.7352941176470589, 0.7575757575757576, 0.8, 0.7857142857142857, 0.84, 0.9090909090909091, 0.9047619047619048, 0.95, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], "yaxis": "y" }, { "hovertemplate": "(%{x}, %{y})RF_os - test", "legendgroup": "RF_os", "legendgrouptitle": { "font": { "size": 16 }, "text": "RF_os" }, "line": { "color": "rgb(56, 166, 165)", "dash": "solid", "width": 2 }, "marker": { "color": "rgb(56, 166, 165)", "line": { "color": "rgba(255, 255, 255, 0.9)", "width": 1 }, "size": 8, "symbol": "circle" }, "mode": "lines", "name": "test", "showlegend": true, "type": "scatter", "x": [ 1, 1, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9444444444444444, 0.9259259259259259, 0.9074074074074074, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8518518518518519, 0.8148148148148148, 0.8148148148148148, 0.7962962962962963, 0.7777777777777778, 0.7777777777777778, 0.7777777777777778, 0.7407407407407407, 0.7407407407407407, 0.7222222222222222, 0.6851851851851852, 0.6851851851851852, 0.6851851851851852, 0.6851851851851852, 0.6666666666666666, 0.6481481481481481, 0.6481481481481481, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6111111111111112, 0.5925925925925926, 0.5740740740740741, 0.5555555555555556, 0.5555555555555556, 0.5185185185185185, 0.5, 0.48148148148148145, 0.48148148148148145, 0.46296296296296297, 0.4444444444444444, 0.4444444444444444, 0.4444444444444444, 0.4074074074074074, 0.4074074074074074, 0.3888888888888889, 0.37037037037037035, 0.35185185185185186, 0.3333333333333333, 0.3333333333333333, 0.3148148148148148, 0.2962962962962963, 0.2777777777777778, 0.2777777777777778, 0.25925925925925924, 0.24074074074074073, 0.2037037037037037, 0.18518518518518517, 0.14814814814814814, 0.1111111111111111, 0.09259259259259259, 0.037037037037037035, 0 ], "xaxis": "x", "y": [ 0.054, 0.05856832971800434, 0.06370192307692307, 0.07123655913978495, 0.07737226277372262, 0.08660130718954248, 0.09532374100719425, 0.10379241516966067, 0.11279826464208242, 0.12560386473429952, 0.13829787234042554, 0.15028901734104047, 0.1625, 0.16887417218543047, 0.18050541516245489, 0.1891891891891892, 0.2, 0.21076233183856502, 0.22705314009661837, 0.23979591836734693, 0.2554347826086957, 0.26136363636363635, 0.2634730538922156, 0.275, 0.2792207792207792, 0.2857142857142857, 0.3, 0.32061068702290074, 0.3252032520325203, 0.3305785123966942, 0.33620689655172414, 0.3425925925925926, 0.3523809523809524, 0.3627450980392157, 0.37, 0.3673469387755102, 0.3684210526315789, 0.3977272727272727, 0.4, 0.40476190476190477, 0.43037974683544306, 0.4594594594594595, 0.4722222222222222, 0.4857142857142857, 0.5, 0.5074626865671642, 0.5483870967741935, 0.5689655172413793, 0.5614035087719298, 0.5740740740740741, 0.6, 0.6122448979591837, 0.6222222222222222, 0.6585365853658537, 0.65, 0.6666666666666666, 0.6578947368421053, 0.6486486486486487, 0.7058823529411765, 0.7272727272727273, 0.7333333333333333, 0.7586206896551724, 0.75, 0.8, 0.8260869565217391, 0.8181818181818182, 0.9, 0.8947368421052632, 0.9411764705882353, 0.9375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], "yaxis": "y" }, { "hovertemplate": "(%{x}, %{y})RF_us - test", "legendgroup": "RF_us", "legendgrouptitle": { "font": { "size": 16 }, "text": "RF_us" }, "line": { "color": "rgb(115, 175, 72)", "dash": "solid", "width": 2 }, "marker": { "color": "rgb(115, 175, 72)", "line": { "color": "rgba(255, 255, 255, 0.9)", "width": 1 }, "size": 8, "symbol": "circle" }, "mode": "lines", "name": "test", "showlegend": true, "type": "scatter", "x": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9444444444444444, 0.9444444444444444, 0.9444444444444444, 0.9444444444444444, 0.9259259259259259, 0.9074074074074074, 0.8888888888888888, 0.8888888888888888, 0.8888888888888888, 0.8888888888888888, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8333333333333334, 0.8333333333333334, 0.8148148148148148, 0.7962962962962963, 0.7777777777777778, 0.7407407407407407, 0.7407407407407407, 0.7407407407407407, 0.7407407407407407, 0.7037037037037037, 0.6851851851851852, 0.6851851851851852, 0.6666666666666666, 0.6481481481481481, 0.6111111111111112, 0.5740740740740741, 0.5370370370370371, 0.5185185185185185, 0.5, 0.48148148148148145, 0.4444444444444444, 0.3888888888888889, 0.3888888888888889, 0.37037037037037035, 0.37037037037037035, 0.37037037037037035, 0.2962962962962963, 0.2037037037037037, 0.16666666666666666, 0.12962962962962962, 0.12962962962962962, 0.1111111111111111, 0.1111111111111111, 0.1111111111111111, 0.09259259259259259, 0.07407407407407407, 0.05555555555555555, 0.018518518518518517, 0 ], "xaxis": "x", "y": [ 0.054, 0.05421686746987952, 0.05454545454545454, 0.054933875890132246, 0.055441478439425054, 0.05572755417956656, 0.056016597510373446, 0.05619146722164412, 0.05672268907563025, 0.057203389830508475, 0.057692307692307696, 0.05806451612903226, 0.058315334773218146, 0.05888767720828789, 0.05934065934065934, 0.05947136563876652, 0.060066740823136816, 0.06002265005662514, 0.06077981651376147, 0.06113033448673587, 0.06177156177156177, 0.0624263839811543, 0.06302021403091558, 0.06257521058965103, 0.06295399515738499, 0.06349206349206349, 0.0647571606475716, 0.06540880503144654, 0.06649616368286446, 0.06718346253229975, 0.06842105263157895, 0.06914893617021277, 0.07017543859649122, 0.07133058984910837, 0.07112970711297072, 0.07172995780590717, 0.07275320970042796, 0.07380607814761216, 0.07396449704142012, 0.07324364723467862, 0.07261724659606657, 0.07465007776049767, 0.07643312101910828, 0.07766990291262135, 0.07755775577557755, 0.07859531772575251, 0.07993197278911565, 0.08145580589254767, 0.08274647887323944, 0.0852994555353902, 0.08687615526802218, 0.08695652173913043, 0.08984375, 0.09236947791164658, 0.0968421052631579, 0.10065645514223195, 0.10430839002267574, 0.10747663551401869, 0.11057692307692307, 0.116751269035533, 0.12073490813648294, 0.1232876712328767, 0.1278409090909091, 0.13538461538461538, 0.14052287581699346, 0.14334470989761092, 0.14336917562724014, 0.1520912547528517, 0.1646090534979424, 0.17391304347826086, 0.18181818181818182, 0.19072164948453607, 0.20218579234972678, 0.20930232558139536, 0.22151898734177214, 0.23404255319148937, 0.2421875, 0.26126126126126126, 0.2828282828282828, 0.2967032967032967, 0.3333333333333333, 0.35294117647058826, 0.3387096774193548, 0.3684210526315789, 0.4166666666666667, 0.47619047619047616, 0.5128205128205128, 0.5, 0.5, 0.5294117647058824, 0.5384615384615384, 0.6363636363636364, 0.75, 0.8571428571428571, 1, 1, 1, 1, 1, 1 ], "yaxis": "y" } ], "layout": { "font": { "size": 12 }, "height": 600, "hoverlabel": { "font": { "size": 16 } }, "legend": { "bgcolor": "rgba(255, 255, 255, 0.5)", "font": { "size": 16 }, "groupclick": "toggleitem", "traceorder": "grouped", "x": 0.01, "xanchor": "left", "y": 0.01, "yanchor": "bottom" }, "margin": { "b": 50, "l": 50, "pad": 0, "r": 0, "t": 35 }, "shapes": [ { "line": { "color": "black", "width": 1 }, "opacity": 0.5, "type": "line", "x0": 0, "x1": 1, "xref": "x", "y0": 0.054, "y1": 0.054, "yref": "y" } ], "showlegend": true, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "size": 24 }, "pad": { "b": 15, "t": 15 }, "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "top" }, "width": 900, "xaxis": { "anchor": "y", "automargin": true, "autorange": true, "domain": [ 0, 1 ], "range": [ -0.000591016548463357, 1.0005910165484633 ], "title": { "font": { "size": 16 }, "text": "Recall" }, "type": "linear" }, "yaxis": { "anchor": "x", "automargin": true, "autorange": true, "domain": [ 0, 1 ], "range": [ 0.0014444444444444426, 1.0525555555555555 ], "title": { "font": { "size": 16 }, "text": "Precision" }, "type": "linear" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "atom.plot_prc()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plotly.com" }, "data": [ { "hovertemplate": "(%{x}, %{y})RF - test", "legendgroup": "RF", "legendgrouptitle": { "font": { "size": 16 }, "text": "RF" }, "line": { "color": "rgb(0, 98, 98)", "dash": "solid", "width": 2 }, "marker": { "color": "rgb(0, 98, 98)", "line": { "color": "rgba(255, 255, 255, 0.9)", "width": 1 }, "size": 8, "symbol": "circle" }, "mode": "lines", "name": "test", "showlegend": true, "type": "scatter", "x": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0010570824524312897, 0.0021141649048625794, 0.0021141649048625794, 0.006342494714587738, 0.006342494714587738, 0.008456659619450317, 0.009513742071881607, 0.009513742071881607, 0.010570824524312896, 0.015856236786469344, 0.019027484143763214, 0.02854122621564482, 0.03276955602536998, 0.03488372093023256, 0.040169133192389, 0.04439746300211417, 0.056025369978858354, 0.06553911205073996, 0.07188160676532769, 0.080338266384778, 0.09408033826638477, 0.10570824524312897, 0.13002114164904863, 0.14482029598308668, 0.16913319238900634, 0.19767441860465115, 0.22938689217758984, 0.2748414376321353, 0.3403805496828753, 0.4281183932346723, 0.5391120507399577, 0.7357293868921776, 1 ], "xaxis": "x", "y": [ 0, 0.018518518518518517, 0.07407407407407407, 0.1111111111111111, 0.12962962962962962, 0.16666666666666666, 0.2222222222222222, 0.25925925925925924, 0.3148148148148148, 0.35185185185185186, 0.35185185185185186, 0.37037037037037035, 0.4074074074074074, 0.4444444444444444, 0.46296296296296297, 0.46296296296296297, 0.5, 0.5370370370370371, 0.5370370370370371, 0.5555555555555556, 0.5925925925925926, 0.6481481481481481, 0.6851851851851852, 0.7037037037037037, 0.7407407407407407, 0.7407407407407407, 0.7777777777777778, 0.7777777777777778, 0.8148148148148148, 0.8148148148148148, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8333333333333334, 0.8518518518518519, 0.9074074074074074, 0.9259259259259259, 0.9629629629629629, 0.9814814814814815, 1 ], "yaxis": "y" }, { "hovertemplate": "(%{x}, %{y})RF_os - test", "legendgroup": "RF_os", "legendgrouptitle": { "font": { "size": 16 }, "text": "RF_os" }, "line": { "color": "rgb(56, 166, 165)", "dash": "solid", "width": 2 }, "marker": { "color": "rgb(56, 166, 165)", "line": { "color": "rgba(255, 255, 255, 0.9)", "width": 1 }, "size": 8, "symbol": "circle" }, "mode": "lines", "name": "test", "showlegend": true, "type": "scatter", "x": [ 0, 0, 0, 0, 0, 0, 0, 0, 0.0010570824524312897, 0.0010570824524312897, 0.0021141649048625794, 0.0021141649048625794, 0.004228329809725159, 0.004228329809725159, 0.005285412262156448, 0.007399577167019027, 0.007399577167019027, 0.008456659619450317, 0.009513742071881607, 0.010570824524312896, 0.013742071881606765, 0.013742071881606765, 0.014799154334038054, 0.014799154334038054, 0.017970401691331923, 0.0200845665961945, 0.021141649048625793, 0.024312896405919663, 0.026427061310782242, 0.026427061310782242, 0.02959830866807611, 0.03488372093023256, 0.035940803382663845, 0.042283298097251586, 0.052854122621564484, 0.05391120507399577, 0.056025369978858354, 0.06342494714587738, 0.06553911205073996, 0.06659619450317125, 0.06871035940803383, 0.07505285412262157, 0.08139534883720931, 0.08562367864693446, 0.08773784355179703, 0.09408033826638477, 0.10359408033826638, 0.1109936575052854, 0.11733615221987315, 0.1226215644820296, 0.13002114164904863, 0.13742071881606766, 0.14482029598308668, 0.15750528541226216, 0.16913319238900634, 0.18604651162790697, 0.19873150105708245, 0.2219873150105708, 0.23995771670190275, 0.2653276955602537, 0.2832980972515856, 0.3107822410147992, 0.34249471458773784, 0.38266384778012685, 0.4323467230443975, 0.47463002114164904, 0.5317124735729387, 0.5909090909090909, 0.6680761099365751, 0.7304439746300211, 0.8234672304439746, 0.9175475687103594, 1 ], "xaxis": "x", "y": [ 0, 0.037037037037037035, 0.09259259259259259, 0.1111111111111111, 0.18518518518518517, 0.2037037037037037, 0.24074074074074073, 0.2777777777777778, 0.2777777777777778, 0.2962962962962963, 0.3148148148148148, 0.3333333333333333, 0.3333333333333333, 0.35185185185185186, 0.37037037037037035, 0.3888888888888889, 0.4074074074074074, 0.4074074074074074, 0.4444444444444444, 0.4444444444444444, 0.4444444444444444, 0.48148148148148145, 0.48148148148148145, 0.5, 0.5185185185185185, 0.5555555555555556, 0.5555555555555556, 0.5740740740740741, 0.5925925925925926, 0.6111111111111112, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6296296296296297, 0.6481481481481481, 0.6481481481481481, 0.6666666666666666, 0.6851851851851852, 0.6851851851851852, 0.6851851851851852, 0.7222222222222222, 0.7407407407407407, 0.7407407407407407, 0.7777777777777778, 0.7777777777777778, 0.7777777777777778, 0.7962962962962963, 0.8148148148148148, 0.8148148148148148, 0.8518518518518519, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.9074074074074074, 0.9259259259259259, 0.9444444444444444, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 1, 1 ], "yaxis": "y" }, { "hovertemplate": "(%{x}, %{y})RF_us - test", "legendgroup": "RF_us", "legendgrouptitle": { "font": { "size": 16 }, "text": "RF_us" }, "line": { "color": "rgb(115, 175, 72)", "dash": "solid", "width": 2 }, "marker": { "color": "rgb(115, 175, 72)", "line": { "color": "rgba(255, 255, 255, 0.9)", "width": 1 }, "size": 8, "symbol": "circle" }, "mode": "lines", "name": "test", "showlegend": true, "type": "scatter", "x": [ 0, 0, 0, 0, 0.0021141649048625794, 0.004228329809725159, 0.006342494714587738, 0.008456659619450317, 0.011627906976744186, 0.016913319238900635, 0.0200845665961945, 0.023255813953488372, 0.02959830866807611, 0.03805496828752643, 0.04334038054968287, 0.046511627906976744, 0.05496828752642706, 0.06765327695560254, 0.07505285412262157, 0.08668076109936575, 0.10253699788583509, 0.11416490486257928, 0.13002114164904863, 0.14376321353065538, 0.1543340380549683, 0.16596194503171247, 0.18076109936575052, 0.20084566596194503, 0.21458773784355178, 0.2357293868921776, 0.2526427061310782, 0.2653276955602537, 0.27801268498942916, 0.29704016913319237, 0.32452431289640593, 0.3382663847780127, 0.35412262156448204, 0.3678646934460888, 0.39112050739957716, 0.40380549682875266, 0.4175475687103594, 0.43446088794926, 0.45348837209302323, 0.47780126849894294, 0.492600422832981, 0.5105708245243129, 0.5221987315010571, 0.53276955602537, 0.5507399577167019, 0.5602536997885835, 0.5718816067653277, 0.5824524312896406, 0.5909090909090909, 0.6025369978858351, 0.6131078224101479, 0.6289640591966174, 0.6479915433403806, 0.6553911205073996, 0.6617336152219874, 0.6765327695560254, 0.6976744186046512, 0.7040169133192389, 0.7156448202959831, 0.7283298097251586, 0.7399577167019028, 0.7484143763213531, 0.7632135306553911, 0.7716701902748414, 0.7854122621564482, 0.7938689217758985, 0.8107822410147991, 0.8181818181818182, 0.8234672304439746, 0.8329809725158562, 0.8414376321353065, 0.8604651162790697, 0.8657505285412262, 0.8773784355179705, 0.8932346723044398, 0.9027484143763214, 0.904862579281184, 0.912262156448203, 0.9217758985200846, 0.9260042283298098, 0.9323467230443975, 0.9492600422832981, 0.9587737843551797, 0.9619450317124736, 0.9725158562367865, 0.9820295983086681, 0.9894291754756871, 0.9957716701902748, 1 ], "xaxis": "x", "y": [ 0, 0.018518518518518517, 0.05555555555555555, 0.1111111111111111, 0.1111111111111111, 0.12962962962962962, 0.12962962962962962, 0.16666666666666666, 0.2037037037037037, 0.2962962962962963, 0.37037037037037035, 0.37037037037037035, 0.37037037037037035, 0.3888888888888889, 0.3888888888888889, 0.4444444444444444, 0.48148148148148145, 0.5, 0.5185185185185185, 0.5370370370370371, 0.5740740740740741, 0.6111111111111112, 0.6481481481481481, 0.6666666666666666, 0.6851851851851852, 0.6851851851851852, 0.7037037037037037, 0.7407407407407407, 0.7407407407407407, 0.7407407407407407, 0.7407407407407407, 0.7777777777777778, 0.7962962962962963, 0.8148148148148148, 0.8333333333333334, 0.8333333333333334, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8518518518518519, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8703703703703703, 0.8888888888888888, 0.8888888888888888, 0.8888888888888888, 0.8888888888888888, 0.9074074074074074, 0.9259259259259259, 0.9444444444444444, 0.9444444444444444, 0.9444444444444444, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 0.9814814814814815, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], "yaxis": "y" } ], "layout": { "font": { "size": 12 }, "height": 600, "hoverlabel": { "font": { "size": 16 } }, "legend": { "bgcolor": "rgba(255, 255, 255, 0.5)", "font": { "size": 16 }, "groupclick": "toggleitem", "traceorder": "grouped", "x": 0.99, "xanchor": "right", "y": 0.01, "yanchor": "bottom" }, "margin": { "b": 50, "l": 50, "pad": 0, "r": 0, "t": 35 }, "shapes": [ { "line": { "color": "black", "width": 1 }, "opacity": 0.5, "type": "line", "x0": 0, "x1": 1, "xref": "x", "y0": 0, "y1": 1, "yref": "y" } ], "showlegend": true, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "size": 24 }, "pad": { "b": 15, "t": 15 }, "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "top" }, "width": 900, "xaxis": { "anchor": "y", "automargin": true, "domain": [ 0, 1 ], "range": [ -0.03, 1.03 ], "title": { "font": { "size": 16 }, "text": "FPR" }, "type": "linear" }, "yaxis": { "anchor": "x", "automargin": true, "domain": [ 0, 1 ], "range": [ -0.03, 1.03 ], "title": { "font": { "size": 16 }, "text": "TPR" }, "type": "linear" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "atom.plot_roc()" ] } ], "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.11.2" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }