{ "cells": [ { "cell_type": "markdown", "id": "nasty-newfoundland", "metadata": { "tags": [] }, "source": [ "# Additional methods\n", "\n", "This notebooks provides an overview of built-in clustering performance evaluation, ways of accessing individual labels resulting from clustering and saving the object to disk.\n", "\n", "## Clustering performance evaluation\n", "\n", "Clustergam includes handy wrappers around a selection of clustering performance metrics offered by\n", "`scikit-learn`. Data which were originally computed on GPU are converted to numpy on the fly.\n", "\n", "Let's load the data and fit clustergram on Palmer penguins dataset. See the [Introduction](introduction) for its overview." ] }, { "cell_type": "code", "execution_count": 1, "id": "structural-sharp", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Clustergram(k_range=range(1, 12), backend='sklearn', method='kmeans', kwargs={'n_init': 10})" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import seaborn\n", "from sklearn.preprocessing import scale\n", "from clustergram import Clustergram\n", "\n", "seaborn.set(style='whitegrid')\n", "\n", "df = seaborn.load_dataset('penguins')\n", "data = scale(df.drop(columns=['species', 'island', 'sex']).dropna())\n", "\n", "cgram = Clustergram(range(1, 12), n_init=10, verbose=False)\n", "cgram.fit(data)" ] }, { "cell_type": "markdown", "id": "electrical-farming", "metadata": {}, "source": [ "### Silhouette score\n", "\n", "Compute the mean Silhouette Coefficient of all samples. See [`scikit-learn` documentation](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.silhouette_score.html#sklearn.metrics.silhouette_score) for details. " ] }, { "cell_type": "code", "execution_count": 2, "id": "respective-james", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2 0.531540\n", "3 0.447219\n", "4 0.399584\n", "5 0.377720\n", "6 0.368591\n", "7 0.330961\n", "8 0.296052\n", "9 0.285682\n", "10 0.284024\n", "11 0.276113\n", "Name: silhouette_score, dtype: float64" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cgram.silhouette_score()" ] }, { "cell_type": "markdown", "id": "bigger-proposition", "metadata": {}, "source": [ "Once computed, resulting Series is available as `cgram.silhouette_`. Calling the original method will recompute the score." ] }, { "cell_type": "code", "execution_count": 3, "id": "saved-directory", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cgram.silhouette_.plot();" ] }, { "cell_type": "markdown", "id": "mathematical-collect", "metadata": {}, "source": [ "### Calinski and Harabasz score\n", "\n", "Compute the Calinski and Harabasz score, also known as the Variance Ratio Criterion. See [`scikit-learn` documentation](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.calinski_harabasz_score.html#sklearn.metrics.calinski_harabasz_score) for details." ] }, { "cell_type": "code", "execution_count": 4, "id": "nuclear-brunswick", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2 482.191469\n", "3 441.677075\n", "4 400.410025\n", "5 411.175066\n", "6 382.302322\n", "7 352.464103\n", "8 334.044560\n", "9 316.429048\n", "10 301.158645\n", "11 287.334763\n", "Name: calinski_harabasz_score, dtype: float64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cgram.calinski_harabasz_score()" ] }, { "cell_type": "markdown", "id": "abandoned-running", "metadata": {}, "source": [ "Once computed, resulting Series is available as `cgram.calinski_harabasz_`. Calling the original method will recompute the score." ] }, { "cell_type": "code", "execution_count": 5, "id": "acknowledged-boxing", "metadata": {}, "outputs": [ { "data": { "image/png": "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9OYavt6YSGZ2ntkxy5yuUREREalAqrs40O+uAB7o7MtP247w9YZEzqZlsWD1fr5cl0DvTk3p1bkpbq6V425aFRUREZEKyNnJnj939uXe9k3YGH2MFRsOcOLMZZb8FM/KjYn8qX1jHuzqi0fNiv1IBRUVERGRCszB3kLPO3zoHtaIyL0n+XLtAQ6dTGPVzwf5dtNh7rq9EX3v9MPbo5rZUUtFRUVERKQSsLMYdGpTn46t6xEdl8KX6xKIOXyOf0Um8dNvSXQJacBfujfDp27Fmu1WRUVERKQSMQyD0OZ1CG1eh/2HUvlyXQLRcSls3HGcjTuOc0dLbx7u0YwAH3ezoxaLioqIiEgl1bKpBy2btufg8Qt8uf4AW/acZOv+ZLbuT6a132083KMZbZp52vRstyoqIiIilZxvg1q89NcwjqdcZMX6RDZEH2NP4ln2JJ6lWcNaPNzDnzta2uZst5pHRUREpIpo4OXG3x4J4eNX7qJ356Y4Othx4NgF3vpkG89P38CG6GM2N9utioqIiEgV41XblSEPBhExvicP92hGNWd7jp2+yHtLdjDk7+v4fsthcnJtY7ZbFRUREZEqqpabE3+9rwURE+7mr/c1p2Z1R1LOZTBnxR4GvbmGlRsOkJGVa2pGFRUREZEqrpqLAw/38Gf++J480ycIz9ounL+YzcJvY3junQ2mlhVdTCsiIiIAODva06tTU/7UvjE/7zjOig2Jpp8CUlERERGRIuztLPQIa0SPsEZmR9GpHxEREbFdKioiIiJis1RURERExGapqIiIiIjNUlERERERm6WiIiIiIjZLRUVERERsloqKiIiI2CwVFREREbFZKioiIiJis1RURERExGapqIiIiIjNUlERERERm6WiIiIiIjbLsFqtVrND3IwdO3ZgtVpxdHQs0/1arVZyc3NxcHDAMIwy3beUnMbD9mhMbIvGw7ZoPG4sJycHwzBo27btH65nf4vylJvy+gtgGEaZlx8pPY2H7dGY2BaNh23ReNyYYRjF+je8wh9RERERkcpL16iIiIiIzVJREREREZuloiIiIiI2S0VFREREbJaKioiIiNgsFRURERGxWSoqIiIiYrNUVERERMRmqaiIiIiIzVJREREREZuloiIiIiI2S0VFREREbJaKyv+4cOECr732Gl26dKFt27Y8+uijREVFmR1LgMOHDxMSEsLKlSvNjlLlrVq1ivvuu4+goCDuv/9+fvjhB7MjVVm5ubnMmDGDbt26ERISwmOPPcaOHTvMjlUlzZ49myeeeKLIstjYWPr3709wcDDdunUjIiLCpHQVl4rK/3jhhRfYvXs37733Hl999RUtW7bk6aef5uDBg2ZHq9Jyc3MZM2YMGRkZZkep8v75z3/yyiuv0K9fP7799lvuu+8+XnjhBXbu3Gl2tCppzpw5rFixgilTprBq1SqaNm3K4MGDOX36tNnRqpRPPvmEDz74oMiy8+fP8+STT9K4cWNWrFjB8OHDmTlzJitWrDApZcWkovJfjhw5wubNm5k4cSKhoaE0bdqU8ePHU6dOHb799luz41Vps2bNolq1ambHqPKsViszZ85kwIABDBgwAB8fH5577jk6dOjAtm3bzI5XJa1bt45evXrRqVMnfHx8eOmll7h06RK7du0yO1qVcPr0aQYNGsTMmTNp0qRJkfeWL1+Oo6MjkyZNwtfXl759+zJw4EDmzZtnUtqKSUXlv9SuXZuPP/6YVq1aFS4zDAOr1UpaWpqJyaq27du3s2zZMqZNm2Z2lCrv0KFDnDhxgt69exdZHhERwTPPPGNSqqqtVq1abNiwgePHj5Ofn8+yZctwdHSkefPmZkerEvbv30/NmjX55ptvaNOmTZH3oqKiCAsLw97evnBZeHg4hw8fJjU19VZHrbDsb7xK1VGjRg26du1aZNkPP/zA0aNH6dSpk0mpqrb09HTGjRvHhAkTqFu3rtlxqrykpCQAMjIyePrpp4mJiaFBgwYMHTqU7t27mxuuiho/fjyjRo2iR48e2NnZYbFYmDlzJo0aNTI7WpXQvXv36/7dT05Oxt/fv8gyLy8vAE6ePImHh0e556sMdETlD0RHR/PKK6/Qo0cP/U/YJJMmTSI4OPiqn+DFHJcuXQLgxRdfpFevXixYsICOHTsybNgwIiMjTU5XNR08eJAaNWrw4YcfsmzZMh566CFefPFF4uLizI5W5WVlZeHo6FhkmZOTEwDZ2dlmRKqQdETlOtauXcuYMWNo06YN7733ntlxqqRVq1YRFRXF6tWrzY4i/+bg4ADA008/TZ8+fQBo3rw5MTExLFy4kPbt25sZr8o5ceIEY8eO5ZNPPiE0NBSAoKAgEhMTmTVrFh9++KHJCas2Z2dncnJyiiz7vaC4urqaEalC0hGVa/j8888ZPnw4Xbp0Yd68eTg7O5sdqUpasWIFqamphbddhoSEADBx4kTuv/9+k9NVTd7e3gBXHc728/Pj+PHjZkSq0vbs2UNubi5BQUFFlrdp06bwNJ2Yx9vbm5SUlCLLfv9znTp1zIhUIemIyv9YsmQJb7zxBk888QSvvPIKFou6nFmmT59OVlZWkWV33303I0aM4L777jMpVdXWokULqlWrxu7duwt/ggdISEjQNREm+P26rfj4eFq3bl24PCEhAR8fH7Niyb+FhYWxdOlS8vPzsbOzAyAyMpImTZro+pQSUFH5L4cPH+att96iZ8+ePPPMM0WuynZ2dsbNzc3EdFXP9X7i8PDwoH79+rc4jcCV74NBgwbx4YcfUqdOHVq3bs13333H5s2b+eSTT8yOV+W0bt2a0NBQXnzxRSZOnIi3tzerVq0iMjKSJUuWmB2vyuvbty/z589n/PjxDBo0iD179rBo0SImT55sdrQKRUXlv/z444/k5uayZs0a1qxZU+S9Pn368Pe//92kZCK2Y9iwYbi4uDBjxgxOnz6Nr68vs2bN4o477jA7WpVjsViYPXs277//Pi+//DJpaWn4+/vzySefEBwcbHa8Ks/Dw4P58+fz5ptv0qdPHzw9PRk3blzh9V1SPIbVarWaHUJERETkWnQBhoiIiNgsFRURERGxWSoqIiIiYrNUVERERMRmqaiIiIiIzVJREREREZuloiIiIiI2S0VFREREbJaKioiIiNgsFRURERGxWSoqIiIiYrP+H8/r6+KsJFKfAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cgram.calinski_harabasz_.plot();" ] }, { "cell_type": "markdown", "id": "embedded-accommodation", "metadata": {}, "source": [ "### Davies-Bouldin score\n", "\n", "Compute the Davies-Bouldin score. See [`scikit-learn` documentation](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.davies_bouldin_score.html#sklearn.metrics.davies_bouldin_score) for details." ] }, { "cell_type": "code", "execution_count": 6, "id": "pacific-kazakhstan", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2 0.714064\n", "3 0.943553\n", "4 0.944215\n", "5 0.973248\n", "6 0.994783\n", "7 1.075790\n", "8 1.151462\n", "9 1.200647\n", "10 1.212565\n", "11 1.230724\n", "Name: davies_bouldin_score, dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cgram.davies_bouldin_score()" ] }, { "cell_type": "markdown", "id": "numeric-source", "metadata": {}, "source": [ "Once computed, resulting Series is available as `cgram.davies_bouldin_`. Calling the original method will recompute the score." ] }, { "cell_type": "code", "execution_count": 7, "id": "ultimate-montgomery", "metadata": {}, "outputs": [ { "data": { "image/png": "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OQAAeBWCyZf86/NiSdLkkX3l58uXBwCA7uRndgFW4nQZ2pZZIomLqgEAYAaGBM5zvKReVTUOhYcEaFQK0zgAAHQ3gsl5Dp6wS5KmjEqQL9M4AAB0O377nuN0upR5simYTGc3DgAApiCYnHPwWIXs9S5FhPprxOBos8sBAMArEUzO+dfBpt04E9PimMYBAMAk/AY+Z/u53TiTRsSZXAkAAN6L7cLnxEWFKDLErrSBvc0uBQAAr0UwOefJhROUlZUlHx+b2aUAAOC1mMoBAACWQTABAACW4XYwcblcWr58uaZPn6709HTddtttOn78+EXbrlixQkOHDr3onwcffLDDxQMAgJ7F7WCycuVKvfPOO1q6dKnWrl0rm82mBQsWqKGh4YK2t912mzZt2tTqzy9+8QsFBQVp7ty5nfIGAABAz+FWMGloaNCqVat01113acaMGUpNTdWyZctUXFysDRs2XNA+NDRUMTExLX/sdrtefvllPfDAA0pNTe20NwEAAHoGt4JJdna2ampqNGnSpJZjERERSktL044dO77y+c8884yuuOIK3Xjjje5XCgAAejy3tgsXFRVJkhISElodj42NVWFh4WWfe+DAAX388cd688035ePT/jW3hmGotra23c+/FLvd3upvmIv+sBb6w3roE2uhPy7PMAzZbG27HIdbwaT5Cx4QENDqeGBgoCorKy/73NWrVys9Pb3VaEt7OBwOZWVldegcl5OXl9dl54b76A9roT+shz6xFvrj0r6cHS7FrWASFBQkqWmtSfPHklRfX6/g4OBLPq+2tlYbNmzQkiVL3Hm5i/L391dKSkqHz/NldrtdeXl5Gjhw4GXfC7oH/WEt9If10CfWQn9cXm5ubpvbuhVMmqdwSkpKNGDAgJbjJSUll13M+tlnn8nlcmn27NnuvNxF2Ww2hYSEdPg8lxIcHNyl54d76A9roT+shz6xFvrj4to6jSO5ufg1NTVVYWFh2rZtW8uxqqoqZWZmavz48Zd83q5duzR8+HBFRES483IAAMDLuDViEhAQoJtvvlnPPfecoqKi1K9fPz377LOKj4/X7Nmz5XQ6VV5ervDw8FZTPdnZ2RoyZEinFw8AAHoWt7fH3H333br++uv18MMP66abbpKvr69ef/11BQQEqLCwUNOmTdP69etbPef06dPq1atXZ9UMAAB6KLfvLuzr66tF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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cgram.davies_bouldin_.plot();" ] }, { "cell_type": "markdown", "id": "patent-stick", "metadata": {}, "source": [ "## Acessing labels\n", "\n", "`Clustergram` stores resulting labels for each of the tested options, which can be accessed as:" ] }, { "cell_type": "code", "execution_count": 8, "id": "chronic-nothing", "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
1234567891011
000000266393
100000260349
200000260749
300000266693
400003526676
....................................
33701134013261
33801134013261
33901112431134
34001134055517
34101112455517
\n", "

342 rows × 11 columns

\n", "
" ], "text/plain": [ " 1 2 3 4 5 6 7 8 9 10 11\n", "0 0 0 0 0 0 2 6 6 3 9 3\n", "1 0 0 0 0 0 2 6 0 3 4 9\n", "2 0 0 0 0 0 2 6 0 7 4 9\n", "3 0 0 0 0 0 2 6 6 6 9 3\n", "4 0 0 0 0 3 5 2 6 6 7 6\n", ".. .. .. .. .. .. .. .. .. .. .. ..\n", "337 0 1 1 3 4 0 1 3 2 6 1\n", "338 0 1 1 3 4 0 1 3 2 6 1\n", "339 0 1 1 1 2 4 3 1 1 3 4\n", "340 0 1 1 3 4 0 5 5 5 1 7\n", "341 0 1 1 1 2 4 5 5 5 1 7\n", "\n", "[342 rows x 11 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cgram.labels_" ] }, { "cell_type": "markdown", "id": "attached-prisoner", "metadata": {}, "source": [ "## Saving clustergram\n", "\n", "If you want to save your computed `clustergram.Clustergram` object to a disk, you can use `pickle` library:" ] }, { "cell_type": "code", "execution_count": 9, "id": "opening-router", "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "with open('clustergram.pickle','wb') as f:\n", " pickle.dump(cgram, f)" ] }, { "cell_type": "code", "execution_count": 10, "id": "relevant-breeding", "metadata": {}, "outputs": [], "source": [ "with open('clustergram.pickle','rb') as f:\n", " loaded = pickle.load(f)" ] } ], "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.9.15" } }, "nbformat": 4, "nbformat_minor": 5 }