{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example usage of the cardsort package\n", "\n", "To use `cardsort` in a project:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.2.36\n" ] } ], "source": [ "import cardsort\n", "import logging\n", "import pandas as pd\n", "import numpy as np\n", "\n", "print(cardsort.__version__)\n", "logging.basicConfig(level=logging.INFO) # activate display of logging texts (optional)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load data\n", "* Input data: csv file (columns: card_id, card_label, category_id, category_label, user_id)\n", "* As created by kardsort.com, \"Casolysis Data (.csv) - Recommended\" export\n", "* The data used in this example can be accessed via the [docs folder on GitHub](https://github.com/katoss/cardsort/blob/main/docs/example-data.csv)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " card_id card_label category_id category_label user_id\n", "0 1 Dog 1 pets 1\n", "1 2 Tiger 1 pets 1\n", "2 3 Cat 1 pets 1\n", "3 4 Apple 2 lunch 1\n", "4 5 Sandwich 2 lunch 1\n", "5 6 Banana 3 long food 1\n", "6 7 Hot Dog 3 long food 1\n", "7 8 Croissant 4 Moon-shaped 1\n", "8 9 Mooncake 4 Moon-shaped 1\n", "9 10 Moon 4 Moon-shaped 1\n", "10 10 Moon 5 Celestial bodies 2\n", "11 9 Mooncake 6 Junk food 2\n", "12 8 Croissant 6 Junk food 2\n", "13 5 Sandwich 6 Junk food 2\n", "14 7 Hot Dog 6 Junk food 2\n", "15 6 Banana 7 Healthy snacks 2\n", "16 4 Apple 7 Healthy snacks 2\n", "17 3 Cat 8 animals 2\n", "18 2 Tiger 8 animals 2\n", "19 1 Dog 8 animals 2\n", "20 10 Moon 9 Satellites 3\n", "21 5 Sandwich 10 Snacks 3\n", "22 8 Croissant 10 Snacks 3\n", "23 6 Banana 10 Snacks 3\n", "24 9 Mooncake 10 Snacks 3\n", "25 4 Apple 10 Snacks 3\n", "26 1 Dog 11 Dogs 3\n", "27 7 Hot Dog 11 Dogs 3\n", "28 2 Tiger 12 Felines 3\n", "29 3 Cat 12 Felines 3\n", "30 9 Mooncake 13 Snacks 4\n", "31 5 Sandwich 13 Snacks 4\n", "32 7 Hot Dog 13 Snacks 4\n", "33 8 Croissant 13 Snacks 4\n", "34 4 Apple 14 Fruits 4\n", "35 6 Banana 14 Fruits 4\n", "36 10 Moon 15 Nature 4\n", "37 2 Tiger 15 Nature 4\n", "38 1 Dog 16 Pets 4\n", "39 3 Cat 16 Pets 4\n", "40 10 Moon 17 Astronomical Body 5\n", "41 6 Banana 18 Food 5\n", "42 8 Croissant 18 Food 5\n", "43 4 Apple 18 Food 5\n", "44 5 Sandwich 18 Food 5\n", "45 7 Hot Dog 18 Food 5\n", "46 9 Mooncake 18 Food 5\n", "47 1 Dog 19 Animals 5\n", "48 2 Tiger 19 Animals 5\n", "49 3 Cat 19 Animals 5\n" ] } ], "source": [ "path = \"example-data.csv\"\n", "df = pd.read_csv(path) # a set of 10 cards that has been categorized by 5 users\n", "print(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Create dendrogram\n", "A quick and easy way to get an overview of your cardsorting results." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:cardsort.analysis:Computing distance matrix for user 1\n", "INFO:cardsort.analysis:Computing distance matrix for user 2\n", "INFO:cardsort.analysis:Computing distance matrix for user 3\n", "INFO:cardsort.analysis:Computing distance matrix for user 4\n", "INFO:cardsort.analysis:Computing distance matrix for user 5\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cardsort.create_dendrogram(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Get cluster labels \n", "Find out which category labels users gave to different clusters." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:cardsort.analysis:User 1 did not cluster cards together.\n", "INFO:cardsort.analysis:User 2 labeled card(s): Healthy snacks\n", "INFO:cardsort.analysis:User 3 labeled card(s): Snacks\n", "INFO:cardsort.analysis:User 4 labeled card(s): Fruits\n", "INFO:cardsort.analysis:User 5 labeled card(s): Food\n" ] }, { "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", "
user_idcluster_labelcards
02Healthy snacks[Banana, Apple]
13Snacks[Sandwich, Croissant, Banana, Mooncake, Apple]
24Fruits[Apple, Banana]
35Food[Banana, Croissant, Apple, Sandwich, Hot Dog, ...
\n", "
" ], "text/plain": [ " user_id cluster_label cards\n", "0 2 Healthy snacks [Banana, Apple]\n", "1 3 Snacks [Sandwich, Croissant, Banana, Mooncake, Apple]\n", "2 4 Fruits [Apple, Banana]\n", "3 5 Food [Banana, Croissant, Apple, Sandwich, Hot Dog, ..." ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cards = ['Banana', 'Apple'] # the cards in the cluster of interest\n", "\n", "# Default: Returns a DataFrame with the user_id of every user who clustered the cards in 'cards' together, \n", "# including the user-generated cluster_label and a list of all cards in the respective cluster.\n", "cardsort.get_cluster_labels(df, cards)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Interpretation:** In this case, the users with IDs 2 and 4 made clusters containing exactly the two cards of interest ('Banana' and 'Apple', as specified in the input variable 'cards'). User 2 labelled this cluster 'Healthy snacks', and user 4 'Fruits'. Users 3 and 5 also clustered these cards together, but they included additional other cards in the same cluster, and labelled the cluster 'Snacks' or 'Food'. User 1 does not appear in the output, because they did not cluster the cards together." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Adapting the dendrogram\n", "You can easily adapt the dendrogram to your needs by specifying parameters.\n", "\n", "The function __create_dendrogram__ accepts the following __parameters__:\n", "* __df__ : A DataFrame with your data\n", "* __distance_matrix__ : A pre-calculated condensed distance matrix (see \"Advanced usage\")\n", "* __count__ : The scale in which you want to present the results in ('absolute': absolute count of users, 'fraction': fractions of users)\n", "* __linkage__ : Linkage method to use when computing the distance between two clusters. Check the scipy.cluster.hierarchy documentation for more information ('average','complete', or 'single')\n", "* __color_threshold__ : Threshold over which to end the coloring of clusters (can be an absolute value, i.e. numbers of users, or a fraction from 0 - 1)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Computing distance matrix for user 1\n", "Computing distance matrix for user 2\n", "Computing distance matrix for user 3\n", "Computing distance matrix for user 4\n", "Computing distance matrix for user 5\n" ] }, { "data": { "image/png": "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KTisRYsWyszM9P4sWrTI3yUxz2J11LFjR7Vv315vvvmmJMnlciklJUX33nuvHnvsMT9XB0kymUz65ptvdMUVV/i7FBznwIEDio+P14IFC9SjRw9/l4PjREdH65VXXtHtt9/u71LOewUFBWrbtq3efvttjRo1Sm3atNHrr7/u77LOa88++6wmT56s1atX+7sUH4wsVjMOh0MrV65Uv379vG1ms1n9+vXTkiVL/FgZcG7Izc2V5AklqD6cTqcmTJigwsJCde7c2d/lQNI999yjQYMG+fx7A//bvHmzEhMTVb9+fQ0dOlTp6en+LkkB/i4Avg4ePCin06mEhASf9oSEBG3YsMFPVQHnBpfLpZEjR6pr16664IIL/F0OJK1du1adO3dWSUmJwsLC9M0336h58+b+Luu8N2HCBK1atUo///yzv0vBMTp27KiPP/5YTZo0UWZmpp577jl1795dv/32m8LDw/1WF2ERQI1xzz336LfffqsW1/jAo0mTJlq9erVyc3M1adIkDRs2TAsWLCAw+tGuXbt03333adasWQoODvZ3OTjGxRdf7H3dqlUrdezYUampqfriiy/8eukGYbGaiY2NlcVi0b59+3za9+3bp1q1avmpKqD6GzFihKZMmaKFCxcqOTnZ3+XgMKvVqoYNG0qS2rVrp59//ln/+c9/9O677/q5svPXypUrtX//frVt29bb5nQ6tXDhQr355psqLS2VxWLxY4U4IjIyUo0bN9aWLVv8WgfXLFYzVqtV7dq105w5c7xtLpdLc+bM4Tof4ATcbrdGjBihb775RnPnzlW9evX8XRL+gMvlUmlpqb/LOK/17dtXa9eu1erVq70/aWlpGjp0qFavXk1QrEYKCgq0detW1a5d2691MLJYDT3wwAMaNmyY0tLS1KFDB73++usqLCzUrbfe6u/SzmsFBQU+/3e3fft2rV69WtHR0apTp44fKzu/3XPPPRo/fry+/fZbhYeHa+/evZKkiIgIhYSE+Lm689vjjz+uiy++WHXq1FF+fr7Gjx+v+fPna8aMGf4u7bwWHh5e4Zre0NBQxcTEcK2vnz300EO67LLLlJqaqj179uiZZ56RxWLRkCFD/FoXYbEauu6663TgwAE9/fTT2rt3r9q0aaPp06dXuOkFZ9eKFSvUu3dv7/sHHnhAkjRs2DB9/PHHfqoK77zzjiSpV69ePu0fffSRbrnllrNfELz279+vm2++WZmZmYqIiFCrVq00Y8YM9e/f39+lAdVSRkaGhgwZoqysLMXFxalbt25aunSp4uLi/FoX8ywCAADAENcsAgAAwBBhEQAAAIYIiwAAADBEWAQAAIAhwiIAAAAMERYBAABgiLAIAAAAQ4RFAAAAGCIsAgAAwBBhEQAAAIYIiwAAADD0/1VNXKasxCiiAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# adaption of the default dendrogram with parameters\n", "cardsort.create_dendrogram(df, count='absolute', linkage='complete', color_threshold=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Advanced usage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Precalculating a condensed distance matrix\n", "The create_dendrogram function automatically calculates a condensed distance matrix based on the pairwise similarity of all cards (this serves as the input of the hierarchical cluster analysis function used in the create_dendrogram function). \n", "\n", "However, there might be cases in which you want to use a separately created condensed distance matrix." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Computing distance matrix for user 1\n", "Computing distance matrix for user 2\n", "Computing distance matrix for user 3\n", "Computing distance matrix for user 4\n", "Computing distance matrix for user 5\n" ] } ], "source": [ "dist = cardsort.get_distance_matrix(df) # this function returns a `condensed` distance matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use cases of a separately created condensed distance matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Saving time\n", "If you have a large dataset, you might want to use a pre-calculated distance matrix. This prevents the create_dendrogram function to recalculate the distance matrix anytime you run the function." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# dist.dump(\"distance-matrix.dat\") # save your distance matrix for later reuse\n", "dist = np.load(\"distance-matrix.dat\", allow_pickle=True) # load pre-calculated distance matrix\n", "cardsort.create_dendrogram(df, distance_matrix=dist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Creating a custom dendrogram\n", "You can use the pre-calculated distance matrix as input for scipy's hierarchy.dendrogram function to create a fully customized dendrogram, like in the example below." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAosAAAHrCAYAAACn9tfQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABI6klEQVR4nO3deXiM9/7/8dckZEESW2IpErGEUFqUOqSxNvbS0qKtpEXt5Vh6umiijlbVXktKl0SLaql9LY21KK1qS6tNEKfUThYSssz9+6Nf8zPiViIySTwf1zUX87nf9+d+3zOnp6/e21gMwzAEAAAA3ISToxsAAABA3kVYBAAAgCnCIgAAAEwRFgEAAGCKsAgAAABThEUAAACYIiwCAADAVKHbKbJarfrrr7/k4eEhi8Vyr3sCAAD3EcMwlJycrPLly8vJieNYec1thcW//vpLFStWvNe9AACA+9iff/6pChUqOLoN3OC2wqKHh4ekv79ET0/Pe9oQAAC4vyQlJalixYq2vIG85bbC4rVTz56enoRFAABwT3CpW97EhQEAAAAwRVgEAACAKcIiAAAATBEWAQAAYIqwCAAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAAAAwRVgEAACAKcIiAAAATBEWAQAAYIqwCAAAAFOERQAAAJgiLAIAgHzr8OHD6tevn/z9/eXm5iZPT081adJE06dPV2pq6h3NNXv2bEVHR9+bRvOxQo5uAAAAIDvWrFmjbt26ydXVVb169VLt2rWVlpamHTt2aNSoUTp48KDmzp172/PNnj1bpUuXVlhY2L1rOh8iLAIAgHzn6NGj6t69u3x9fRUTE6Ny5crZlg0aNEhxcXFas2aNAzssODgNDQAA8p333ntPly5d0scff2wXFK+pWrWqhg4dKkmKiopSixYt5OPjI1dXVwUGBioyMtKu3s/PTwcPHtTWrVtlsVhksVjUrFmz3NiVPI8jiwCAAs0wDBl3eO0acpc1JeWO11m1apX8/f31r3/96x9rIyMjVatWLXXq1EmFChXSqlWrNHDgQFmtVg0aNEiSNG3aNA0ZMkTFihXTG2+8IUkqU6bMHfdVEFkMwzD+qSgpKUleXl5KTEyUp6dnbvQFAMBdMwxDx3o+q9Qff3R0K7iFS5mZahgXe9s541oueeKJJ7R8+fJ/rE9NTZW7u7vdWJs2bRQbG6vDhw/bxmrXrq3SpUtry5Ytd7oLBRqnoQEABZaRmkpQLICSkpIkSR4eHrdVf31QTExM1Llz5xQcHKwjR44oMTHxnvRYkHAaGgBwX6j27Q453XB0CXlDUlKSdJPrDs1cO/qYnJx8W/XffvutIiIitGvXLqXccMo7MTFRXl5et9/sfYiwCAC4Lzi5u8upSBFHt4GbcMrIuKN6T09PlS9fXgcOHPjH2sOHD6tly5aqUaOGpkyZoooVK8rFxUVr167V1KlTZbVas9v2fYOwCAAA8p0OHTpo7ty52rVrlxo3bmxat2rVKl29elUrV65UpUqVbOObN2/OUmuxWO5Jr/kd1ywCAIB855VXXlHRokXVp08fnT59Osvyw4cPa/r06XJ2dpb0981O1yQmJioqKirLOkWLFlVCQsI96zm/4sgiAADId6pUqaKFCxfqmWeeUc2aNe1+wWXnzp1avHixwsLCNHz4cLm4uKhjx47q16+fLl26pA8//FA+Pj46efKk3Zz169dXZGSkxo0bp6pVq8rHx0ctWrRw0B7mHTw6BwBQYFlTUvR7vfqSpIB9P3DNYh51NzkjNjZWEydO1MaNG/XXX3/J1dVVderUUffu3dW3b1+5urpq1apVGj16tP744w+VLVtWAwYMkLe3t1588UUdPXpUfn5+kqTTp0+rd+/e2rZtm5KTkxUcHMxjdERYBAAUYITF/IGckbdxzSIAAABMERYBAABgirAIAAAAU4RFAAAAmCIsAgAAwBRhEQAAAKYIiwAAADBFWAQAAIApwiIAAABMERYBAABgirAIAAAAU4RFAAAAmCrk6AYAAHmHYRgyUlMd3UaOsRagfQEchbAIAJD0d1A81vNZpf74o6NbAZCHcBoaACBJMlJTCYoAsuDIIgAgi2rf7pCTu7uj27hr1tRUxTZp6ug2gHyNsAgAyMLJ3V1ORYo4ug0AeQCnoQEAAGCKsAgAAABThEUAAACYIiwCAADAFGERAAAApgiLAAAAMEVYBAAAgCnCIgAAAEwRFgEAAGCKsAgAAABThEUAAACYIiwCAADAFGERAAAApgiLAAAAMEVYBAAA+U50dLQsFovt5ebmpvLlyyskJETvv/++kpOTHd1igVHI0Q0AAABk19ixY1W5cmWlp6fr1KlT2rJli4YNG6YpU6Zo5cqVqlOnjqNbzPcIiwAAIN9q27atGjRoYHv/2muvKSYmRh06dFCnTp3022+/yd3d3YEd5n+chgYAAAVKixYt9Oabb+rYsWOaP3++bTwmJkZBQUEqWrSoihcvrieeeEK//fZblvW3bNmiBg0ayM3NTVWqVNGcOXM0ZswYWSyW3NyNPIMjiwCA+4I1NdXRLcCENSUlx+d8/vnn9frrr+vrr79W3759tWnTJrVt21b+/v4aM2aMUlNTNWPGDDVp0kT79u2Tn5+fJOnHH39UmzZtVK5cOb311lvKzMzU2LFj5e3tneM95heERQDAfSG2SVNHtwATlzIzc3zOChUqyMvLS4cPH5YkjRo1SiVLltSuXbtUsmRJSVLnzp318MMPKyIiQvPmzZMkRUREyNnZWd9++63Kly8vSXr66adVs2bNHO8xv+A0NACgwLK4u8u9Xj1HtwEHKVasmJKTk3Xy5Ent379fYWFhtqAoSXXq1FHr1q21du1aSVJmZqY2bdqkzp0724KiJFWtWlVt27bN9f7zCo4sAgAKLIvFIt8F82VwCjpPS0pKksqVy/F5L126JB8fHx07dkySFBAQkKWmZs2a2rBhgy5fvqykpCSlpqaqatWqWepuNna/ICwCAAo0i8UiS5Eijm4Dt+CUkZHjcx4/flyJiYn3dcjLKYRFAABQ4Hz22WeSpJCQEPn6+kqSfv/99yx1hw4dUunSpVW0aFG5ubnJzc1NcXFxWepuNna/4JpFAABQoMTExOi///2vKleurGeffVblypXTQw89pHnz5ikhIcFWd+DAAX399ddq166dJMnZ2VmtWrXS8uXL9ddff9nq4uLitG7dutzejTyDI4sAACDfWrdunQ4dOqSMjAydPn1aMTEx2rhxo3x9fbVy5Uq5ublJkiZOnKi2bduqcePG6t27t+3ROV5eXhozZoxtvjFjxujrr79WkyZNNGDAAGVmZmrmzJmqXbu29u/f75iddDDCIgAAyLfCw8MlSS4uLipZsqQefPBBTZs2TS+88II8PDxsda1atdL69esVERGh8PBwFS5cWMHBwZowYYIqV65sq6tfv77WrVunkSNH6s0331TFihU1duxY/fbbbzp06FCu719eYDEMw/inoqSkJHl5eSkxMVGenp650RcAIJdZU1L0e736kqSAfT/IiZtCkEvyQ87o3LmzDh48qNjYWEe3kuu4ZhEAAOA6qTc8aik2NlZr165Vs2bNHNOQ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h4fryy+/1JkzZ+Tn56e+fftqxIgRslgstrqMjAyNHz9e0dHROn78uMqVK6eePXsqIiLC7miln5+fateurVdffVXDhw/Xzz//rPLly2vMmDHq1atXtvcrL7mvwmKDcZsc3QIAALiB9WpKttf18/NT48aN9fnnn9vC4rp165SYmKju3bvbhUXDMNSpUydt3rxZvXv31kMPPaQNGzZo1KhROnHihKZOnWqr7dOnj+bNm6euXbtqxIgR+u677zR+/Hj99ttvWrZsmV0PcXFx6tq1q3r37q3Q0FB98sknCgsLU/369VWrVq1s71teUeBPQ7sXdlYD3xKObgMAANwjPXv21PLly5WamipJWrBggYKDg1W+fHm7upUrVyomJkb//e9/9eGHH2rQoEFauXKlunbtqunTp+vw4cOSpJ9++knz5s1Tnz59tHjxYg0cOFDz5s3TyJEjtXz5cm3evNlu3t9//12LFy/W22+/rUGDBmn9+vVycXFRVFRU7nwA91iBP7JosVi0uH9jpaZzChoAgLwoKSlJ5aZlf/2nn35aw4YN0+rVq9WmTRutXr06y+lnSVq7dq2cnZ318ssv242PGDFCS5Ys0bp16zR48GCtXbtWkjR8+PAsdZMmTdKaNWvUvHlz23hgYKCCgoJs7729vRUQEKAjR45kf6fykAIfFqW/A2MRl/tiVwEAyHcy7vLf0d7e3mrVqpUWLlyolJQUZWZmqmvXrlnqjh07pvLly8vDw8NuvGbNmrbl1/50cnJS1apV7erKli2r4sWL2+quqVSpUpZtlShRQhcvXryr/corSFAAACDf69mzp/r27atTp06pbdu2Kl68+F3Pef0NL7fi7Ox803HDMO66h7ygwF+zCAAACr4uXbrIyclJu3fvVs+ePW9a4+vrq7/++kvJycl244cOHbItv/an1WpVbGysXd3p06eVkJBgq7tfEBYBAEC+V6xYMUVGRmrMmDHq2LHjTWvatWunzMxMzZw502586tSpslgstrup27VrJ0maNm2aXd2UKVMkSe3bt8/h7vM2TkMDAIACITQ09JbLO3bsqObNm+uNN95QfHy86tatq6+//lorVqzQsGHDVKVKFUlS3bp1FRoaqrlz5yohIUHBwcHas2eP5s2bp86dO9vd3HI/ICwCAID7gpOTk1auXKnw8HB98cUXioqKkp+fnyZOnKgRI0bY1X700Ufy9/dXdHS0li1bprJly+q1115TRESEg7p3HItxG1dfJiUlycvLS4mJifL09LwnjaSkZSgwfIMk6dexIdy9DADAfSI3cgayj2sWAQAAYIqwCAAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAAAAwRVgEAACAKcIiAAAATBEWAQAAYIqwCAAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAAAAwRVgEAACAKcIiAAAATBEWAQAAYIqwCAAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAAAAwRVgEAACAKcIiAAAATBEWAQAAYIqwCAAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAAAAwRVgEAADIR+Lj42WxWDRp0qRc2R5hEQAA5DvR0dGyWCyyWCzasWNHluWGYahixYqyWCzq0KGDAzosOAiLAAAg33Jzc9PChQuzjG/dulXHjx+Xq6urA7oqWAiLAAAg32rXrp0WL16sjIwMu/GFCxeqfv36Klu2rIM6KzgIiwAAIN/q0aOHzp8/r40bN9rG0tLStGTJEvXs2TNL/eXLlzVixAhVrFhRrq6uCggI0KRJk2QYhl1dRkaG/vvf/6pKlSpydXWVn5+fXn/9dV29etWuzs/PTx06dNCOHTvUsGFDubm5yd/fX59++mmWbSckJOjf//63/Pz85OrqqgoVKqhXr146d+6cre/w8HDVr19fXl5eKlq0qIKCgrR58+Z//BwMw9BLL70kFxcXLV261DY+f/581a9fX+7u7ipZsqS6d++uP//88x/nux5hEQAA5Ft+fn5q3LixPv/8c9vYunXrlJiYqO7du9vVGoahTp06aerUqWrTpo2mTJmigIAAjRo1SsOHD7er7dOnj8LDw1WvXj1NnTpVwcHBGj9+fJY5JSkuLk5du3ZV69atNXnyZJUoUUJhYWE6ePCgrebSpUsKCgrSjBkz9Pjjj2v69Onq37+/Dh06pOPHj0uSkpKS9NFHH6lZs2aaMGGCxowZo7NnzyokJET79+83/QwyMzMVFhamTz/9VMuWLdOTTz4pSXr77bfVq1cvVatWTVOmTNGwYcP0zTff6LHHHlNCQsLtf8jGbUhMTDQkGYmJibdTni2Xr6Ybvv9Zbfj+Z7Vx+Wr6PdsOAADIOy6nXTZqRta845wRFRVlSDL27t1rzJw50/Dw8DBSUlIMwzCMbt26Gc2bNzcMwzB8fX2N9u3bG4ZhGMuXLzckGePGjbObq2vXrobFYjHi4uIMwzCM/fv3G5KMPn362NWNHDnSkGTExMTYxnx9fQ1JxrZt22xjZ86cMVxdXY0RI0bYxsLDww1JxtKlS7Psi9VqNQzDMDIyMoyrV6/aLbt48aJRpkwZ48UXX7SNHT161JBkTJw40UhPTzeeeeYZw93d3diwYYOtJj4+3nB2djbefvttu/l++eUXo1ChQlnGb4UjiwAAIF97+umnlZqaqtWrVys5OVmrV6++6SnotWvXytnZWS+//LLd+IgRI2QYhtatW2erk5TlaOOIESMkSWvWrLEbDwwMVFBQkO29t7e3AgICdOTIEdvYV199pbp166pLly5Z+rJYLJIkZ2dnubi4SJKsVqsuXLigjIwMNWjQQPv27cuyXlpamrp166bVq1dr7dq1evzxx23Lli5dKqvVqqefflrnzp2zvcqWLatq1ard1qntawrddiUAAEAe5O3trVatWmnhwoVKSUlRZmamunbtmqXu2LFjKl++vDw8POzGa9asaVt+7U8nJydVrVrVrq5s2bIqXry4re6aSpUqZdlWiRIldPHiRdv7w4cP66mnnvrHfZk3b54mT56sQ4cOKT093TZeuXLlLLXjx4/XpUuXtG7dOjVr1sxuWWxsrAzDULVq1W66ncKFC/9jL9cQFgEAQL7Xs2dP9e3bV6dOnVLbtm1VvHjxu57z2hG/f+Ls7HzTceOGm2b+yfz58xUWFqbOnTtr1KhR8vHxkbOzs8aPH6/Dhw9nqQ8JCdH69ev13nvvqVmzZnJzc7Mts1qtslgsWrdu3U37K1as2G33RVgEAAD5XpcuXdSvXz/t3r1bX3zxxU1rfH19tWnTJiUnJ9sdXTx06JBt+bU/rVarYmNjbUcdJen06dNKSEiw1d2JKlWq6MCBA7esWbJkifz9/bV06VK7oBoREXHT+kcffVT9+/dXhw4d1K1bNy1btkyFChWybc8wDFWuXFnVq1e/436vxzWLAAAg3ytWrJgiIyM1ZswYdezY8aY17dq1U2ZmpmbOnGk3PnXqVFksFrVt29ZWJ0nTpk2zq5syZYokqX379nfc31NPPaWffvpJy5Yty7Ls2hHIa0cArz8i+d1332nXrl2m87Zq1UqLFi3S+vXr9fzzz8tqtUqSnnzySTk7O+utt97KcoTTMAydP3/+tnvnyCIAACgQQkNDb7m8Y8eOat68ud544w3Fx8erbt26+vrrr7VixQoNGzZMVapUkSTVrVtXoaGhmjt3rhISEhQcHKw9e/Zo3rx56ty5s5o3b37HvY0aNUpLlixRt27d9OKLL6p+/fq6cOGCVq5cqQ8++EB169ZVhw4dtHTpUnXp0kXt27fX0aNH9cEHHygwMFCXLl0ynbtz586KiopSr1695OnpqTlz5qhKlSoaN26cXnvtNcXHx6tz587y8PDQ0aNHtWzZMr300ksaOXLkbfVOWAQAAPcFJycnrVy5UuHh4friiy8UFRUlPz8/TZw40Xan8zUfffSR/P39FR0drWXLlqls2bJ67bXXTE8J/5NixYpp+/btioiI0LJlyzRv3jz5+PioZcuWqlChgiQpLCxMp06d0pw5c7RhwwYFBgZq/vz5Wrx4sbZs2XLL+Z977jklJydr4MCB8vT01MSJE/Xqq6+qevXqmjp1qt566y1JUsWKFfX444+rU6dOt927xbiNqy+TkpLk5eWlxMREeXp63vbkdyIlLUOB4RskSb+ODVERF3IsAAAFXUp6ihp83EC/DfjtnuYMZB/XLAIAAMAUYREAAACmCIsAAAAwRVgEAACAKcIiAAAATBEWAQAAYIqwCAAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAAAAwxQ8wAwAKNMMwlJqR6ug2YILvJu8jLAIACizDMNRrXS/tP7vf0a0A+RanoQEABVZqRipBEbhLHFkEANwXtjy9Re6F3B3dBm6QmpGqoHlBjm4Dt0BYBADcF9wLuatI4SKObgPIdzgNDQAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAAAAwRVgEAACAKcIiAAAATBEWAQAAYIqwCAAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAAAAwRVgEAAC4hS1btshisWjLli2ObsUhCIsAACDfOnz4sPr16yd/f3+5ubnJ09NTTZo00fTp05Wamuro9nLd2rVrNWbMmByds1COzgYAAJBL1qxZo27dusnV1VW9evVS7dq1lZaWph07dmjUqFE6ePCg5s6de9fbeeyxx5SamioXF5cc6PreWrt2rWbNmpWjgZGwCAAA8p2jR4+qe/fu8vX1VUxMjMqVK2dbNmjQIMXFxWnNmjU3XddqtSotLU1ubm63tS0nJ6fbri2IOA0NAADynffee0+XLl3Sxx9/bBcUr6lataqGDh0qSbJYLBo8eLAWLFigWrVqydXVVevXr5ck/fjjj2rbtq08PT1VrFgxtWzZUrt377ab62bXLMbGxuqpp55S2bJl5ebmpgoVKqh79+5KTEy01WzcuFFNmzZV8eLFVaxYMQUEBOj111+3LU9LS1N4eLjq168vLy8vFS1aVEFBQdq8ebPd9uPj42WxWDRp0iTNnTtXVapUkaurqx555BHt3bvXVhcWFqZZs2bZ9vna625xZBEAAOQ7q1atkr+/v/71r3/dVn1MTIy+/PJLDR48WKVLl5afn58OHjyooKAgeXp66pVXXlHhwoU1Z84cNWvWTFu3blWjRo1uOldaWppCQkJ09epVDRkyRGXLltWJEye0evVqJSQkyMvLSwcPHlSHDh1Up04djR07Vq6uroqLi9O3335rmycpKUkfffSRevToob59+yo5OVkff/yxQkJCtGfPHj300EN22124cKGSk5PVr18/WSwWvffee3ryySd15MgRFS5cWP369dNff/2ljRs36rPPPsv2Z3sjwiIAAMhXkpKSdOLECT3xxBO3vc7vv/+uX375RYGBgbaxLl26KD09XTt27JC/v78kqVevXgoICNArr7yirVu33nSuX3/9VUePHtXixYvVtWtX23h4eLjt7xs3blRaWprWrVun0qVL33SeEiVKKD4+3u5ayL59+6pGjRqaMWOGPv74Y7v6//3vf4qNjVWJEiUkSQEBAXriiSe0YcMGdejQQY0bN1b16tW1ceNGPffcc7f92fwTTkMDAACHKVK4iHb33P3PhddJSkqSJHl4eNz2OsHBwXZBMTMzU19//bU6d+5sC4qSVK5cOfXs2VM7duywbedGXl5ekqQNGzYoJSXlpjXFixeXJK1YsUJWq/WmNc7OzragaLVadeHCBWVkZKhBgwbat29flvpnnnnGFhQlKSgoSJJ05MgRs93OEYRFAACQr3h6ekqSkpOTb3udypUr270/e/asUlJSFBAQkKW2Zs2aslqt+vPPP03nGj58uD766COVLl1aISEhmjVrlt31is8884yaNGmiPn36qEyZMurevbu+/PLLLMFx3rx5qlOnjtzc3FSqVCl5e3trzZo1dnNdU6lSJbv314LjxYsXb+9DyCbCIgAAyFc8PT1Vvnx5HThw4LbX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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scipy.cluster import hierarchy\n", "import matplotlib.pyplot as plt\n", "\n", "Z = hierarchy.linkage(y=dist, method='average') # this method accepts the output of get_distance_matrix as 'y' parameter\n", "plt.figure(layout=\"constrained\")\n", "labels = df.loc[df['user_id'] == 1].sort_values('card_id')['card_label'].squeeze().to_list()\n", "dn = hierarchy.dendrogram(Z, labels=labels, orientation='left', color_threshold=3)\n", "plt.show()" ] } ], "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.0" } }, "nbformat": 4, "nbformat_minor": 4 }