{
"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",
" x0 | \n",
" x1 | \n",
" x2 | \n",
" x3 | \n",
" x4 | \n",
" x5 | \n",
" x6 | \n",
" x7 | \n",
" x8 | \n",
" x9 | \n",
" ... | \n",
" x21 | \n",
" x22 | \n",
" x23 | \n",
" x24 | \n",
" x25 | \n",
" x26 | \n",
" x27 | \n",
" x28 | \n",
" x29 | \n",
" target | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" -0.535760 | \n",
" -2.426045 | \n",
" 1.256836 | \n",
" 0.374501 | \n",
" -3.241958 | \n",
" -1.239468 | \n",
" -0.208750 | \n",
" -6.015995 | \n",
" 3.698669 | \n",
" 0.112512 | \n",
" ... | \n",
" 0.044302 | \n",
" -1.935727 | \n",
" 10.870353 | \n",
" 0.286755 | \n",
" -2.416507 | \n",
" 0.556990 | \n",
" -1.522635 | \n",
" 3.719201 | \n",
" 1.449135 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" -3.311935 | \n",
" -3.149920 | \n",
" -0.801252 | \n",
" -2.644414 | \n",
" -0.704889 | \n",
" -3.312256 | \n",
" 0.714515 | \n",
" 2.992345 | \n",
" 5.056910 | \n",
" 3.036775 | \n",
" ... | \n",
" 2.224359 | \n",
" 0.451273 | \n",
" -1.822108 | \n",
" -1.435801 | \n",
" 0.036132 | \n",
" -1.364583 | \n",
" 1.215663 | \n",
" 5.232161 | \n",
" 1.408798 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.821199 | \n",
" 1.328129 | \n",
" -1.000720 | \n",
" -13.151697 | \n",
" 0.254253 | \n",
" 1.263636 | \n",
" -1.088451 | \n",
" 4.924264 | \n",
" -1.225646 | \n",
" -6.974824 | \n",
" ... | \n",
" 3.541222 | \n",
" 1.686667 | \n",
" -13.763703 | \n",
" -1.321256 | \n",
" 1.677687 | \n",
" 0.774966 | \n",
" -5.067689 | \n",
" 4.663386 | \n",
" -1.714186 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" 5.931126 | \n",
" 3.338830 | \n",
" 0.545906 | \n",
" 2.296355 | \n",
" -3.941088 | \n",
" 3.527252 | \n",
" -0.158770 | \n",
" 3.138381 | \n",
" -0.927460 | \n",
" -1.642079 | \n",
" ... | \n",
" -3.634442 | \n",
" 7.853176 | \n",
" -8.457598 | \n",
" 0.000490 | \n",
" -2.612756 | \n",
" -1.138206 | \n",
" 0.497150 | \n",
" 4.351289 | \n",
" -0.321748 | \n",
" 0 | \n",
"
\n",
" \n",
" 4 | \n",
" -2.829472 | \n",
" -1.227185 | \n",
" -0.751892 | \n",
" 3.056106 | \n",
" -1.988920 | \n",
" -2.219184 | \n",
" -0.075882 | \n",
" 5.790102 | \n",
" -2.786671 | \n",
" 2.023458 | \n",
" ... | \n",
" 4.057954 | \n",
" 1.178564 | \n",
" -15.028187 | \n",
" 1.627140 | \n",
" -1.093587 | \n",
" -0.422655 | \n",
" 1.777011 | \n",
" 6.660638 | \n",
" -2.553723 | \n",
" 0 | \n",
"
\n",
" \n",
"
\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",
" dataset | \n",
" train | \n",
" test | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 4731 | \n",
" 3785 | \n",
" 946 | \n",
"
\n",
" \n",
" 1 | \n",
" 3839 | \n",
" 3785 | \n",
" 54 | \n",
"
\n",
" \n",
"
\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",
" dataset | \n",
" train | \n",
" test | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 4731 | \n",
" 3785 | \n",
" 946 | \n",
"
\n",
" \n",
" 1 | \n",
" 269 | \n",
" 215 | \n",
" 54 | \n",
"
\n",
" \n",
"
\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",
" accuracy | \n",
" ap | \n",
" ba | \n",
" f1 | \n",
" jaccard | \n",
" mcc | \n",
" precision | \n",
" recall | \n",
" auc | \n",
"
\n",
" \n",
" \n",
" \n",
" RF | \n",
" 0.952000 | \n",
" 0.656200 | \n",
" 0.555600 | \n",
" 0.200000 | \n",
" 0.111100 | \n",
" 0.325200 | \n",
" 1.000000 | \n",
" 0.111100 | \n",
" 0.910700 | \n",
"
\n",
" \n",
" RF_os | \n",
" 0.956000 | \n",
" 0.621500 | \n",
" 0.767200 | \n",
" 0.576900 | \n",
" 0.405400 | \n",
" 0.554200 | \n",
" 0.600000 | \n",
" 0.555600 | \n",
" 0.925100 | \n",
"
\n",
" \n",
" RF_us | \n",
" 0.509000 | \n",
" 0.368700 | \n",
" 0.670600 | \n",
" 0.157800 | \n",
" 0.085700 | \n",
" 0.154500 | \n",
" 0.087000 | \n",
" 0.851900 | \n",
" 0.825800 | \n",
"
\n",
" \n",
"
\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
}