"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"print('Trend of ratings over the years'); print('--'*40)\n",
"ratings_over_years = ratings.groupby(by = 'Year', as_index = False)['Rating'].count()\n",
"\n",
"fig = plt.figure(figsize = (15, 7.2))\n",
"g = sns.lineplot(x = 'Year', y = 'Rating', data = ratings_over_years).set_title('Trend of Ratings over the Years')\n",
"\n",
"del g, ratings_over_years"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 536
},
"colab_type": "code",
"id": "8JNHfm1TnRBp",
"outputId": "dc0093b4-7ced-431d-d127-ef925d8b7769"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Yearwise Counts for Ratings. Trend is similar across rating category.\n",
"Most of the users have rated 5 on products and highest number of ratings came in 2013.\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA+MAAAHUCAYAAABRZPnsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzde5wcVZ3//9c7AQIhJARxIQRcUAcV\nWIlEuS9yEwLrEryxoJJwR4EVv8u6gK7CQtC4oq6sii4SIIJEFhWyGi4xXGKQINcfd3bCbZMYiORK\nCLeEz++POhMqnZ6enpmanurO+/l49GO6T5361Omans/Uqa46RxGBmZmZmZmZmTXOgP5ugJmZmZmZ\nmdn6xp1xMzMzMzMzswZzZ9zMzMzMzMyswdwZNzMzMzMzM2swd8bNzMzMzMzMGsydcTMzMzMzM7MG\nc2e8xUiaJekn/d2OMpN0kKTHJL0p6ff93Z7uknS1pJv7ux1mzcy5smvOlWYGzpf1cL60nnJnvAZl\nbpb0R0kDK5btJukNSZ/pr/Z14gjgX/p6I5I2lfQNSY9IWilpkaTZkk6XtElfb79Ke67sRvL7CXAP\nsANQ+O9P0jxJkR6vSWqX9G+SNuxmnOMkraqy6HTgmGJa2/ckfT39I3857ZOt61zv/ZJuTZ+vlyT9\nWNLgvm6vdZ9zZeecK2u2xbkykbS9pMskzZH0qqS5kiZJ2qaOdZ0rm4jzZeecL2u2xfkyR9K1kp5J\n+XJRyoF71LFe6fKlO+M1REQAxwNtwLkd5SkhXA1cExH/3RfbljSgMknXIyIWR8TyvmhTB0mbA3cD\nXwQuAfYCPgJ8D/gscFBfbr83JA0A3gNMj4h5EbGkp3G6+P1cBIwA3gf8K3AW8PWebKtSRCzrabv7\nySDgBuBb9a4gaSgwA3id7PN1NPBx4L/6ooHWO86V1TlXOld2w/uBjYEvAbuQfT4+CNyUfhdVOVc2\nH+fL6pwvnS+76W5gPPAB4ABgATBd0ojOVihtvowIP7p4AEcCbwAfTq8vAZ4GNkuvtwYmA38BXgZm\nAfvm1h8I/Cyt82r6OQHYKFdnAvAk2Vmpp4BVZH9sAeyQqzcPeC73+gOpznvS61nAT3LL9wP+mNq1\nHHgIODi3vGbbO9kflwKvAO+qskzAsNzzs4Fn0/57GvjHivrzgHMqyq4Efp97PQv4KXAe8CKwGLgC\n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\n9tvz7ne/m/vvv7/X2zaz9Vs+X65YsaLU+XLw4MHst99+QDag0Ac/+EH+/Oc/r1PP+dLM+kKR+XKv\nvfbiG9/4xprYfXF8OXToUABWrVrFG2+8UXVqsmnTpnHUUUchiY985CMsW7aMF154odfbNiur9eIy\n9f60evVq7rzzTo499lggm67h6quvZujQoSxatIiDDz6Yww8/nPPOO48nnniCWbNmAfD888+vFeeR\nRx5h5syZDBo0iNGjR3PaaacxcOBAvvOd7zBz5kyGDBnCEUccwS677LJOG2bOnMlXv/rVtcoigk03\n3ZRbb721R+9rwYIF7Lrrrmteb7PNNmv+IZiZ9URlvtx4442bJl8uXbqUm2++mS9+8YvrLHO+NLOi\nFZ0vI4J9992XU045pcf5MiKQxODBgzvNl5/85Ce5//77+djHPsbYsWPXWb5gwQK22WabNa878mVX\nXxKZNSt3xvvIq6++yr777suCBQvYcccdOeCAA4AsUV144YXcddddDBgwgAULFrBw4cIu4330ox9l\n2LBhAOy4447MnTuXRYsWsc8++zB8+HAAxo4dy9NPP73Ouvvtt9+aJNzhtddeK2QuSDOz3qqWL998\n882myZerVq3ipJNO4tRTT2X77bfvxjs3M+uevsqXr732Gu9///t7lS/rObb89a9/zWuvvcbJJ5/M\nzJkz1xwfm62v3BnvIx339KxcuZJPfepTXHbZZXzhC1/gV7/6FS+99BJ33nknG264IX/zN3/Da6+9\n1mW8QYMGrXk+cOBAVq1aVXdb+uKb8REjRqx1Oeaf//xnRowY0aNYZrZ+q5YvjzvuOK677rqmyJdn\nnnkm7373uznttNOqLne+NLOilDlf1vPNOGTf4h9++OFMmzZtnc6486Wtb7q8Z1zSdpJul/S4pMck\nnZnKz5c0X9JD6XF4bp1zJc2R9JSkQ3PlY1LZHEnn5Mp3kHRPKv+lpI1S+aD0ek5avn2Rb74RBg8e\nzMSJE/nhD3/IqlWrePnll9lyyy3ZcMMNmTlzJnPnzgVgs8024+WXX+5W7N1224277rqLpUuXsmrV\nKqZOnVq1XseZy/xjxowZPe6IAxx22GHccMMNvP766zz33HM8/fTTjB49usfxzMwq8+Xy5ctLny8n\nTJjA8uXLmThxYqfbdr40W1uNY8stJE2X1J5+Dk/lknRJOh58WNJuuVjjU/12SeNz5aMlPZLWuUTp\nBuXOttFsypgvZ8yYwaxZs6rmyxUrVqy593vVqlXceuuttLW1rVPvsMMO47rrriMiuPfeexk6dKgv\nUbeWVs8346uAsyLiAUmbAfdL6hgu9vsRcXG+sqSdgKOBnYFtgN9L2jEt/hHwMWAecK+kqRHxOPDt\nFGuKpJ8AJwKXpp9LIuK9ko5O9f6hu2/yhWPe0etLsntzWfeuu+7KzjvvzPXXX88nP/lJjjvuOPbe\ne29GjRrFjjtmu2aLLbZgzz33ZK+99uLggw9eMwVFLdtssw1nnXUWBx54IMOHD6etrW3N4Bi98Y1v\nfIPrr7+elStXstNOO3Hsscdy7rnnMm3aNB588EG+9rWv8YEPfIAjjjiCPfbYgw022KDq9BRm1nzK\nki9/85vfcNRRR3H00UeXNl/Onz+fiy++mB133HHNQG6nnHIK48aNc740q62zY8vjgBkRMTF9aXMO\ncDZwGNCWHnuQHSPuIWkL4Dzgw0CkOFMjYkmqczJwDzANGAPclGJW20a31TMVWVfWl3y5cuVKjjnm\nGF5//fU196efcMIJAEyaNAmAE044gUMOOYSbbrqJD33oQwwePJgf/ehHvdquWdkpIrq3gnQj8ENg\nH2BFlc74uQAR8a30+hbg/LT4/Ig4NF8PmAj8Bdg6IlZJ2qujXse6EXG3pA2AF4B3Rmr0smXLqjZ+\n2bJla+4XhGLujy7qHuui27JixQqGDBnCqlWr+NznPsfnP/95/v7v/77h7ehM5e+imvb29qpnR7uj\nLDHK1JayxOhpnK7mb+3JQVB32jFs2LB1h3ltYs2WL/si5zZ7vnSO6psYZWpLX+RK6Nt8WUSuzB1b\n/hDYPyIWSBoB3BER75P00/T82lT/KWD/jkdEnJrKfwrckR63R8T7U/kxHfU61q3cRr499eTLsh4X\nFhWjJ/mykfukEfnS+aVvYvRnW8p4bNmte8bTZeIfIjvLuA9whqRxwH1kZziXACOB2bnV5qUygLkV\n5XsA7wCWRsSqKvVHdqyTOurLUv2XKtvW3t6+5vnGG2+81j0wQF33zXSliBhFxemIMWHCBP7whz/w\n+uuv89GPfpSDDz647viN2CfLly+vawCR/O+vp8oSo6g4rRSjZ3EGFxyv6/WK+Adj5TVx4kTuuOMO\nXn/9dQ444AA+/vGP93eTzNZ7FceWW0VEx1QDLwBbpedrjgeTjmPFWuXzqpRTYxtV1Tq+LONxYVEx\nenp82ah9Us/xZXMfA7V2jKLitMKxZd2dcUlDgF8BX46I5ZIuBS4kuyzoQuC7wAn1xita/o0uW7Zs\nrTNqZTnr2BdtqXWfYiPb0ZmhQ4ey3Xbb1axTljN1zX62r6wxehxnVu2zlz1pV1Hvx5rThAkT+rsJ\nZpZT5dhyzbKICEndu3yzm+rZRmfHl2U9LiwqRk+OLxu5T7o6vmz6Y6AWjtGvbSnhsWWXA7gBSNqQ\nLFleExG/BoiIFyNidUS8BVwG7J6qzwfyfx3bprLOyhcBm6fL0PPla8VKy4el+mZmZmbWpKodWwIv\npkvHST87vvrs7rHl/PS8srzWNszMGq6e0dQFXA48ERHfy5Xn5xn4BPBoej4VODqNhL4D2WAbfwLu\nBdrSyOkbkQ3yNjXd/3078Om0/njgxlysjpExPw3c1nG/eM03NWAAb7zxRlfVrI+98cYbDBhQ1/ke\nM+snzpfl4Hxp65POji1Z+7iv8nhwXBpVfU9gWbrU/BbgEEnD06johwC3pGXLJe2ZtjWO6seW+W10\nyfmyHJwvrZXUc5n6PsCxwCOSHkplXwWOkTSK7DL154BTASLiMUnXAY+TjZZ5ekSsBpB0BlniHAhM\niojHUryzgSmSJgAPkiVo0s+fS5oDLCbrwHdpyJAhrFixgldffRXI7ivp7SiQRcQoU1saEWPAgAEM\nGTKkV9sws75V1ny5vuVc50tbz3R2bDkRuE7SicDzwFFp2TTgcGAOsBI4HiAiFku6kOwLH4ALImJx\nen4acCWwCdko6jel8s620aV8vlzfclSjYtQTx/nSWkmXnfGImAVUGylzWo11LgIuqlI+rdp6EfEM\nb1/mni9/DfhMV22sJInNNttszeuFCxd2ed9yV4qIUaa2lCWGmfWvsuZL51yz1lXj2BLgoCr1Azi9\nk1iTgElVyu8DdqlSvqjaNuqRz5fOUX0To8g4Zs3A13iYmZmZmZmZNZg742ZmBZE0SdJCSY/myr4j\n6UlJD0v6jaTNU/n2kl6V9FB6/CS3zmhJj0iaI+mSdM8jkraQNF1Se/o5PJUr1ZuTtrNbo9+7mZmZ\nmXWPO+NmZsW5EhhTUTYd2CUiPgj8L3BubtnTETEqPb6QK78UOJlsAMy2XMxzgBkR0QbMSK8BDsvV\nPSWtb2ZmZmYl5s64mVlBImIm2WCT+bJbI2JVejmbtafbWUeaqWJoRMxO90lOBo5Mi8cCV6XnV1WU\nT47MbLLpIvMzXpiZmZlZydQzmrqZmRXjBOCXudc7SHoQWA78a0T8ARgJzMvVmZfKALZKU/YAvABs\nlZ6PBOZWWWcBVbS3t9dsZFfL61GWGEXFaaUYRcVppRhFxemfGIP7IGbt9dra2noUz8zM1ubOuJlZ\nA0j6Gtl0j9ekogXAuyJikaTRwA2Sdq43XkSEpOhJW2odSLe3t/f6QLssMcrUlrLEKFNbyhKjTG3p\nUYxZ87us0pN2FbVvzcysc+6Mm5n1MUnHAR8HDkqXnhMRrwOvp+f3S3oa2BGYz9qXsm+bygBelDQi\nIhaky9AXpvL5wHadrGNmZmZmJeR7xs3M+pCkMcC/AEdExMpc+TslDUzP3002+Noz6TL05ZL2TKOo\njwNuTKtNBcan5+MryselUdX3BJblLmc3MzMzsxLyN+NmZgWRdC2wP7ClpHnAeWSjpw8CpqcZyman\nkdP3Ay6Q9CbwFvCFiOgY/O00spHZNwFuSg+AicB1kk4EngeOSuXTgMOBOcBK4Pi+e5dmZmZmVgR3\nxs3MChIRx1QpvryTur8CftXJsvuAXaqULwIOqlIewOndaqyZmZmZ9Stfpm5mZmZmZmbWYO6Mm5mZ\nmZmZmTWYO+NmZmZmZmZmDebOuJmZmZmZmVmDuTNuZmZmZmZm1mDujJuZmZmZmZk1mDvjZmZmZmZm\nZg3mzriZmZmZmZlZg3XZGZe0naTbJT0u6TFJZ6byLSRNl9Sefg5P5ZJ0iaQ5kh6WtFsu1vhUv13S\n+Fz5aEmPpHUukaRa2zAzMzMzMzNrZvV8M74KOCsidgL2BE6XtBNwDjAjItqAGek1wGFAW3qcAlwK\nWccaOA/YA9gdOC/Xub4UODm33phU3tk2zMzMzMzMzJpWl53xiFgQEQ+k5y8DTwAjgbHAVanaVcCR\n6flYYHJkZgObSxoBHApMj4jFEbEEmA6MScuGRsTsiAhgckWsatswMzMzMzMza1rdumdc0vbAh4B7\ngK0iYkFa9AKwVXo+EpibW21eKqtVPq9KOTW2YWZmZmZmZta0Nqi3oqQhwK+AL0fE8nRbNwAREZKi\nD9pX9zba29trrt/V8noUEaOoOK0Uo6g4ZYlRVJxWitGzOIMLjtf1em1tbT2KaWZmZmbWXXV1xiVt\nSNYRvyYifp2KX5Q0IiIWpEvNF6by+cB2udW3TWXzgf0ryu9I5dtWqV9rG+uodRDd3t7e64PsImKU\nqS1liVGmtvj99E2MHseZNb/m4p60q6j3Y2ZmZmbWW/WMpi7gcuCJiPhebtFUoGNE9PHAjbnycWlU\n9T2BZelS81uAQyQNTwO3HQLckpYtl7Rn2ta4iljVtmFmZmZmZmbWtOr5Znwf4FjgEUkPpbKvAhOB\n6ySdCDwPHJWWTQMOB+YAKzpf+i0AACAASURBVIHjASJisaQLgXtTvQsiYnF6fhpwJbAJcFN6UGMb\nZmZmZmZmZk2ry854RMwC1Mnig6rUD+D0TmJNAiZVKb8P2KVK+aJq2zAzq8fmV1Re6j54rcvflx4/\nkiJJmgR8HFgYEbuksi2AXwLbA88BR0XEknQl0A/ITl6uBI7rmLlC0njgX1PYCRFxVSofzdsnLqcB\nZ6bxNKpuo9A3Z2ZWoE7y5flkU93+JVX7akRMS8vOBU4EVgNfiohbUvkYslw6EPhZRExM5TsAU4B3\nAPcDx0bEG5IGkc3cMxpYBPxDRDzX52/YzKyKbo2mbmZmNV0JjKkoOweYERFtwIz0GuAwoC09TgEu\nhTWd9/OAPYDdgfPSrT2kOifn1hvTxTbMzMrqStbNlwDfj4hR6dHREd8JOBrYOa3zY0kDJQ0EfkSW\nT3cCjkl1Ab6dYr0XWELWkSf9XJLKv5/qmZn1C3fGzcwKEhEzgcUVxWOBq9Lzq4Ajc+WTIzMb2DwN\nVHkoMD0iFqdvt6cDY9KyoRExO12BNLkiVrVtmJmVUif5sjNjgSkR8XpEPEt2K+Tu6TEnIp6JiDfI\nvgkfm648OhC4Pq1fmXs78uX1wEHKTxFkZtZAdU9tZmZmPbJVGqgS4AVgq/R8JDA3V29eKqtVPq9K\nea1tmJk1mzMkjQPuA85KJyVHArNzdfL5rzJf7kF2afrSiFhVpf6aHBsRqyQtS/VfqtaYWtNhejrU\nvolRVJyyxCgqTivFKCpOK0yb6864mVmDpPu7o7+30dU/m7L8s27uf/jljVFUnFaKUVScMh5c9ixm\n7fX6cIrIS4ELgUg/vwuc0Fcbq0dn79XTofZNjDK1xe+nb2L0a1tKOG2uO+NmZn3rRUkjImJButR8\nYSqfD2yXq7dtKpsP7F9Rfkcq37ZK/VrbqKrWP42y/LNu+n/4JY1RpraUJUaZ2tIXB5fQPweYPRER\nL3Y8l3QZ8Nv0srN8SSfli8hu/dkgfTuer98Ra56kDYBhqb6ZWcP5nnEzs741FRifno8HbsyVj1Nm\nT2BZutT8FuAQScPTwG2HALekZcsl7ZnubxxXEavaNszMmkY6mdjhE8Cj6flU4GhJg9Io6W3An8im\ny22TtIOkjcgGeZuaxtW4Hfh0Wr8y93bky08Dt6X6ZmYN52/GzcwKIulasm+1t5Q0j2xU9InAdZJO\nBJ4HjkrVp5FNazaHbGqz4wEiYrGkC8kOMgEuiIiOQY5O4+2pzW5KD2psw8yslDrJl/tLGkV2mfpz\nwKkAEfGYpOuAx4FVwOkRsTrFOYPsJOZAYFJEPJY2cTYwRdIE4EHg8lR+OfBzSXPIBpA7uo/fqplZ\np9wZNzMrSEQc08mig6rUDeD0TuJMAiZVKb8P2KVK+aJq2zAzK6tO8uXlVco66l8EXFSlfBrZyc3K\n8mfIRluvLH8N+Ey3Gmtm1kfcGTczMzNbj21+RbX7zgevdT/60uNHVqljZma94XvGzczMzMzMzBrM\nnXEzMzMzMzOzBnNn3MzMzMzMzKzBfM+4mZmZmZmZWRfWHWNj7fE1oHtjbPibcTMzMzMzM7MGc2fc\nzMzMzMzMrMHcGTczMzMzMzNrMHfGzczMzMzMzBrMnXEzMzMzMzOzBnNn3MzMzMzMzKzBuuyMS5ok\naaGkR3Nl50uaL+mh9Dg8t+xcSXMkPSXp0Fz5mFQ2R9I5ufIdJN2Tyn8paaNUPii9npOWb1/UmzYz\nMzMzMzPrT/V8M34lMKZK+fcjYlR6TAOQtBNwNLBzWufHkgZKGgj8CDgM2Ak4JtUF+HaK9V5gCXBi\nKj8RWJLKv5/qmZmZmZmZmTW9DbqqEBEzu/Gt9FhgSkS8DjwraQ6we1o2JyKeAZA0BRgr6QngQOCz\nqc5VwPnApSnW+an8euCHkhQRUWdbzKwfbH7F/Cqlg2HW2+VLjx/ZuAaZmZmZmZVQl53xGs6QNA64\nDzgrIpYAI4HZuTrzUhnA3IryPYB3AEsjYlWV+iM71omIVZKWpfovVWtMe3t7zcZ2tbweRcQoKk4r\nxSgqTlliFBWneWMMLihm7Th9EaOtra2OmGZmZmZmvdfTzvilwIVApJ/fBU4oqlE9Uesgur29vdcH\n2UXEKFNbyhKjTG3x+ykoxqxq34yvra6YXcRpWAwzMzMzsz7Qo9HUI+LFiFgdEW8Bl/H2pejzge1y\nVbdNZZ2VLwI2l7RBRflasdLyYam+mZmZmZmZWVPrUWdc0ojcy08AHSOtTwWOTiOh7wC0AX8C7gXa\n0sjpG5EN8jY13f99O/DptP544MZcrPHp+aeB23y/uJk1I0nvy80+8ZCk5ZK+3IiZKczMzMysnLq8\nTF3StcD+wJaS5gHnAftLGkV2mfpzwKkAEfGYpOuAx4FVwOkRsTrFOQO4BRgITIqIx9ImzgamSJoA\nPAhcnsovB36eBoFbTNaBNzNrOhHxFDAKIM0uMR/4DXA82WwSF+frV8xMsQ3we0k7psU/Aj5GNsbG\nvZKmRsTjvD0zxRRJPyGbkeLSPn9zZmZmZtYj9YymfkyV4surlHXUvwi4qEr5NGBalfJnePsy93z5\na8BnumqfmVmTOQh4OiKel9RZnSJnpjAzMzOzEurNaOpmZtZ9RwPX5l739cwU62iW2Sc8u0HfxCgq\nTivFKCpO885g0b0YHvzSzKwY7oybmTVIuo/7CODcVNQvM1M0w+wTnt2gb2KUqS1liVGmtvTbDBZF\nzYJhZmbd4s64mVnjHAY8EBEvQjYzRccCSZcBv00vO5uBgk7K18xMkb4dz9c3s5La/IrKP9PB63SM\nlx7f6UUuZmbW5Ho0mrqZmfXIMeQuUW/QzBRmZmZmVkL+ZtzMrAEkbUo2CvqpueJ/b8DMFGZmZmZW\nQu6Mm5k1QES8QjbQWr7s2Br1C5mZwsysjCRNAj4OLIyIXVLZFsAvge3JTlAeFRFLlE098QPgcGAl\ncFxEPJDWGQ/8awo7ISKuSuWjgSuBTchy5pkREZ1to4/frplZVb5M3czMzMwa7UpgTEXZOcCMiGgD\nZqTXkI230ZYep5CmbUwd6/PIZpXYHThP0vC0zqXAybn1xnSxDTOzhnNn3MzMzMwaKiJmAosriscC\nV6XnVwFH5sonR2Y22YCVI4BDgekRsTh9uz0dGJOWDY2I2WlMjckVsaptw8ys4XyZupmZmZmVwVYR\nsSA9fwHYKj0fCczN1ZuXymqVz6tSXmsbVdWao91z3PdNjKLilCVGUXFaKUZRcbofY3AB8WrHqIzT\n1bSQ7oybmZmZWamk+7ujv7fR2YG057jvmxhlaovfT9/E6Ne2zKo962td8bqIUXecxJepm5mZmVkZ\nvNgx5WP6uTCVzwe2y9XbNpXVKt+2SnmtbZiZNZy/GTczMzOzMpgKjAcmpp835srPkDSFbLC2ZRGx\nQNItwDdzg7YdApwbEYslLZe0J3APMA74zy62YWYltvkVld9ID17rW+qlx4+kGbkzbmZmZmYNJela\nYH9gS0nzyEZFnwhcJ+lE4HngqFR9Gtm0ZnPIpjY7HiB1ui8E7k31LoiIjkHhTuPtqc1uSg9qbMPM\nrOHcGTczMzOzhoqIYzpZdFCVugGc3kmcScCkKuX3AbtUKV9UbRtmZv3B94ybmZmZmZmZNZg742Zm\nZmZmZmYN5s64mZmZmZmZWYO5M25mZmZmZmbWYO6Mm5mZmZmZmTVYl51xSZMkLZT0aK5sC0nTJbWn\nn8NTuSRdImmOpIcl7ZZbZ3yq3y5pfK58tKRH0jqXSFKtbZiZmZmZmZk1u3q+Gb8SGFNRdg4wIyLa\ngBnpNcBhQFt6nAJcClnHmmz+yD2A3YHzcp3rS4GTc+uN6WIbZmZmZmZmZk2ty3nGI2KmpO0riscC\n+6fnVwF3AGen8slpPsjZkjaXNCLVnR4RiwEkTQfGSLoDGBoRs1P5ZOBI4KYa2zCzPrL5FfMrSgbD\nrLXLlh4/snENMjMzMzNrUV12xjuxVUQsSM9fALZKz0cCc3P15qWyWuXzqpTX2kZV7e3tNRvc1fJ6\nFBGjqDitFKOoOGWJUVSc/okxuICYRcToOk5fxGhra6sjppmZmZlZ7/W0M75GRISkKKIxvdlGrYPo\n9vb2Xh9kFxGjTG0pS4wytcXvh3W+Ba+my5hFxKgjTsNiFETSc8DLwGpgVUR8ON3C80tge+A54KiI\nWJLGzvgBcDiwEjguIh5IccYD/5rCToiIq1L5aLLbijYBpgFnpquUzMzMzKyEejqa+ovp8nPSz4Wp\nfD6wXa7etqmsVvm2VcprbcPMrFkdEBGjIuLD6XUjxt8wMzMzsxLqaWd8KtAxIvp44MZc+bg0qvqe\nwLJ0qfktwCGShqcDx0OAW9Ky5ZL2TN8EjauIVW0bZmatYizZmBikn0fmyidHZjbQMf7GoaTxNyJi\nCdAx/sYI0vgb6dvwyblYZmZmZlZCXV6mLulasoHUtpQ0j+xbmYnAdZJOBJ4HjkrVp5FdVjmH7NLK\n4wEiYrGkC4F7U70LOgZzA07j7Usrb0oPamzDzKwZBXBruuXmpxHxXzRm/I11NMsYGx7DoW9iFBWn\nlWIUFad5x+noXgyPr2FmVox6RlM/ppNFB1WpG8DpncSZBEyqUn4fsEuV8kXVtmFm1qT2jYj5kv4K\nmC7pyfzCRoy/0aEZxtjwGA59E6NMbSlLjJ7GWXf2ibXVNfNEWcbpKGqsDzMz65aeXqZuZmbdEBHz\n08+FwG/I7vluxPgbZmZmZlZC7oybmfUxSZtK2qzjOdm4GY/SmPE3zMzMzKyEej21mZmZdWkr4DdZ\nP5kNgF9ExM2S7qXvx98wMzMzsxJyZ9zMrI9FxDPArlXKq46NUeT4G2ZmZmZWTr5M3czMzMzMzKzB\n/M24mZmZmZmZFa76zBOD15rFoa7ZJ1qUvxk3MzMzMzMzazB3xs3MzMzMzMwazJ1xMzMzMzMzswZz\nZ9zMzMzMzMyswdwZNzMzMzMzM2swd8bNzMzMrDQkPSfpEUkPSbovlW0habqk9vRzeCqXpEskzZH0\nsKTdcnHGp/rtksbnyken+HPSumr8uzQzc2fczMzMzMrngIgYFREfTq/PAWZERBswI70GOAxoS49T\ngEsh67wD5wF7ALsD53V04FOdk3Prjen7t2Nmti53xs3MzMys7MYCV6XnVwFH5sonR2Y2sLmkEcCh\nwPSIWBwRS4DpwJi0bGhEzI6IACbnYpmZNZQ742ZmZmZWJgHcKul+Saeksq0iYkF6/gKwVXo+Epib\nW3deKqtVPq9KuZlZw23Q3w0ws2JsfsX8ipLBMOvtsqXH+1jDzMyawr4RMV/SXwHTJT2ZXxgRISka\n0ZD29vYeLStqG+tjjKLilCVGUXGaN8bggmLWjlOWGJVx2traatZ1Z9zMzMzMSiMi5qefCyX9huye\n7xcljYiIBelS84Wp+nxgu9zq26ay+cD+FeV3pPJtq9SvqrMD6fb29i4PsutRRJxWilGmtvj9FBRj\nVqd/XmvUFbOLOGWJUXecxJepm5mZmVkpSNpU0mYdz4FDgEeBqUDHiOjjgRvT86nAuDSq+p7AsnQ5\n+y3AIZKGp4HbDgFuScuWS9ozjaI+LhfLzKyhevXNuKTngJeB1cCqiPhwGr3yl8D2wHPAURGxJCW8\nHwCHAyuB4yLigRRnPPCvKeyEiLgqlY8GrgQ2AaYBZ6bBNszMzMy6bd1besC39ZTKVsBv0mxjGwC/\niIibJd0LXCfpROB54KhUfxrZseUcsuPL4wEiYrGkC4F7U70LImJxen4abx9f3pQeZmYNV8Rl6gdE\nxEu51x1TT0yUdE56fTZrTz2xB9m0Envkpp74MNmAHfdLmppGvuyYeuIesmQ7BidMMzMzs5YUEc8A\nu1YpXwQcVKU8gNM7iTUJmFSl/D5gl1431sysl/riMnVPPWFmliNpO0m3S3pc0mOSzkzl50uaL+mh\n9Dg8t865kuZIekrSobnyMalsTjrh2VG+g6R7UvkvJW3U2HdpZmZmZt3R22/GO6aeCOCnEfFf9NPU\nE12NfleWEQiLitNKMYqKU5YYRcUperTKvhghsu9idB2nL2IUMVBLJ1YBZ0XEA+leyPslTU/Lvh8R\nF+crS9oJOBrYGdgG+L2kHdPiHwEfI8uJ96YriR4Hvp1iTZH0E+BEsquLzMzMzLqtq5l6wLf19FZv\nO+OlmXqi1kF0WUYgLFNbyhKjTG1p+vdTlhEiW23UzAKkE5QL0vOXJT1B7XltxwJTIuJ14FlJc8hG\nEwaYky7jRNIUYGyKdyDw2VTnKuB83Bk3MzMzK61edcbLNPWEmVkzkLQ98CGysTD2Ac6QNA64j+zb\n8yVkHfXZudXyVwZVXkm0B/AOYGlErKpSfx3NciVRc1+pUt4YRcVp3hjNc/VOfXEaH6NRJzLNzFpd\njzvjabqJAelbno6pJy7g7aknJrLu1BNnpG9y9iBNPSHpFuCbadoJUpxz0yiYy9M0FfeQTT3xnz1t\nr5lZf5M0BPgV8OWIWC7pUuBCslt+LgS+C5zQ1+1ohiuJmv5KlZLGKFNbynoVEZTn6p264pQlhpmZ\ndVtvvhn31BNmZnWStCFZR/yaiPg1QES8mFt+GfDb9LKzK4nopHwR2aCYG6Rvx30lkZmZmVnJ9bgz\n7qknzMzqo+ys5eXAExHxvVz5iNyAl58AHk3PpwK/kPQ9sgHc2oA/AQLaJO1A1tk+GvhsGp/jduDT\nwBTWvirJzMzMzEqoiHnGzawX1h2pEipHq/RIlU1vH+BY4BFJD6WyrwLHSBpFdpn6c8CpABHxmKTr\ngMfJRmI/PSJWA0g6A7gFGAhMiojHUryzgSmSJgAPknX+zczMzKyk3Bk3M+tjETGL7FvtStNqrHMR\ncFGV8mnV1ktXK+1eWW5mZmZm5eTOuJmZmTUFz3lrZmatZEB/N8DMzMzMzMxsfeNvxs3MzMzMzFpI\nV1cS+SqicvA342ZmZmZmZmYN5s64mZmZmZmZWYP5MnWzXvC0ZGZmZmZm1hPujJuZmVmf8/2LZmZm\na3Nn3MzMzMzMrAR81eX6xZ1xW295vlozs/r4W20zM7PiuTNuZmZmZmbWS/5W27rLo6mbmZmZmZmZ\nNZg742ZmZmZmZmYN5svUrSn5/kUzMzMzM2tm7oybmZm1KN+/aGZmVl7ujFtD+cDQzMzMzMzMnXEz\nM7NS8vSLZmaN45xr/cGdcTMzMzMza1oeS8iaVek745LGAD8ABgI/i4iJ/dyk9ZbPGJqVm/NlefjA\n0KzcnC/NrAxK3RmXNBD4EfAxYB5wr6SpEfF4/7as+fjA0Ky1OV8Ww+NamLU+58vycM619Z0ior/b\n0ClJewHnR8Sh6fW5ABHxLYBly5aVt/Fm1tSGDRum/m5Ddzhfmll/aLZcCc6XZtY/quXLAf3RkG4Y\nCczNvZ6XyszMbG3Ol2Zm9XG+NLNSKHtn3MzMzMzMzKzllPqecWA+sF3u9bapDGjOS6PMzPqI86WZ\nWX2cL82sFMr+zfi9QJukHSRtBBwNTO3nNpmZlZHzpZlZfZwvzawUSv3NeESsknQGcAvZ1BOTIuKx\nfm6WmVnpOF+amdXH+dLMyqLUo6mbmZmZmZmZtaJSfzPenyQNA8bw9uia84FbImJp/7Wq5yRtDRAR\nL0h6J/C3wFO9ORMs6ZsR8dWi2tiMJO0HvBgRT0naB9gLeCIiftfPTTNrGOfLumI6Xzpf2nrOubKu\nmOt9rgTny/WJvxmvQtI44DzgVt4e0GNb4GPAv0XE5F7G/1hETO9G/aHAOyPi6YryD0bEw3Wsfypw\nDiDg28BxwKPAvsC/R8TldcS4pLIIOBaYDBARX+r6nawTcwfgQ8DjEfFkN9Z7F7AwIl6TJLL3sxvw\nOHBZRKyqI8YRwK0R8Vp3252L8R/A7mQntW4BDgJuAj4KPBgRX+lGrCFk/6C3A1YD/5va91Y3Yrwf\nGMva/+SnRsQT9caoEfv4iLiiG+0YCdwTESty5WMi4uZubHN3ICLiXkk7ke2fJyNiWjebn485OSLG\n9XR9W1eZ8mVvc2Wq2zL5sohcmeKUJl+WPVem+A3Nl32RK1Nc58sC9XWuTNtoWL4sa65McfslXxaR\nK1Oc9SJfdidX5tpSunzZ21zZkp1xSQcAn2LtD9/PImJOnes/BexReaZS0nCyD8COvWzf/0XEu+qs\nexTwH8BCYEPguIi4Ny17ICJ2qyPGI8AewCbA88B701nM4cDtETGqjhhzgTvJ/ol0jDJ6MfDPABFx\nVR0xboiII9Pzsel93QHsDXwrIq7sKkZa91Fg94hYKenbwHuAG4ADU1tOqCPGq8ArZMntWrIz06vr\n2X4uxmPALmT7dT4wMrVpQ7JkuUudcY4i248PAwcAfyQbXPFvgM9FxCN1xDgbOAaYQjZfKmT/5I8G\npkTExO68tyrx6/rMSvoScDrwBDAKODMibkzL6vq8prrnAYeR/SOaTvb5vZ3soOWWiLiojhiVg/GI\nbP/eBhARR9TTllbXKvmyiFyZ6rZMviwiV6Y4pciXzZAr0zYali+LyJUpjvNlF8qeK1OshuXLsuTK\nFKcU+bKIXJnirBf5spv9oVLkyz7JlRHRUg/gW8AVwOeB64HvACcDDwKfqTPG/wLDqpQPA9rrjDG1\nk8f/AK904/08BIxIz3cHngQ+kV4/WGeMB3LP/7+KZfXG2Iwsuf0C2CaVPdPN382Dued/BHZIz7es\nbFcXcR7PPb8fGNDZ+6vVFmB4+mzMAF4EfgJ8tBvteDT93BhYAmySXg/Mt7GOOA8Dg3P74pb0/IPA\nH7vxmd2wSvlG3fjMPtzJ4xHg9TpjPAIMSc+3B+4jS5h1f9ZycQYCg4HlwNBUvgnwcJ0xHgCuBvYn\nO5u8P7AgPa/799zKD1ooX1JAruz43OSeN3W+pIBc2dEWSpAvKUmuzLWl3/MlBeTKVN/5svb+KUWu\nTPVLkS8pSa6s3B79mC8pIFemOC2TLykgV6Y4pciX9EGubMV7xj8eEX8DIGkKcGdEfEXS9cAfgP+u\nI8ZFwAOSbgXmprJ3kZ05ubDOdvwtWdJeUVEussRXr4ERsQAgIv6Uzsz+VtJ2QL2XNYSkDSPiTeDv\n1jRE2pg6p7eLiJeBL0saDVwj6Xf1rpsPk3u+QUQ8m2K/JKnuS2aAuZIOjIjbgOfIzlI/L+kd3WlL\nRCwBLgMuU3bf01HAREnbRsR2tVcH4HeS/kCWLH8GXCdpNtkf5MxutEXAq+n5K8BfpQY+nC4jq8db\nwDZkZ6fzRqRl9dgKOJQs8Ve27491xhgQ6dKhiHhO0v7A9ZL+mrfPetdjVWRnk1dKejoilqeYr3bj\ns/Jh4Ezga8BXIuIhSa9GxJ3daEera6V8WUSuhNbKl0XkyrTZUuTLsuRKKE++LCJXgvNlV8qSK6E8\n+bIsuRLKky+LyJXQWvmyiFwJ5cmXhefKVuyMvyVpi4hYTPYBGggQEUsk1fXLioir0mUIh/L2PRJ3\nAOemP7J6zAZWVvvlpEuV6vWypPdEuqcnIhakD+ANwM51xvhEx5OImJcrfwdwVjfaQkTcL+lA4DRg\nVnfWBXaVtJzsj2aQpBHp/WxE+j3V6SRgsqTzgWXAQ5IeAjYH/qnOGGt9FiLiBeAS4JL0h92liDhb\n0l7Z05gt6T1k+/pnZGfO6zUNuFnSTLJ7V/4bQNIWle2s4cvADEntrP1P/r3AGXXG+C3ZWceHKhdI\nuqPOGC9KGtURIyJWSPo4MIns0qh6vSFpcESsBEbn2jGMOv8BRHZP1Pcl/Xf6+SKtmfN6o5XyZRG5\nElorXxaRK6E8+bIsuRLKky97nSvTtp0vaytLroTy5Muy5EooT77sda5M67VSviwiV0JJ8mVf5MqW\nu2dc0j8A/052acX7gC9GxO+UjfL4g4j4bDdibUVuwIKIeLHwBnfdhl3Jkm57RfmGwFERcU03YvX6\n/fTFPpG0OfCBiLi7m+t9ANiR7I9gHnBv1DkohaT9I+KO7ra1k1hF7NfDgZ3ILoWansoGkF0e9Hqd\nMQaQnRXPD7Jxb/TgfqWekrQt2ZnHF6os2yci7qozzqBq71vSlmSX1nV5r1OVdf8O2Cc8SusarZQv\ni8yVab2WyZe9yZVp/dLky1bJlakdvc6XfZEr0/rOlzmtlCtTG1r+2DLFbWi+LDJXpnjOl2+3o5T5\nsohc2XKdcVhz1ufdwJzowXQRkkaR3eMxjOwPUWQDFiwFTouIB7oRq5AE05s4Fe8nP4LnUrJ/KA/2\nMkbT7ZMiYhS5T3rbli7iDoncqJPNHKNsbWkFrZYvCzh4abl8WYacW7Z90knclspRZXo/raBMuTLF\nK/MxUMNzZYpXinzZx/+HWiZflilH9WuM6MGN5s3wILum/xPAEcD7u7nuQ2QjXlaW70n9gzh8iOxS\noieA36fHk6lst260ZVSNOB9q4Pvp631S13upY5/UtW8LitHrfVJUW7qI/3+tEqNsbWmVRyvkyyJy\nZYHvpxT5sqjcUpZ82Qy5sqg4ZYlRZJxWePR3rkz1S5Evy5Ir69gnDcuXBebc9SJflilH9WeMlrsf\nSNJHge+SnT0aDdwFDJf0JnBsRMyttX6yaUTcU1kY2X0bm9bZlCuAUyvjSNozLdu1zjhX1ohzZZ1x\ning/fb1PrqSYfVLvvi0iRhH7pJC2SOrsfiYBQ+ppRFlilK0trazF8uWVNWJcWWcMaK18eWWNGEX9\nH2pkvux1O1otR5Xp/bSyEuVKKE++LEuuhPLkyyJiQAvlyzLlqLLEqNRynXGyKRIOiYi/SNoB+F5E\n7CPpY8DlwCF1xLhJ2YiOk3l7wILtgHFAXZPKU1yCKSJOEe+n1fZJWfZrUW35JtlUK6uqLKt3ZNKy\nxChbW1pZK+XLovJLK+XLMuXcsuyTVstRZXo/rawsuRLKkxvKkiuhPPukTP+HypIvy5SjyhJjLS13\nz7ikhyPig+n5QLJBBnZLrx+LiLpGiZR0GDCWtQcsmBoR0+pc/xLgPVT/Q3o2IuoahbDAOL16P0XE\nKNM+Kdl+LeL9/BH4bkiPnAAAIABJREFUx4i4v8qyuVHHdBpliVG2trSyVsqXRf1Np1gtkS/LlHNT\nnDLsk5bKUWV6P62sLLkyxShTbuj3XJlilGKflOn/UFnyZZlyVFlirLNeC3bGJ5HNN3gb2T098yPi\nnyQNBh6IiPc3sC29TjBFximDMu2TMu3XApLu+4DFEfGXKsu2ijoG7ChLjLK1pZW1Wr4s0990Ecq0\nT8qyb8uQK4uKU5YYRcZpVWXKlak9pckNZVGWfVKm/VqGfFmmHFWWGOus14Kd8Q2Bk0lD+QOTImK1\npE2Av4qIyonrq8UYBpxL9gHeiiwBLwRuBCZGD0bR7E9FvJ9W2ydF8D6xZud8uS7ny77hfWLNzLly\nXc6Vfcf7Zf3ScvcBRcSbEfHjiDgjIi6LNA9eRLxaT7JMrgOWAAdExBYR8Q7gALKBO66rJ4CkYZIm\nSnpC0mJJi9LzicrmPaxLQXF6/X6KiFGmfVKi/Vr0+3my2WOUrS2trJXyZVH5pYj3U0SMMu2TsuTL\nsuTKouKUJUaRcVpVWXIllCo3lCJXFvV+yhIjaZl8WaYcVZYYlVquMy5piKQLJD0qaZmkv0j6/9m7\n83g5qjrv459vAgRCCAnLhJBEQbmILBoBWYQB2QP4EBkRg2LC4jbAqI/gAPqMoICCIg6MiDOBAAEl\nYhg1o2GJbDFKMAgMkc0bNkkIoAkkhD3h9/xR54ZKp29333s73dWd7/v1qtftPlVnqbp9f7dOn6pT\nsyUd14NitoqICyL3YPmIeDYizgfeWWMZdQkwdSqnHvvTbsekKMe1Xm3pKuPDJWW80IJlFK0tbavN\n4mW94ks7xcsixdyiHZN2iVFF2p+2VaBYCcWJDUWJlVCcY1Kk/0NFiZdFilFFKWNVUYfnuxVpIbuE\n4zhgJPAV4N+ADuBq4Ns1lnEL8K/AsFzaMOB04Lc1lvFob9atiXLqtD/tdkwKcVwLtj+FKKNobWnn\npZ3iZR0/e20TLwv29+hjUtAy6llOuy5FiZVF+twUJVYW7JgU6f9QIfanSDGqKGWULm03Mk72bdJV\nETE/Ii4CjoiITuB44J9qLOMTwKbAnZJekLQYuAPYBDi6xjKekvSvkoZ1JUgaJul03p7VsFHl1GN/\n2u2YFOW41qst7VRG0drSztopXtbr991O8bJIf48+JsUto57ltKuixEoozuemKLESinNMivR/qCj7\nU6QYVZQyVtWbHnyRF+APwN7p9RHAzb38BmY74EBgUEn6mBrzDwUuAB4hu3RhMfBwStukB+2oVzl9\n2p92OyYFO66F2J+ilFG0trTzQhvFy3r+vuv0d902x6SO5fiYFLCMev/9tONCQWJlAT83TY+VRTom\n9fw76utxKcr+FClGFaWM1crsTaYiL8D7gD+mAzQL2Dalbw58scYyvgg8CvwSeBIYm1t3bw/a0ucA\nU49y6rE/7XZMinJci7Q/RSqjaG1p16Xd4mWdymireFmUv0cfk2KXUc9y2nEpUqwsyuemSLGyKMek\njmW0VbwsUowqShmr5OtNplZdgONr3G5u1wEGtgLuAb6U3t9XYxn1+kOqR7Crx/602zEpxHEt2P4U\nooyitWVtXWixeFnHz17bxMuC/T36mBS0jHqWszYuNDBWFulzU6e/6XY7JkX6P1SI/SlSjCpKGauV\n2ZtMrboAf61xuwdL3g8CbgIuAu6vsYx6BZh6/EHWY3/a7ZgU4rgWbH8KUUbR2rK2LrRYvKzjZ69t\n4mXB/h59TApaRj3LWRsXGhgri/S5qdPfdLsdkyL9HyrE/hQpRhWljNJlHdqMpAe6W0U2E2EtnpM0\nOiLuB4iIZZI+AkwCdqqxjH4RsSzlf1LSh4Gpkt6Z2lKrepRTj/1pt2NSlONar7a0UxlFa0vbarN4\nWa/fdzvFyyL9PfqYFLeMepbTlgoUK6E4n5uixMp67U9RyoD2ipdFilFFKWNVvenBF3kBngNGkz2H\nL79sBTxTYxkjgS26WbdXjWXcBowuSVsHmAys6MH+9LmcOu1Pux2TQhzXgu1PIcooWlvaeWmneFnH\nz17bxMuC/T36mBS0jHqW065LUWJlkT43RYmVBTsmRfo/VIj9KVKMKkoZq5XZm0xFXoArSDNelln3\n0wa2o14Bpi7lFGEp0jEp0nEtyv4UpYyitaWdl3aKl+32+y7SMSnKsW23Y1KUMor0Oy7qUpRYWa/f\nVbv9votyTIp0XIuyP0WKUUUpo3RRymxmZmZmZmZmDdKv2Q0wMzMzMzMzW9u4M25mZmZmZmbWYO6M\nm5mZmZmZmTWYO+PWciRdK+nKkrR9JS2SNLxZ7TIzKxrHSzOz6hwrrVncGbdW9CXgUEkHAUhaH5gI\nnBoRC+tViaT+9SrLzKxJHC/NzKpzrLSmcGfcWk5ELAL+BfgvSRsCZwGPRcRVkvpJ+pqkxyT9XdIU\nSUMB0rqpkp6V9KKkOyS9t6vc9K3opZJukvQy8I9N2UEzszpxvDQzq86x0prFnXFrSRHxc+Be4Drg\nc2kB+L/A4cA+ZM8CXAZcksv6a6AD2AL4M3BNSdGfBL4JbATctYaab2bWMI6XZmbVOVZaM/g549ay\nJA0DHgO+HhEXp7RO4DMRcWd6PwroBAZGxFsl+TcD/gYMioiXJV0LvBERJzRyP8zM1jTHSzOz6hwr\nrdHWaXYDzHorIp6T9HfgwVzyO4D/kfRWyeb/IOlvwHeAo4DNgK5tNgNeTq+fXoNNNjNrCsdLM7Pq\nHCut0XyZurWb+cBBETEkt6wfEc8C44HDgP2BjYFtUh7l8vtSETNbWzhemplV51hpa4w749Zufgx8\nW9I7ACT9g6Qj0rqNgNeBRcBA4LzmNNHMrBAcL83MqnOstDXGnXFrNxcBNwG3SnoJ+APwwbTuSuCZ\ntDyY1pmZra0cL83MqnOstDXGE7iZmZmZmZmZNZhHxs3MzMzMzMwazJ1xMzMzMzMzswZzZ9zMzMzM\nzMyswdwZNzMzMzMzM2swd8bNzMzMzMzMGsydcTMzMzMzM7MGc2fczMzMzMzMrMHcGTczMzMzMzNr\nMHfGzczMzMzMzBrMnXEzMzMzMzOzBnNn3MzMzMzMzKzB3Bk3MzMzMzMzazB3xs3MzMzMzMwazJ1x\nMzMzMzMzswZzZ9zMzMzMzMyswdwZNzMzMzMzM2swd8bNzMzMzMzMGsyd8TYjaZakHze7HUUm6QBJ\nD0p6U9Jvm92enpJ0raSbmt0Os1bmWFmdY6WZmdma5c54BcrcJOkPkvqXrNtZ0huSPt6s9nXjCOBf\n13QlkjaU9A1JcyW9ImmRpNmSTpa0wZquv0x7rurByeKPgbuBrYG6//4kzZcUaXlNUqekb0pat4fl\nHCdpeZlVJwPH1Ke1jSXpmnRczqhh2+0k3ZI+X3+X9CNJAxvRTusZx8ruOVZWbItjZU7J8eha7qgh\nn2OlmVmLWqfZDSiyiAhJxwMPAGcC5wKkE6hrgZ9ExM/XRN2S+gGKiBU9yRcRi9dEe/IkDQFmApsD\n3wD+CLwE7Ap8CXgK+PWabkdvpOP6buAbETG/j+VU+v2cB/wQGADsAVwBiOx49UlELOlrGc0g6TPA\ne4Dnath2MHArcC+wJ9lnbRIwGDh2DTbTesGxsjzHSsfKXug6Hl3eqLSxY6WZWYuLCC9VFuCjZP8Q\nd03vLwEeAzZK77cAJgN/IzvRmgXsncvfH7g85Xk1/TwXWC+3zbnAI2Tf4j8KLCfruASwdW67+cCT\nuffvTdu8O72fBfw4t34f4A+pXUuB+4EDc+srtr2b43EZ8DLwjjLrBGyce3068EQ6fo8B/1Ky/Xzg\njJK0q4Df5t7PAv4TOIusI7cYuBLYMHfsomQ5tkzbDuxuO+BDwO/S7+cFsg7EZlV+Px3dHJ9y+/Qr\n4O6StPNTma8AfwV+BAyu0NbL07prgZty5VwL3AR8gezkfinwS2DzkvpOBRak+m4EJqRyt2jA39CO\nwLPAu8odnzLbn5TaOSiXNhZ4CxjV7Jjgpdvfm2PlqsfDsdKxsid/P1VjY5k8jpVevHjx0sKLL1Ov\nQUT8kuyk51pJR5D9Iz82Il5Kl4LdCawPjAE+ANwC/FbStqmIfsBC4JNkJ4SnAp8lO/nKGwV8Dvg0\nsAPZycAzwP4Akt4DDAU2l/SulGd/4K8R8Vhpu9Olfv8D/D61axfgW2QnUdTY9tIy+5OdZF0TEX8t\nc6wi3h6N+CLZSeF5aX++D1woaUK5sqv4BLAR2QnzJ4EjgdPSuvOB68lOEIenZWqZMmYCI9PrL3Rt\nJ2lLsv1+Evgg2YnMB4DSkbzS38/CWhouaReyEYvSEY6XyT4H2wMnkJ1U/iDX1i8DK3L79JUK1ewB\n7A0cBhya2v/dXBuOJjtO5wPvT/t2fg1t/zdJy6osFS/1lbRhqu//RsTj1epM9gJmRcSyXNpNZJ2W\nvWoswxrMsXKVMh0rHSt7FCuTL6dbGR6UdLGkTaps71hpZtbKmv1tQKsswIbAX8j+4Z+dS/8M2Tfs\n/Uu2nwlcWKG8rwIP596fm8oeUbLdtcBP0+t/Bm4mOxn6TEq7Abgyt/3K0R6yy9WCbkZvetN2YMtU\n5hdrOGYLgW+XpP0H8Jfc+1pHe+4t2WYi8Lvu8lRo0zqp/eNyad9Jx2HdXNouabsPVfr9dFPHfOB1\nYBnZSWUAbwL/p0q+j5ONcCi9Pw5YXma7cqM9z7Lq6OHXgadz7+/Of05S2oVUGe0BNgG2qbIMrbJf\nk4FJlX7nZfLcBkwuk/4CWae+6THBS7e/O8fKcKws/f10U4dj5eqf9QOAnci+VPkL8DAwoEIex0ov\nXrx4aeHF94zXKCJelvQ9sssOz82t+iAwAlgiKZ9lANk/QwAkfQE4EXgnMJDsROetkmqeiYgFJWm3\n5+rbn+zesP7A/pKuAD5MNipQrs1/k3QV2ejNbWQjO/8dEZ09aXsJdZO+6kbZt/lbkJ2s5t0JnCRp\nQES8XktZyf0l758B9u1B/kp2AO6KiDe7EiLiT5JeTuv+0FVnmd9Pdy4hu1x0KNm9j49ExP/kN5B0\nFNl9o+8mu7+vP9nI2+bA8z3ch4ciIj+a9AwwLPf+vWT3EebdVa3QyO6r7fW9tZKOA3YjO2G3tYBj\n5UqOlbVxrHy7jO/l3s6VdC9Zh3ws2RUNZmbWZnyZes+8CRAR+Vlb+wF/BkaXLO8lu7wPSccAFwM/\n4e3L4s4D1isp/+Uydd4GbCFpR7KTydvSsl+qZ5P0vqyIOJ7sRPLWlOdBSSfW2vYyngWWkF0uWA9v\nsfpJa7mZdEsvWwwa//kt9/vpzqKImBcRc8hGcY6W9ImulZL2An5G1oH4KLAz2cy/sPrnoha1HJ/o\naaF1uPTyQGBbsk7M8jTj8QjgPEnLKuRbSNZBybdlADCEGi95taZyrHSsrJVjZTfSl0F/B7aqsJlj\npZlZC/PIeN/dA4wDXoyIv3ezzT7APRHx710JkraupfCIeELSU2QjOv3JZkwV2YjRKWSXMVYcgYiI\nucBc4PuSLie7l++KGtteWtYKSVOAT0v6dpTcC6ls2GhwRCyW9Gza9/xzXvcF5uVGep4nu5wzn380\nPT+JeIPs+PTGg8AnJa3bNeKT7l3ckOwEvE8i4jVJ3wYukjQtIl4lu2fx2YhYOWOwpHElWd8A+klS\nRPT45LDEw2T3Yv5XLm2PGvJdClxXZZtFFdadwer3W/42lTmxQr7fA9+TtGFEdJ3YH0J2kvz7Ku2x\nYnKszHGsXN1aHitXI+kdwKbA0xU2c6w0M2thHhnvu2vI/lH+RtKBkraStLukr6UJjCCbUXa0pP8j\naRtJXyG77KxWt5HN5npnRLwV2SNiZgLjqTDSI+k9kr4jaS9J75T0IbIJXR7qQdvLOZNs1t+7JX1G\n0vskbS3pY2QTA/1j2u47ZJPRnCipQ9I/k53cfjtX1m/JTu4OlLQd2ajYSHruCWB7SdtL2iyNDNTq\nP8hOeCZJ2kHSPwJXA3dERNXLE2t0Ndko1inp/aNko3jHSXqXssdCfb4kzxNknYmPSNpc0qA+1P99\n4FOSTkqfweOAT6V13Z68RsTiNGpVaenuMl0iYn5E/Dm/kM2u/FxEdH0OkfQTSflLQ68lG1X8qaT3\nSzqA7Pf004iodGJqxeVY6VhZi7UyVkraW9KpknZOn69DyR579wTZDPNd2zlWmpm1EXfG+ygiXiEb\n0bifbKKqv5BNFLQL2UQ3kD2G5Tqyk4w/kV1m960eVHM72VUM+ZPJ28qklVoGbEd2r9lfyGaFnUl2\n712tbV9NOqHYg+w+vy+TTXjzJ7LJZ35CdtII2QnBN4H/Rzaichrw1Yi4Olfct8lGg35Odo/k34Bf\nVNin7kwE7gNmpzI+XmvGiHgGOBjYmmwEbBrZMam5jBrqeI3s2bFnSNo4slmnvwtcQDYS9zHgX0vy\n3JXyTCIbFft3eikirge+Rva7mEs2OdA5afVrvS23jt4JvKPrTUQsJZvIaCDZ/ZrXA9PJOijWghwr\nHStrrGNtjZWvAUeR3SbxKNln4ndkE+O9ktvOsdLMrI10zURqZmsZSd8CPh8Rw6pubGa2lnKsNDOz\nNcX3jJutBSStT/Ys45vIHgm0P9mzeHs9gmRm1m4cK83MrJE8Mm62Fkj3hU4ju+x3I7L7EK8Evp/u\nqzUzW+s5VpqZWSO5M25mZmZmZmbWYC19mfqSJUv8TYKZrREbb7xx6TOdW5rjpZmtCe0WK83MGsmz\nqZuZmZmZmZk1WE2dcUlPSpor6X5J96S0TSTNkNSZfg5N6ZJ0iaR5kh6QtHOunAlp+05JE3Lpu6Ty\n56W8qlSHmZmZmZmZWSvrycj4fhExOiJ2Te/PAG6NiA6y52KekdIPBTrS8jngMsg61sBZwO7AbsBZ\nuc71ZcBnc/nGVKmjRzo7O3uTrW3yF6ENzc5fhDY0O38R2tDs/PUqo121w++n1fMXoQ3eBx+DeuQ3\nM7Pq+nKZ+ljg6vT6auCjufTJkZkNDJE0HDgEmBERiyPiBWAGMCatGxwRsyObTW5ySVnl6jAzMzMz\nMzNrWbVO4BbALZIC+M+I+C9gWEQsTOufBYal1yOAp3N556e0Sunzy6RToY7VVPsGt9nfEDc7fxHa\n0Oz8RWhDs/MXoQ3Nzl+pjI6Ojj6XbWZmZmZWi1o743tHxAJJ/wDMkPRIfmVEROqorzHV6sifREcE\ny5Yt46233gJg6dKlDB48uNd1t3r+ZrWhX79+DBo0CEl0dnb2qaPT1/z1KKPV8xehDc3OX68yJE0C\nPgI8HxE7prSzyW63+Vva7GsRMT2tOxM4EVgBfDEibk7pY4CLgf7A5RFxfkrfGpgCbAr8Cfh0RLyR\nnoE8GdgFWAR8IiKerFRHNfl4uf7667NkyZJeH5e+5q9HGa2aPx8vzczMbO1QU2c8Ihakn89L+gXZ\nPd/PSRoeEQvTpebPp80XAKNy2UemtAXAh0vS70jpI8tsT4U6Klq2bBkDBgxgvfXWA2DAgAGsv/76\ntWQtq9XzN6sNb7zxBsuWLWOjjTbqdb1mBXUV8EOyjnHeDyLiwnyCpO2BccAOwJbAbyVtm1ZfChxE\ndkXQHEnTIuIh4IJU1hRJPybrZF+Wfr4QEdtIGpe2+0R3dUTEimo7ko+Xa2usKkJ+x0szM7O1T9V7\nxiVtKGmjrtfAwcCfgWlA14zoE4BfpdfTgPFpVvU9gCXpUvObgYMlDU0Ttx0M3JzWLZW0R5pFfXxJ\nWeXqqOitt95a2RG35llvvfVWXp1g1k4iYiawuMbNxwJTIuL1iHgCmEf2heZuwLyIeDwi3iAbCR+b\n4uD+wNSUv3ROjq55NKYCB6Ttu6ujKsfLYnC8NDMzW/vUMjI+DPhFunRuHeCnEXGTpDnA9ZJOBJ4C\njk7bTwcOIzsZfAU4HiAiFks6B5iTtvtWRHSdzJ5ENtK0AXBjWgDO76YOM1sLDLlyQUnKQJj1dtqL\nx4+gYE6RNB64Bzg1TVY5Apid2yY/L0bpPBq7k12a/mJELC+z/cq5NyJiuaQlaftKdawmf8/8+uuv\nz4ABA1a+f+2112rZz271NX8R2tCs/EuXLuX557MLwJo9t4Lnp2i9Y/DBWQNLUlaNl3P2fqVu9Xt+\nDTOz+qjaGY+Ix4H3l0lfBBxQJj2Ak7spaxIwqUz6PcCOtdZhZlZAlwHnkE14eQ7wfeCEpraoG/kT\n6SVLlqy8rPq1117r0yXafc1fhDY0M//gwYMZNWpU0+dWKMLcDK2evyltmFX65eWqetqWehwDMzOr\nrNYJ3FraFtctqmt5tYzGbbLJJmy//fasWLGCkSNHMnHiRIYMGdJ9mS++yNSpU/nMZz4DwMKFCzn9\n9NOZPLn0ltTGGTduHE899RR33XXXausigtNPP50ZM2awwQYb8KMf/YjRo0c3oZVmxRARz3W9ljQR\n+HV62908GnSTvojskZDrpNHx/PZdZc2XtA6wcdq+Uh09svrVCH3T7vHy8MMP57nnnlvZAb/uuusY\nNWrUattddNFFXHPNNfTv358LLriAAw7w98xmZmZru748Z9wq2GCDDZg1axZ33XUXQ4YM4fLLL6+4\n/ZIlS7jiiitWvh8+fHhTO+LTpk1j0KBB3a6fMWMGjz/+OPfeey8XX3wxp556agNbZ1Y8aZLJLkeS\nza0B2dwX4yQNSLOkdwB/JLtlp0PS1pLWI5uAbVq6uuh24KiUv3ROjq55NI4Cbkvbd1dHS2j1eDlx\n4kRmzZrFrFmz2HzzzVdb/8gjj3DDDTcwe/Zspk6dyqmnnsqKFVXn1jMzM7M25854A+y6664sXJg9\nLn3ZsmUcccQR7LPPPnzoQx/iN7/5DQDf/OY3eeKJJ9h77735t3/7N5566in23HNPAKZMmcKxxx7L\nxz72MXbeeWe+8Y1vrCx78uTJ7LLLLuy///588Ytf5Ktf/Wqf27ts2TJ+9KMfcdppp3W7zfTp0xk3\nbhyS+OAHP8iSJUt49tln+1y3WSuQdB1wF/AeSfPTvBbflTRX0gPAfsD/BYiIB4HrgYeAm4CTI2JF\nGvU+hWxyy4eB69O2AKcDX5E0j+ye8K6e5xXApin9K8AZlepYowdhDWm1eFmL6dOn87GPfYwBAwaw\n1VZb8a53vYs//elPDanbzMzMimutuEy9mVasWMHvfvc7jjvuOCCbLOnaa69l8ODBLFq0iAMPPJDD\nDjuMs846i4cffphZs2YB8NRTT61Szty5c5k5cyYDBgxg11135XOf+xz9+/fne9/7HjNnzmTQoEEc\nccQR7LjjarfeM3PmTM4888zVnl87cOBAbrnlltW2P++88zj55JPZYIMNut2vhQsXMmLE25efbrnl\nlixcuJAtttii5mNj1qoi4pgyyVeUSeva/jzgvDLp08kmvSxNf5wys6FHxGvAx3tSRyspQrycNWsW\nZ5999mrp3cVLgJNPPpl+/fpxxBFH8C//8i+rrV+4cCG77rrryvdd8dLMzMzWbu6MryGvvvoqe++9\nNwsXLqSjo4P99tsPyO61Puecc/j9739Pv379WLhw4crZcyvZd9992XjjjQHYbrvtePrpp1m0aBF7\n7bUXQ4cOBWDs2LE89thjq+XdZ599uPXWW2uaVOiBBx7giSee4Dvf+c5qJ7hmZmtCkeLl3nvvvbKT\nX4uJEyey5ZZb8tJLLzF+/Hi22GILxo8fX3N+MzMzW3u5M76GdN0D+corr3DkkUcyceJEvvCFL3D9\n9dfz97//nTvvvJN1112XnXbaqabH4OQfPdS/f3+WL19eYetV9WRkfM6cOdx///3stNNOrFixgr/9\n7W8cfvjh3HDDDatsN3z4cBYseHuip2eeeYbhw4djZtZTRYqXPR0Z33LLLQHYaKONOOqoo7jnnntW\n64w7XpqZmVk5vmd8DRs4cCDnnnsuP/zhD1m+fDlLly5ls802Y91112XmzJk8/XT2mOGNNtqIl156\nqUdl77zzzvz+97/nxRdfZPny5UybNq3sdl0j410TDHUt5U4sTzzxRB555BHmzp3LjTfeyDbbbLPy\nPs28Qw89lClTphARzJkzh8GDB/sSdTPrkyLEy66R8Vri5fLly1m0KHtax5tvvsnNN9/Mdtttt9p2\nhx56KDfccAOvv/46Tz75JI899hi77LJLj9pvZmZm7WetGBl/9phNm/rc2Z122okddtiBqVOncvTR\nRzNu3Dg+9KEPMXr0aLbddlsge7TPHnvswZ577smBBx648pE9lWy55Zaceuqp7L///gwdOpSOjg4G\nDx7c63ZWM2lS9oj4E044gYMPPpgZM2bwgQ98gIEDB3LppZeusXrNrHFqeRRZd+rxnPFWipevv/46\n//RP/8Sbb77JW2+9xb777suxxx4LZJO23XfffXz961/nve99L0ceeSS7774766yzDhdeeCH9+/fv\nU91mZmbW+taKzngz5C9JBPjZz3628vWMGTPK5il9nE/X873HjRu3ygluvqyjjjqK4447juXLl/Op\nT32Kww8/vM9t7/LOd75zlWeMn3DCCStfS+LCCy+sW11mtvZq1Xi54YYbcuedd66S1nUZ/WGHHcZh\nhx22Mv20006r+IQKMzMzW/u4M97izj//fO644w5ef/119ttvPz7ykY80u0lmZoXkeGlmZmZF4s54\nizv33HOb3QQzs5bgeGlmZmZF4gnczMzMzMzMzBqsLTvj/fr144033mh2M9Z6b7zxBv36teVHzKxt\nOF4Wg+OlmZnZ2qctL1MfNGgQy5Yt49VXXwVg6dKlfZo1t9XzN6sN/fr1Y9CgQb2u08zWvHy8XFtj\nVRHyO16amZmtfdqyMy6JjTbaaOX7559/nlGjRvW6vFbPX5Q2mFnx5ONlEeJEs9vQ7PxmZma29vA1\n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\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"#http://jonathansoma.com/lede/data-studio/classes/small-multiples/long-explanation-of-using-plt-subplots-to-create-small-multiples/\n",
"print('Yearwise Counts for Ratings. Trend is similar across rating category.'); \n",
"print('Most of the users have rated 5 on products and highest number of ratings came in 2013.'); print('--'*40)\n",
"\n",
"year_wise_ratings = pd.DataFrame(ratings.groupby(['Rating', 'Year'], as_index = False)['UserID'].count())\n",
"year_wise_ratings.rename(columns = {'UserID': 'Counts'}, inplace = True)\n",
"ratings_ = sorted(year_wise_ratings['Rating'].unique())\n",
"\n",
"fig, axes = plt.subplots(nrows = 2, ncols = 3, squeeze = False, figsize = (15, 7.2))\n",
"plt.subplots_adjust(hspace = 0.5)\n",
"axes_list = [item for sublist in axes for item in sublist] \n",
"\n",
"for rating in ratings_:\n",
" ax = axes_list.pop(0)\n",
" g = year_wise_ratings[year_wise_ratings['Rating'] == rating].plot(kind = 'bar', x ='Year', y = 'Counts', label = f'Rating = {rating}', \n",
" ax = ax, legend = True)\n",
" ax.set_title(f'Yearwise Count for Rating = {rating}')\n",
"\n",
"for ax in axes_list:\n",
" ax.remove()\n",
"\n",
"del ax, axes, axes_list, fig, rating, ratings_, year_wise_ratings"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 255
},
"colab_type": "code",
"id": "sm45CbRZzI9d",
"outputId": "26b5ac16-f488-45cb-a692-aa180c821e9f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Adding a column with count of rating per user\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"text/plain": [
"(7824482, 6)"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
UserID
\n",
"
ProductID
\n",
"
Rating
\n",
"
Timestamp
\n",
"
Year
\n",
"
UserIDCounts
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
AKM1MP6P0OYPR
\n",
"
0132793040
\n",
"
5.00
\n",
"
2013-04-13
\n",
"
2013
\n",
"
2
\n",
"
\n",
"
\n",
"
1
\n",
"
A2CX7LUOHB2NDG
\n",
"
0321732944
\n",
"
5.00
\n",
"
2012-07-01
\n",
"
2012
\n",
"
4
\n",
"
\n",
"
\n",
"
2
\n",
"
A2NWSAGRHCP8N5
\n",
"
0439886341
\n",
"
1.00
\n",
"
2013-04-29
\n",
"
2013
\n",
"
1
\n",
"
\n",
"
\n",
"
3
\n",
"
A2WNBOD3WNDNKT
\n",
"
0439886341
\n",
"
3.00
\n",
"
2013-07-22
\n",
"
2013
\n",
"
1
\n",
"
\n",
"
\n",
"
4
\n",
"
A1GI0U4ZRJA8WN
\n",
"
0439886341
\n",
"
1.00
\n",
"
2012-04-18
\n",
"
2012
\n",
"
1
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" UserID ProductID Rating Timestamp Year UserIDCounts\n",
"0 AKM1MP6P0OYPR 0132793040 5.00 2013-04-13 2013 2\n",
"1 A2CX7LUOHB2NDG 0321732944 5.00 2012-07-01 2012 4\n",
"2 A2NWSAGRHCP8N5 0439886341 1.00 2013-04-29 2013 1\n",
"3 A2WNBOD3WNDNKT 0439886341 3.00 2013-07-22 2013 1\n",
"4 A1GI0U4ZRJA8WN 0439886341 1.00 2012-04-18 2012 1"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"print('Adding a column with count of rating per user'); print('--'*40)\n",
"userid = ratings['UserID'].value_counts()\n",
"userid = pd.DataFrame(userid).reset_index()\n",
"userid.columns = ['UserID', 'UserIDCounts']\n",
"\n",
"ratings_df = ratings.merge(userid, how = 'left', on = ['UserID'])\n",
"display(ratings_df.shape, ratings_df.head())\n",
"\n",
"del userid"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"colab_type": "code",
"id": "AjHl_S6p0jym",
"outputId": "93960de2-8714-4406-aec5-7d29f29593a5"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of unique USERS and PRODUCT IDs in the raw ratings dataframe\n",
"--------------------------------------------------------------------------------\n",
"Number of unique USERS in raw ratings dataframe = 4201696\n",
"Number of unique PRODUCTS in raw ratings dataframe = 476002\n"
]
}
],
"source": [
"# Number of unique user id and product id in the data\n",
"print('Number of unique USERS and PRODUCT IDs in the raw ratings dataframe'); print('--'*40)\n",
"print('Number of unique USERS in raw ratings dataframe = ', ratings_df['UserID'].nunique())\n",
"print('Number of unique PRODUCTS in raw ratings dataframe = ', ratings_df['ProductID'].nunique())"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 521
},
"colab_type": "code",
"id": "xW3LOd5mJo72",
"outputId": "2b55ccfc-a10f-4974-9552-a943acd406a1"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Distribution of Ratings per User is sparser\n",
"Maximum number of rating per user being 520 and minimum being 1\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9MAAAHFCAYAAADxHarqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzde5hlV10n/O+vqro73Z0rCQmQBBJI\ncQm3CBJkREQiThCH6MglwCg4vKOO8o4zOq8TZkZkor7KvCPRGXGc5zUIIgoxirYSjCgXHcYJ4Q4J\nxGpCMDdyv3U6famuNX/sXd2nqyvdtbtPd1WnP5/nqaf2ZZ191jlnnTr1PWvttau1FgAAAGDpJpa7\nAgAAAHC4EaYBAABgIGEaAAAABhKmAQAAYCBhGgAAAAYSpgEAAGAgYRqA/VZV766qvzpIx35jVc0+\n3PpBuL+3VdXGg3X8oarqmVX1qaraUlU3LFMdzqiqVlUvXI77B4CVTJgGYDd9QG79z/aqurOq/mdV\n/WxVrV9Q/KeSvGrAsWer6o1LLP6BJKcu9dgD6vDC/rGdsWDXf0nybeO+vwPwn5Pcn+SpSZ63WIH+\nC4Y28nNHVX2kqgY/jqraWFVvW7D5xiSPTXLV0OMd7qrqxf1zetoi+w7al0gAHD6EaQAW87fpQtQT\nknxXkvcleXOSz1bVKfOFWmv3tdbuGecdV2dVa+2h1tpt4zz23rTWNrXW7jxU97cE00k+0Vq7obV2\nx17K7Uj3Wj02yXlJ7k3y4ao6+UAr0Frb0Vr7Zmtt+4Eea6WqqtXLXYfFVNWq5a4DAHsnTAOwmG19\niLqltfal1tp/T/KCJI9O8ivzhRb20FXV06vqyqq6t6oerKqvVNUP9ftuSDKZ5Hfme1L77W/se6y/\nq6o+l2Rrku9+uGHdVfXdVXVNP/z5qqo6Z2TfHrepqtP6+3tx3xv9t/2ur/fbP96X22OYd1W9oaqu\nraptVXVTVf1iVU2N7P94Vf12Vf1cVX2zqu6uqt+tqqP39uRW1WOr6v398/RQf5xv7fed0T83T0py\ncV/Ht+3teP1r9c3W2heTXJzk+CTPH7m/51TVh6vq9qraVFVXV9X5o4+jv7+fH+nlPmPhMO+R9VdX\n1Z9X1eaqun7haIOqOrOq/rJ/jW6sqp+cf65GylxQVZ/rj3FvdUPav2Uvz9m7q+qvqurfVNXN/e3+\nsKoetaDchVX1+f6+b6iqd9TIiIq+HpdW1S9U1a1J/mFvz+1SVDfa4ZNV9UD/84Wq+scj+0/p639H\nv/+TVfWikf3zveAvr24UyJYk/9eB1guAg0uYBmBJWms3p+uh/qdV9XCfH3+Q5K4k/yjJM5P8dJL5\nnuvnpetF/dfZ1ZM6byLJ2/vyT03y6Yc5/kS64c8/keTcJHck+VBVrV3iw7gxyQX98rl9Hf7pYgWr\n6uVJ3pXkvUmekeRnkvxkkp9fUPSVSR6V5MVJLkzyfUn+3cNVoKoqyZ+ke5zf19fjtiQfqaqTsmto\n9U3pnpPHphuCvk99aPzn/eq2kV3Hphs2/11JnpPkyiQbqurJ/f5/muSGJL+aXa/NjXu5q19J8rtJ\nnpXk/Ul+e/5Y/eP7YJLjkrwoyT9J8vIkO4NyVT0myR+may9PT/dFza8l2dc58ef2j+H8JN+b5Jwk\nl44c941J/nv/OM5O8sNJvjvJby04zqvTfTF0XpKX7uM+96r/cmVDuqHwz+l/3pZkc79/bZKPJTkm\nycvSPQ9XpHu9n7bgcL+a7jV/WpI/O5B6AXDwTe27CADsdE26YHZSktsX2f+EJO9orV3br18/v6O1\ndkeXs3Jfa+2bC25XSX6mtfa3Ozd0ZReqJP9Pa+0TfZkfShf6XpeRUPVwWms7qurufvWOReox6qIk\nf9Ra++V+/e/7EPgrVfULrbX5sPqN1tq/6Ze/WlUfSBfgfu5hjvuSdKHw6fPPU1X9cLow+xOttYuT\nfLOqdiTZtI86JslkVW3ql+d7YK9K8tcjj/vjC27zH6vqn6Q73/2XWmt3L3Z/D/MaJMlvtNYu68v8\nXJL/O13I/fv+sT87yXRrbWNf5p+l+3Jg3mOTrEpyWWvthn7bV/bxOJPuy5Qfaq3d1x/3J5NcWVVn\n9ff1tiRvaa29ty9/fVW9OcknqupfjZyScGu653puCfe5L8ckOSHJhtbaTL9tZmT/a9K9Z17TWpv/\nsuCXquq8JD+W7suleb/UWhOiAQ4TeqYBGGI+XbWH2f9f0vVSfry6YdPPGXDsq5dY7u/mF/pw9JV0\nvZvj9vQkf7Ng2yeSHJVuSPS8Lywoc0uSU/Lwnp7krpEvHNJa25ouAO/P49iRrof2uUl+KMnX0wXO\n0ZnQH11Vv1lVX+2HVG/q7+sJ+3F/SfL5kbrvSPfFyvxjPjvJnfNBui9zd5LrRm7/xXS941+uqg9W\n1U9V1elLuN9r54N075Pz91lVj07/ZU4/lH1T/zg/3Jc5a+R2nxlTkJ5vg7+dLtR/uKouqqqnjBR5\nXpLHJLl3Qb2+I9158aM+NY46AXBoCNMADPH0JPelG8q9h9baLyR5cpLL0g2N/t9V9YtLOO6O1tqW\nMdRvsYB0sCdy2rZgveUQf7621ja21q5rrf1ekl9O8ie1+8Ra704X3n62/31OukC8v5Nv7esxP9yX\nLfP13ZFuyPNL0n2J8oPpev6/bz/rk5H7/6l0j2/+59npQuuXRso+uITjzYf24xbZd3ySne21tfYv\n0n2Z8ZEk35nuS4IfG6nXVxbU6Zx0Q7n/xYLjLqVeAKwQwjQAS1JVpyZ5fZI/3luvXmvt+tbab7bW\nXpnkrUn+5cjubekmITsQOy/7VFXHpwsl8728t6cb9jzaM7ywd3w+CO6rHtekO+d31HcmeSjJ14ZU\neJHjnlhVZ89vqKo16SYM+/IBHHfeu5KsSzf7+rwXJfnN1tqG1tqX0g1zfuKC243jtUm61+LRVbWz\n976qTkj3JctOrfOp1tr/21p7Ubpe/x/Zx7GfVlXHjqz/o/n77Gd+vzHJU/ovFxb+DP2yZibdlzPn\njm7sz5H+liRfXfB4vtxae0dr7WXpTjn40X7Xp9M91/cvUqdbBtYJgBVEmAZgMaur6jFV9biqemZV\n/ct0w6tvT/KWxW5QVUdX1Tur6iX9bM7fkm6iqGtHin09yXf1xz1pP+rVkvznqnpRVT0z3SRYDyT5\n/X7/p/r1X6mq6epmrH7rgmN8I11I+t6qOrmqFut5TLoe3h/sh+0+uapene6c3F8dOV96f3y0r+fv\nV9W3V9Uz+sdxVLrJsw5I3+v7a0neUlXH9JuvS/L6/rU8J93EXwuD89eTfHtVPb6qTtrLJHP78lfp\nhr6/t6qeV1XPTjeJ22z6Huuq+kfVzYD+/P7+zks3mdm1D3vU/uEl+d2qekY/G/Y7052rPD+k/D8k\n+VdV9R/6Mk+pqu+vqv8x9EG01jalez1+uboZwp9UVc9N18t/UpL/0T+Ws6rq7dXN6P2EqnpBut7/\n+cfyvnTP7Yeq6nuqmxH9+VX1lqr6/qH1AmDlEKYBWMx3pOu9/IckH0/XI/0bSZ6zl2s/z6abiOnS\ndMNar0w3S/XrRsr8TLrhsDekm4l7qLkk/z5dkPl0unNRX95a25zsPDf3tel6r7+YbhKwnx09QF//\n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\nfUw+c2c3I/jtD+0ZqoeY20cn+J1b9gzgk9X16m/ZsZcbjjj96Mk8+bipnHHMVB7cPpd7ts7lnq0t\nd2/tlu/dNpe5lpyydiKPXT+Zx63rf9ZP5rHrJtOS3LllR+7eMpc7t8zlrq1zuWvLXO7bNpfjV0/k\ncf1tHrt+Mqeum8xj103kUUdN5IFtLfdu23Uf927t1ivJyWsncsrayZy8djKnrJvIY9ZO7hylsGVH\ncv+2uTywfS4PbG+5f1vL5tm5rJqoHDVVWTtZWTPZ/T5qqjJVXY/+9rlk646223KSrJ6o3Lqpsu3u\n7Vk1kaye7G4z/0XO/Bcm83+udq73G+b3zf9BGy23c38lq6qyZjKPuD98AAArwY65lge2t8y2lmNW\nTWTN5N7/55prLfds7f5/vXfrXNavmsiJR03kxDUTWb3IbbfPtdy0aUdueGA2NzzQ/b7j7lV59vZN\nOeOYqZxxzGQef/RU1k7tuu0D2+dy7d3b8+V7tufLd3c/N27akceun8wzTtg1GvXpJ6zK8Wsm0lrL\nZ+/cnj+94aFs+MZDueGB3f+h/9Qd2/L/feGBPPGYybzijLW54Iy1OefEVY+I/y9rX+e8VtVkkr9P\n8tIkNyW5OslrW2vXjpT5iSTPaq39eFVdmOQHWmuvqaqzk/xBknOTPC7JXyV5cmtt5zN83333HTYn\n3c7MzORXbz0xl1//0B7Dnee9pP/m5XA111q+cs9sPnbL1j0mLEu6wLtuqgt+92ydy/YDy92PeKsn\nui8XHq69HC5WT3TXOF89Wd3viWQuyexc12ZmW7JjLpltLS1dCF81kayarKyqPuz3owS27Wg7vyDY\nuqNb3zbXMtGXWz1RWTNRWTWZrJmoTE3sCvPzf692ezpb9tg2vzz65210/2QlUxN9Hfv7WDVRmUiy\nda6r35Yd6X+3bJntRjqsnuzKrZ6orJ7svtRYPVGZqO748zPlz99ft57F1/vlXett53Klq99UdV+G\nTU6kW56o7JjbdfrEtrlke//8zbZkVSVr+tdp4XO4o3U/s3MtO1rXLnf0T9BEKlW7RpXM/55tyZb+\n9ep+uudk+1zLUf0XQPO/2/YtOX792kxUZXt/asf2/lSP2bnuNpXuOZ/sH9vO572/ysB8nebarvrO\nPycT2f1LoV1fCM0vd8eZ/1xurWuP3WPujrtjrmu3E30bmOhf88mJbn2yumNMzD/vO5e7um2b6/4p\n6dpst7x9rmWqKqv698Wqvl2t3svzPjvXvdaj9znZfxk22bel2f41nS8/2x9n/ovHqb5drNrZTjLy\nunbvy/n1+edo9D5GH9eOnT+7bjPXWiZG6jb/fMz/n7Z9vl47n4duPf1rMlG1sy3t/Bl5jbr1vtyi\nr2d2Xn1ie8uuNjVyX1W7nu/552H+/Zwkmx7cnLXr1u18r83Nv+day9zoe3Dn/rZzfeH++ffg1ETt\n/PsxNfJ8LPybM/q+H7J91GJfcu7P9n3VY8l1XvD/4t6+jJ3/vdQ67u3v5R5/M0c+Bxbebm9Gn4/R\n/9/3rNtevmR+mPrv63ElyabNm7Nu3brdHsvCx5rs/lkwevtk/r008jej37bzfZ8umO16H+/+Hhx9\nH0/U6Ht/19/eubarzS92m/n/aeb/pu38+zTX/U2f/9s0/36Z6t/z2+cWfx9nwft4cmR9dvRUwZHP\nvNnW+jLd393Vk7uWk/lOiO7za9f/HF091kx0nQRr+s+uNf3/KVvnki2zLQ/1n/sPzXa/Z/vPu/mO\nj6Omus+9tZOVuSSbt7c8ODuXB2dbNs+2PLi9+71qIlm/qrJ+aiLrpirrV1XW9bfdtL3l/m1zuX9b\ny/19J8uooya7SYWPXTWRY1dXjl09kW07Wu7qO4Du6TuMFnPsqsqJR03kpKO6YH3jph256cEd++zo\nSpLHrpvI44+eym0P7dgjDO/N6UdPprXkpgeXfpv52/3hS0/MU48fNsfTcjruuOP2SP9LCdMvSPK2\n1to/7tffkiSttV8eKXNlX+bvqmoqyTeTPDrJRaNlR8vN3/ZwCtMAAAAceRYL00uZzfvUJDeOrN/U\nb1u0TGttNsl9SU5c4m0BAADgsOLSWAAAADDQUiYguznJ6SPrp/XbFitzUz/M+7h0E5Ht87aLdZcD\nAADASraUnumrk0xX1ZlVtTrJhUk2LCizIckb+uVXJvlo607G3pDkwqpaU1VnJplO8qnxVB0AAACW\nxz7DdH8O9JuTXJnkK0kua61dU1UXV9Ur+mKXJjmxqjYm+ensmnjsmiSXJbk2yV8k+cnRmbwPF1V1\nflVdV1Ubq+qi5a4PR4aqeldV3V5VXx7Z9qiq+khVzfS/T+i3V1X9176NfrGqnrN8NeeRqKpOr6qP\nVdW1VXVNVf1Uv12b5JCrqqOq6lNV9YW+Pf6nfvuZVXVV3+4+0HcCpP9S/wP99quq6ozlrD+PTFU1\n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\nJEnq6U+STNLwEVy8ugAAAABJRU5ErkJggg==\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"print('Distribution of Ratings per User is sparser')\n",
"print('Maximum number of rating per user being {maxm} and minimum being {minm}'.format(maxm = ratings_df['UserIDCounts'].max(), \n",
" minm = ratings_df['UserIDCounts'].min()))\n",
"print('--'*40)\n",
"fig = plt.figure(figsize = (15, 7.2))\n",
"g = sns.distplot(ratings_df['UserIDCounts'], bins = 50).set_title('Distribution of Ratings per User')\n",
"\n",
"del fig, g"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"colab_type": "code",
"id": "REAcgSkiCb92",
"outputId": "b403ca59-e5c4-43fa-ea43-b98d31d1cd76"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Taking a subset of dataset to make it less sparse/denser\n",
"Keeping users those who have given more than 49 number of ratings\n",
"--------------------------------------------------------------------------------\n",
"Number of rows after filtering: 125871\n"
]
}
],
"source": [
"print('Taking a subset of dataset to make it less sparse/denser')\n",
"print('Keeping users those who have given more than 49 number of ratings'); print('--'*40)\n",
"\n",
"ratings_df = ratings_df[ratings_df['UserIDCounts'] >= 50]\n",
"print('Number of rows after filtering: {}'.format(ratings_df.shape[0]))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 470
},
"colab_type": "code",
"id": "WQh_bINxKlBE",
"outputId": "837bf32d-9fa1-4291-fb96-6c55550d9db8"
},
"outputs": [
{
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15, 7.2))\n",
"g = sns.distplot(ratings_df['UserIDCounts'], bins = 50).set_title('Distribution of Ratings per User after filtering users with less than 50 ratings')\n",
"\n",
"del fig, g"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "vLrw4c3WC1r5",
"outputId": "f5f1c889-437b-4bd0-b1e5-96418ca0a543"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of product ids after filtering based on ratings given by users: 48190\n"
]
}
],
"source": [
"print('Number of product ids after filtering based on ratings given by users: {}'.format(ratings_df['ProductID'].nunique()))"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
},
"colab_type": "code",
"id": "-Sg81xk3FiQP",
"outputId": "41b22699-3f17-4c63-eb80-28768ca54f50"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Selecting only UserID, ProductID and 'Rating' column\n",
"--------------------------------------------------------------------------------\n"
]
}
],
"source": [
"print('Selecting only UserID, ProductID and \\'Rating\\' column'); print('--'*40)\n",
"ratings = ratings_df[['UserID', 'ProductID', 'Rating']]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"colab_type": "code",
"id": "skDtHkdBysGk",
"outputId": "1c3414ac-2c8a-48be-dafe-9f5101816ef2"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of unique USERS and PRODUCT IDs in the filtered ratings dataframe\n",
"--------------------------------------------------------------------------------\n",
"Number of unique USERS in filtered ratings dataframe = 1540\n",
"Number of unique PRODUCTS in filtered ratings dataframe = 48190\n"
]
}
],
"source": [
"# Number of unique user id and product id in the data\n",
"print('Number of unique USERS and PRODUCT IDs in the filtered ratings dataframe'); print('--'*40)\n",
"print('Number of unique USERS in filtered ratings dataframe = ', ratings['UserID'].nunique())\n",
"print('Number of unique PRODUCTS in filtered ratings dataframe = ', ratings['ProductID'].nunique())"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 510
},
"colab_type": "code",
"id": "dRWM7yQszdHD",
"outputId": "dc83f0a9-0cdf-4cab-fd7f-b883231a5f6d"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Top 10 users based on # of ratings given\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"text/plain": [
"UserID\n",
"A5JLAU2ARJ0BO 520\n",
"ADLVFFE4VBT8 501\n",
"A3OXHLG6DIBRW8 498\n",
"A6FIAB28IS79 431\n",
"A680RUE1FDO8B 406\n",
"A1ODOGXEYECQQ8 380\n",
"A36K2N527TXXJN 314\n",
"A2AY4YUOX2N1BQ 311\n",
"AWPODHOB4GFWL 308\n",
"A25C2M3QF9G7OQ 296\n",
"dtype: int64"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Bottom 10 users based on # of ratings given\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"text/plain": [
"UserID\n",
"A2RS66Y79Q8X0W 50\n",
"A2Y4H3PXB07WQI 50\n",
"A3VZH0PWLQ9BB1 50\n",
"A19N3S7CBSU6O7 50\n",
"A1IU4UAV9QIJAI 50\n",
"A319Y83RT0MRVR 50\n",
"A27H61OHW44XA7 50\n",
"A2JRDFIGWTX50J 50\n",
"A2RGA7UGAN3UL7 50\n",
"ACH055GTTIGC9 50\n",
"dtype: int64"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"# Top and bottom 10 users based on # of ratings given\n",
"print('Top 10 users based on # of ratings given'); print('--'*40)\n",
"most_rated = ratings.groupby('UserID').size().sort_values(ascending = False)[:10]\n",
"display(most_rated)\n",
"\n",
"print('\\nBottom 10 users based on # of ratings given'); print('--'*40)\n",
"least_rated = ratings.groupby('UserID').size().sort_values(ascending = True)[:10]\n",
"display(least_rated)\n",
"\n",
"del most_rated, least_rated"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "aICAigneEx04"
},
"source": [
"\n",
"### Recommenders\n",
"We will explore following methods of making recommendations:\n",
"* Popularity based recommendations\n",
"* Collaborative filtering (User-based and Item-based recommendations)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
},
"colab_type": "code",
"id": "lZUjXqeFHsQ2",
"outputId": "206ef6ac-4cf9-43d6-8042-06ad1e5abf08"
},
"outputs": [
{
"data": {
"text/plain": [
"(88109, 3)"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(37762, 3)"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"train_data, test_data = train_test_split(ratings, test_size = 0.30, random_state = random_state)\n",
"display(train_data.shape, test_data.shape)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
},
"colab_type": "code",
"id": "sCMsMQkPsV_h",
"outputId": "b474be7c-9dca-45e7-99ea-0be6f8803ee3"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of unique users in training dataframe 1540\n",
"Number of unique users in test dataframe: 1540\n",
"Number of products that aren't present in test dataframe: \n"
]
}
],
"source": [
"print('Number of unique users in training dataframe {}'.format(train_data['UserID'].nunique()))\n",
"print('Number of unique users in test dataframe: {}'.format(test_data['UserID'].nunique()))\n",
"print('Number of products that aren\\'t present in test dataframe: '.format(len(list(set(list(train_data['ProductID'].unique())) - set(list(test_data['ProductID'].unique()))))))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
},
"colab_type": "code",
"id": "ODCeYMViyPoh",
"outputId": "cbcb7305-d5dc-47fc-b8b0-001909ec87e1"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of unique products in training dataframe 38184\n",
"Number of unique products in test dataframe: 21323\n",
"Number of products that aren't present in test dataframe: 26867\n"
]
}
],
"source": [
"print('Number of unique products in training dataframe {}'.format(train_data['ProductID'].nunique()))\n",
"print('Number of unique products in test dataframe: {}'.format(test_data['ProductID'].nunique()))\n",
"print('Number of products that aren\\'t present in test dataframe: {}'.format(len(list(set(list(train_data['ProductID'].unique())) - set(list(test_data['ProductID'].unique()))))))"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "NRtXT-41Ff-o"
},
"source": [
"\n",
"#### **Popularity based recommendations**\n",
"* Create a class to make recommendation using popularity based method.\n",
"* Get top 5 recommendations for couple of users, recommendations are based on the Rating means for the Product IDs. However will later explore other methods as well.\n",
"* Comment on the findings."
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "jLJCwseiwas2"
},
"outputs": [],
"source": [
"#Class for Popularity based Recommender System\n",
"class popularity_recommender(): \n",
" def __init__(self):\n",
" self.trainSet = None\n",
" self.userId = None\n",
" self.productId = None\n",
" self.popularityRecommendations = None\n",
" self.topN = None\n",
" def create(self, trainSet, userId, productId, topN):\n",
" self.trainSet = trainSet\n",
" self.userId = userId\n",
" self.productId = productId\n",
" self.topN = topN\n",
"\n",
" byRating = self.trainSet.groupby('ProductID', sort = False, as_index = False)['Rating'].mean().sort_values(by = 'Rating', ascending = False)\n",
" byRating['RatingRank'] = byRating['Rating'].rank(ascending = False, method = 'first')\n",
"\n",
" byUsers = self.trainSet.groupby('ProductID', sort = False, as_index = False)['Rating'].count().sort_values(by = 'Rating', ascending = False)\n",
" byUsers.columns = ['ProductID', 'RatingCount']\n",
" \n",
" byRatingUsers = pd.merge(byRating, byUsers, on = 'ProductID', how = 'left')\n",
" byRatingUsers = byRatingUsers.sort_values(by = 'RatingRank', ascending = False)\n",
"\n",
" self.popularity_recommendations = byRating.head(self.topN)\n",
" return byRatingUsers\n",
"\n",
" def recommend(self, user_id): \n",
" user_recommendations = self.popularity_recommendations\n",
" \n",
" user_recommendations['UserID'] = user_id\n",
" \n",
" cols = user_recommendations.columns.tolist()\n",
" cols = cols[-1:] + cols[:-1]\n",
" user_recommendations = user_recommendations[cols]\n",
" try:\n",
" print('User has already rated products (from data in training set): {}'.format(self.trainSet.loc[(self.trainSet['UserID'] == user_id), 'ProductID'].nunique()))\n",
" print('Top 5 products from what\\'s already being rated: {}'.format(list(self.trainSet[(self.trainSet['UserID'] == user_id)].sort_values(by = 'Rating', ascending = False).head(5)['ProductID'])))\n",
" except:\n",
" print('There\\'s no data for the selected user in training set')\n",
" print('\\nTop 5 recommendations for the user based on popularity based method: {}'.format(list(user_recommendations['ProductID'])))\n",
" return list(user_recommendations['ProductID'])"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
},
"colab_type": "code",
"id": "RYd1BKrlM1eY",
"outputId": "9bd27a80-609d-4b36-9e96-ddebd15d9b94"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Get list of unique user and product ids in testset\n",
"--------------------------------------------------------------------------------\n"
]
}
],
"source": [
"# Get list of unique user and product ids in testset\n",
"print('Get list of unique user and product ids in testset'); print('--'*40)\n",
"test_userids = sorted(list(test_data['UserID'].unique()))\n",
"test_productids = sorted(list(test_data['ProductID'].unique()))"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 323
},
"colab_type": "code",
"id": "kBLGTrglMCax",
"outputId": "884a7d19-12a1-4555-9006-dd9ffd89894f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Popularity recommendation is based on the mean of Ratings received and not Rating counts, later we will explore other methods as well.\n",
"Get top - K ( K = 5) recommendations.\n",
"Since our goal is to recommend new products to each user based on his/her habits, we will recommend 5 new products.\n",
"--------------------------------------------------------------------------------\n",
"\n",
"Make recommendation for the user id selected from the testset = \"A11D1KHM7DVOQK\"\n",
"User has already rated products (from data in training set): 77\n",
"Top 5 products from what's already being rated: ['B0009H9PZU', 'B0006B486K', 'B00009W3DS', 'B0009E5YNA', 'B00005V54U']\n",
"\n",
"Top 5 recommendations for the user based on popularity based method: ['B0000645V0', 'B0011YR8KO', 'B00JE0Q95M', 'B004T0B8O4', 'B000VQU3N2']\n",
"\n",
"\n",
"Make recommendation for the user id selected from the testset = \"A149RNR5RH19YY\"\n",
"--------------------------------------------------------------------------------\n",
"User has already rated products (from data in training set): 97\n",
"Top 5 products from what's already being rated: ['B00000JBAM', 'B000WR0CKE', 'B000BTL0OA', 'B0015AM30Y', 'B0000DIET2']\n",
"\n",
"Top 5 recommendations for the user based on popularity based method: ['B0000645V0', 'B0011YR8KO', 'B00JE0Q95M', 'B004T0B8O4', 'B000VQU3N2']\n"
]
}
],
"source": [
"# Get top 5 recommendations\n",
"print('Popularity recommendation is based on the mean of Ratings received and not Rating counts, later we will explore other methods as well.')\n",
"print('Get top - K ( K = 5) recommendations.')\n",
"print('Since our goal is to recommend new products to each user based on his/her habits, we will recommend 5 new products.'); print('--'*40)\n",
"compare_dict = {}; result = {}\n",
"popularity = popularity_recommender()\n",
"byRatingUsers = popularity.create(train_data, 'UserID', 'ProductID', 5)\n",
"\n",
"print('\\nMake recommendation for the user id selected from the testset = \"A11D1KHM7DVOQK\"')\n",
"user_id = \"A11D1KHM7DVOQK\"\n",
"result[user_id] = popularity.recommend(user_id)\n",
"\n",
"print('\\n\\nMake recommendation for the user id selected from the testset = \"A149RNR5RH19YY\"'); print('--'*40)\n",
"user_id = \"A149RNR5RH19YY\"\n",
"result[user_id] = popularity.recommend(user_id)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
},
"colab_type": "code",
"id": "W46ph2KV-qwY",
"outputId": "138389fe-cd70-4452-a924-f9f5dc2953a0"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Store the recommendations in a dictionary\n",
"--------------------------------------------------------------------------------\n"
]
}
],
"source": [
"print('Store the recommendations in a dictionary'); print('--'*40)\n",
"compare_dict['PopularityRec'] = result"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 136
},
"colab_type": "code",
"id": "O4Fx3cAJ3B9K",
"outputId": "71142a22-342a-4097-94c3-1bd366c1160f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluating Popularity based Recommender\n",
"Creating a new dataframe with mean rating for each product in test dataframe and using our prediction dataframe i.e. byRatingUsers to calculate RMSE\n",
"--------------------------------------------------------------------------------\n",
"Shape of test mean dataframe: (21323, 3)\n",
"Shape of predicted (recommender) dataframe: (38184, 4)\n",
"--------------------------------------------------------------------------------\n",
"RMSE OF THE POPULARITY BASED RECOMMENDER: 3.0894\n"
]
}
],
"source": [
"print('Evaluating Popularity based Recommender')\n",
"print('Creating a new dataframe with mean rating for each product in test dataframe and using our prediction dataframe i.e. byRatingUsers to calculate RMSE'); print('--'*40)\n",
"test_means = test_data.groupby('ProductID', sort = False, as_index = False)['Rating'].mean().sort_values(by = 'Rating', ascending = False)\n",
"test_means = test_means.merge(byRatingUsers, on = 'ProductID', how = 'left', suffixes=('_act', '_pred')).drop(['RatingRank', 'RatingCount'], axis = 1).fillna(0)\n",
"print('Shape of test mean dataframe: {}'.format(test_means.shape))\n",
"print('Shape of predicted (recommender) dataframe: {}'.format(byRatingUsers.shape))\n",
"\n",
"RMSE_pop = sqrt(mean_squared_error(test_means['Rating_act'], test_means['Rating_pred']))\n",
"print('--' * 40)\n",
"print('RMSE OF THE POPULARITY BASED RECOMMENDER: {}'.format(round(RMSE_pop, 4)))"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "xU5FvPDG_Mpn",
"outputId": "c4f713cb-1392-49c5-ed79-c9e7a9d0a480"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Recommendations based on mean of Rating, which is the method used above\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"text/plain": [
"['B0000645V0', 'B0011YR8KO', 'B00JE0Q95M', 'B004T0B8O4', 'B000VQU3N2']"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Recommendations based on count of Rating\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"text/plain": [
"['B0088CJT4U', 'B003ES5ZUU', 'B000N99BBC', 'B007WTAJTO', 'B00829TIEK']"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Recommendations based on a mix of mean and count of Rating\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"text/plain": [
"['B00IVFDZBC', 'B002NEGTTW', 'B000F7QRTG', 'B001ENW61I', 'B000FQ2JLW']"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"print('Recommendations based on mean of Rating, which is the method used above'); print('--'*40)\n",
"display(byRatingUsers.sort_values(by = 'RatingRank', ascending = True).head(5)['ProductID'].tolist())\n",
"\n",
"print('\\nRecommendations based on count of Rating'); print('--'*40)\n",
"display(byRatingUsers.sort_values(by = 'RatingCount', ascending = False).head(5)['ProductID'].tolist())\n",
"\n",
"print('\\nRecommendations based on a mix of mean and count of Rating'); print('--'*40)\n",
"display(byRatingUsers.sort_values(by = ['Rating', 'RatingCount'], ascending = False).head(5)['ProductID'].tolist())"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 763
},
"colab_type": "code",
"id": "Ee06Eme6-4LK",
"outputId": "58e533e5-4d59-46f5-ebb7-40a1676d945e"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Plot of average ratings versus number of ratings\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"print('Plot of average ratings versus number of ratings'); print('--'*40)\n",
"g = sns.jointplot(x = 'Rating', y = 'RatingCount', data = byRatingUsers, alpha = 0.4, height = 10)\n",
"\n",
"del g, byRatingUsers, popularity_recommender, user_id"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "FW_HpdwTDPD0"
},
"source": [
"\n",
"##### Observation 4 - Popularity Based Recommendation\n",
"* For popularity recommendation system, we recommended products based on *mean of Ratings* given by users. We saw that the top 5 products which we recommended to users are those where only 1 user from the training set has rated.\n",
"* Then we also explored other methods for popularity recommendations. Those were based on:\n",
" * *Count of Ratings* received for the product\n",
" * *Hybrid method* for popularity recommendation where in we used both mean and count of rating to decide on the product recommended\n",
"* For all of the above cases (recommendations based on mean, count, and mean and count), popularity based method lacks personalization i.e. same recommendations for all users. However, using Popularity based recommendation system it would easier to recommend products to a new user w/o having knowledge about who the users are or what their preferences are and recommending them the products that are in-trend.\n",
"* **RMSE of the popularity based recommendation method using mean of rating is 3.0894.**"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "3inD5WG-vKQ8"
},
"source": [
"\n",
"#### **Collaborative Filtering**\n",
"Objective is to build a recommendation system to recommend products to customers based on their previous ratings for other products i.e. item-based collaborative filtering.\n",
"\n",
"**\"You tend to like that item because you've liked those items.\"**\n",
"\n",
"whereas as we know that in user-based it's \"You may like it because your friends liked it\".\n",
"\n",
" * Model-based Collaborative Filtering: Singular Value Decomposition and evaluate k-NN based algos.\n",
" * Use the filtered ratings dataframe and scipy based SVD to evaluate Item-based collaborative filtering method for suggesting products based to users based on what he has liked in past.\n",
" * Also explore user based collaborative filtering.\n",
"\n",
"* Comment on the findings.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "5R53smxEhOaM"
},
"source": [
"\n",
"##### **Model based Collaborative Filtering: SVD**"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 318
},
"colab_type": "code",
"id": "77OJwT4u5PIL",
"outputId": "17e4b821-a0d5-43dd-8463-c03ecb3f3ee3"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Matrix with one row per 'Product' and one column per 'User' for Item-based collaborative filtering\n",
"--------------------------------------------------------------------------------\n"
]
},
{
"data": {
"text/html": [
"
"
],
"text/plain": [
" UserID ProductID ActualRating EstRating \\\n",
"4751 A3OXHLG6DIBRW8 B000TKHBDK 5.00 5.00 \n",
"8928 A18U49406IPPIJ B009QUDLC4 5.00 5.00 \n",
"4367 A31N0XY2UTB25C B00BOHNYTW 5.00 5.00 \n",
"6663 A2KOV8XWZOZ0FQ B001TH7T2U 5.00 5.00 \n",
"20132 AEJAGHLC675A7 B001TH7GUU 5.00 5.00 \n",
"\n",
" Details Error \n",
"4751 {'actual_k': 2, 'was_impossible': False} 0.00 \n",
"8928 {'actual_k': 1, 'was_impossible': False} 0.00 \n",
"4367 {'actual_k': 3, 'was_impossible': False} 0.00 \n",
"6663 {'actual_k': 1, 'was_impossible': False} 0.00 \n",
"20132 {'actual_k': 3, 'was_impossible': False} 0.00 "
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"predictions, algo = dump.load('./dump_KNNBaseline_User')\n",
"df_user = pd.DataFrame(predictions, columns = ['UserID', 'ProductID', 'ActualRating', 'EstRating', 'Details'])\n",
"df_user['Error'] = abs(df_user['EstRating'] - df_user['ActualRating'])\n",
"df_user.sort_values('Error', inplace = True, ascending = True)\n",
"\n",
"display(df_user.head())"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "873C9pVF-vs3",
"outputId": "f92c718d-e9da-4e6c-d632-00de4ce29a69"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A check on what has the user liked in past (based on data available in training set, if there is) and making recommendations\n",
"-------------------------------------------------------------------------------- \n",
"\n",
"User \"A11D1KHM7DVOQK\" has already rated products (from data in training set): 76\n",
"Top 5 products from what's already being rated: ['B00005V54U', 'B0001LD00A', 'B00061IYFQ', 'B0002I5RHG', 'B0009FUFPG']\n",
"Top 5 recommendations for the user are: ['B00004T8R2', 'B0009H9PZU', 'B00009L1RI', 'B00008VF63', 'B000069106']\n",
"\n",
"\n",
"User \"A149RNR5RH19YY\" has already rated products (from data in training set): 95\n",
"Top 5 products from what's already being rated: ['B000BTL0OA', 'B00003006E', 'B001OOZ1X2', 'B000062TTF', 'B00385XTWA']\n",
"Top 5 recommendations for the user are: ['B000VE7S9Q', 'B000089GN3', 'B00008I9K8', 'B00006HYKM', 'B000MK4GGM']\n"
]
}
],
"source": [
"print('A check on what has the user liked in past (based on data available in training set, if there is) and making recommendations');\n",
"print('--'*40, '\\n')\n",
"result = {}\n",
"\n",
"result['A11D1KHM7DVOQK'] = query_user('A11D1KHM7DVOQK')\n",
"print('\\n')\n",
"result['A149RNR5RH19YY'] = query_user('A149RNR5RH19YY')"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 697
},
"colab_type": "code",
"id": "-Q1WSrSePpbO",
"outputId": "e2704c45-b39f-4892-8e0d-7a441509db2e"
},
"outputs": [
{
"data": {
"text/plain": [
"{'PopularityRec': {'A11D1KHM7DVOQK': ['B0000645V0',\n",
" 'B0011YR8KO',\n",
" 'B00JE0Q95M',\n",
" 'B004T0B8O4',\n",
" 'B000VQU3N2'],\n",
" 'A149RNR5RH19YY': ['B0000645V0',\n",
" 'B0011YR8KO',\n",
" 'B00JE0Q95M',\n",
" 'B004T0B8O4',\n",
" 'B000VQU3N2']},\n",
" 'SVD Item-based Collaborative Filtering': {'A11D1KHM7DVOQK': ['B007WTAJTO',\n",
" 'B005CT56F8',\n",
" 'B00829THK0',\n",
" 'B003ZSHNGS',\n",
" 'B00825BZUY'],\n",
" 'A149RNR5RH19YY': ['B00829THK0',\n",
" 'B007WTAJTO',\n",
" 'B00829TIEK',\n",
" 'B002R5AM7C',\n",
" 'B003ES5ZUU']},\n",
" 'k-NN Item-based Collaborative Filtering': {'A11D1KHM7DVOQK': ['B00008ZPNR',\n",
" 'B00022TN9A',\n",
" 'B0001FV35U',\n",
" 'B0007Y79AI',\n",
" 'B0000E1717'],\n",
" 'A149RNR5RH19YY': ['B00003006E',\n",
" 'B001F51G16',\n",
" 'B000AMLXHW',\n",
" 'B00001P4ZH',\n",
" 'B000089GN3']},\n",
" 'k-NN User-based Collaborative Filtering': {'A11D1KHM7DVOQK': ['B00004T8R2',\n",
" 'B0009H9PZU',\n",
" 'B00009L1RI',\n",
" 'B00008VF63',\n",
" 'B000069106'],\n",
" 'A149RNR5RH19YY': ['B000VE7S9Q',\n",
" 'B000089GN3',\n",
" 'B00008I9K8',\n",
" 'B00006HYKM',\n",
" 'B000MK4GGM']}}"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"compare_dict['k-NN User-based Collaborative Filtering'] = result\n",
"display(compare_dict)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "QOhBN2VbECvY"
},
"source": [
"\n",
"###### Observation 8 - User based Collaborative Filtering (k-NN)\n",
"* Using k-NN inspired algos for user based collaborative filtering and 2-Fold cross validation, we get a RMSE score of ~0.9826. "
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "3o9cZydXCdv0"
},
"source": [
"\n",
"### Conclusion\n",
"* Non-personalized based recommendation system (such as popularity) is generated by averaging the recommendations for all the users. Here we recommended top 5 products to the users. Also saw how we can make use of count to suggest popular products to the users and hybrid popularity based recommender based on a combination of mean and count. However in popularity based recommendation, all users receive same recommendations. RMSE of popularity recommendation method based on mean of ratings was 3.0894.\n",
"\n",
"* Collaborative-based recommendations are personalized since the rating \"prediction\" differs depending on the target user and it is based on\n",
" * User-to-user: ratings for a given product expressed by users that are similar to the active user.\n",
" * Item-to-item: weighted average of the ratings of the active users for the similar items.\n",
"\n",
"* Collaborative based filtering method requires a minimal knowledge engineering efforts when compared to methods such as content-based recsys. This method is based on user history, but what if the user is new (where there is no user history)? It's one of the limitations of the method known as cold-start problem.\n",
"\n",
"* Items with lots of history gets recommended a lot, while those without never make it into the recommendation engine.\n",
"\n",
"* Additionally, collaborative based filtering methods face scalability issues particularly in our case where the number of users (4,201,696) and items (476,002) were high (sparse data), especially when recommendations need to be generated in real-time online. To overcome this, we filtered users who have rated at least 50 products, this left about 1,540 number of users and 48,190 products in the dataframe and these were further reduced to select only those users with > 100 ratings to avoid memory issues while using k-NN inspired algorithms.\n",
"\n",
"* Since our goal was to build a recsys to recommend products to customers based on their previous ratings for other products, we built an item-based collaborative filtering recommendation system. Used two model-based approaches to do that: SVD and k-NN inspired algos.\n",
"\n",
"* We saw that SVD had a RMSE score of 0.0033. We also compared various k-NN based algorithms using grid search method and found that KNN Baseline algo gave the lowest RMSE, we then used 2-fold cross validation technique which gave a RMSE of 0.9655.\n",
"\n",
"* Also explored kNN Baseline algo for user-based collaborative filtering, RMSE (0.9826) was slightly higher than item-based CF."
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"machine_shape": "hm",
"name": "06_Recommendation System_Pratik.ipynb",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 1
}