From a06d353594bd4020d20638bba21db342f671a9be Mon Sep 17 00:00:00 2001
From: Sreeja Deb <52777362+Sreeja-Deb@users.noreply.github.com>
Date: Thu, 28 Apr 2022 15:03:19 +0530
Subject: [PATCH] Adding data prep, popularity/content/collaborative algorithms
---
Notebooks/Recommendation Engine/1. Data Preparation.ipynb | 1 +
.../2.a. Modelling- Content or Item-Item Similarity.ipynb | 1 +
.../2.b. Modeling- Collaborative or User-ItemSimilarity.ipynb | 1 +
.../2.c. Modelling- ALS (Collaborative).ipynb | 1 +
.../Recommendation Engine/2.d. Modelling- SAR (Content).ipynb | 1 +
5 files changed, 5 insertions(+)
create mode 100644 Notebooks/Recommendation Engine/1. Data Preparation.ipynb
create mode 100644 Notebooks/Recommendation Engine/2.a. Modelling- Content or Item-Item Similarity.ipynb
create mode 100644 Notebooks/Recommendation Engine/2.b. Modeling- Collaborative or User-ItemSimilarity.ipynb
create mode 100644 Notebooks/Recommendation Engine/2.c. Modelling- ALS (Collaborative).ipynb
create mode 100644 Notebooks/Recommendation Engine/2.d. Modelling- SAR (Content).ipynb
diff --git a/Notebooks/Recommendation Engine/1. Data Preparation.ipynb b/Notebooks/Recommendation Engine/1. Data Preparation.ipynb
new file mode 100644
index 0000000..0533008
--- /dev/null
+++ b/Notebooks/Recommendation Engine/1. Data Preparation.ipynb
@@ -0,0 +1 @@
+{"cells":[{"cell_type":"code","source":["%pip install recommenders\n%pip install datetime"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"502dbd28-9d21-4fc2-8d15-26676ead5baa"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"
Python interpreter will be restarted.\nCollecting recommenders\n Downloading recommenders-1.1.0-py3-none-manylinux1_x86_64.whl (335 kB)\nCollecting memory-profiler<1,>=0.54.0\n Downloading memory_profiler-0.60.0.tar.gz (38 kB)\nCollecting cornac<2,>=1.1.2\n Downloading cornac-1.14.2-cp38-cp38-manylinux1_x86_64.whl (14.4 MB)\nRequirement already satisfied: transformers<5,>=2.5.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.15.0)\nRequirement already satisfied: tqdm<5,>=4.31.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.59.0)\nRequirement already satisfied: seaborn<1,>=0.8.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.11.1)\nRequirement already satisfied: jinja2<3.1,>=2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.11.2)\nCollecting category-encoders<2,>=1.3.0\n Downloading category_encoders-1.3.0-py2.py3-none-any.whl (61 kB)\nRequirement already satisfied: pyyaml<6,>=5.4.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (5.4.1)\nRequirement already satisfied: pandas<2,>1.0.3 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.1.5)\nCollecting bottleneck<2,>=1.2.1\n Downloading Bottleneck-1.3.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl (331 kB)\nRequirement already satisfied: requests<3,>=2.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.25.1)\nRequirement already satisfied: matplotlib<4,>=2.2.2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.4.2)\nRequirement already satisfied: nltk<4,>=3.4 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.6.1)\nRequirement already satisfied: scipy<2,>=1.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.5.2)\nCollecting scikit-surprise>=1.0.6\n Downloading scikit-surprise-1.1.1.tar.gz (11.8 MB)\nRequirement already satisfied: lightgbm>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.2.1)\nCollecting retrying>=1.3.3\n Downloading retrying-1.3.3.tar.gz (10 kB)\nRequirement already satisfied: numba<1,>=0.38.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.53.1)\nCollecting lightfm<2,>=1.15\n Downloading lightfm-1.16.tar.gz (310 kB)\nCollecting pandera[strategies]>=0.6.5\n Downloading pandera-0.10.1-py3-none-any.whl (197 kB)\nRequirement already satisfied: numpy>=1.19 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.19.5)\nRequirement already satisfied: scikit-learn<1.0.3,>=0.22.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.22.2.post1)\nRequirement already satisfied: statsmodels>=0.6.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.11.1)\nRequirement already satisfied: patsy>=0.4.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.5.1)\nCollecting powerlaw\n Downloading powerlaw-1.5-py3-none-any.whl (24 kB)\nRequirement already satisfied: MarkupSafe>=0.23 in /databricks/python3/lib/python3.8/site-packages (from jinja2<3.1,>=2->recommenders) (2.0.1)\nRequirement already satisfied: wheel in /databricks/python3/lib/python3.8/site-packages (from lightgbm>=2.2.1->recommenders) (0.36.2)\nRequirement already satisfied: kiwisolver>=1.0.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (1.3.1)\nRequirement already satisfied: cycler>=0.10 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (0.10.0)\nRequirement already satisfied: pillow>=6.2.0 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (8.2.0)\nRequirement already satisfied: pyparsing>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.4.7)\nRequirement already satisfied: python-dateutil>=2.7 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.8.1)\nRequirement already satisfied: six in /databricks/python3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib<4,>=2.2.2->recommenders) (1.15.0)\nRequirement already satisfied: psutil in /databricks/python3/lib/python3.8/site-packages (from memory-profiler<1,>=0.54.0->recommenders) (5.8.0)\nRequirement already satisfied: regex in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (2021.4.4)\nRequirement already satisfied: click in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (7.1.2)\nRequirement already satisfied: joblib in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (0.14.1)\nRequirement already satisfied: llvmlite<0.37,>=0.36.0rc1 in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (0.36.0)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (49.6.0)\nRequirement already satisfied: pytz>=2017.2 in /databricks/python3/lib/python3.8/site-packages (from pandas<2,>1.0.3->recommenders) (2020.5)\nCollecting typing-inspect>=0.6.0\n Downloading typing_inspect-0.7.1-py3-none-any.whl (8.4 kB)\nRequirement already satisfied: wrapt in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.12.1)\nCollecting pandas<2,>1.0.3\n Downloading pandas-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB)\nRequirement already satisfied: pyarrow in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (3.0.0)\nRequirement already satisfied: packaging>=20.0 in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (21.3)\nRequirement already satisfied: pydantic in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.8.2)\nCollecting hypothesis>=5.41.1\n Downloading hypothesis-6.41.0-py3-none-any.whl (380 kB)\nRequirement already satisfied: sortedcontainers<3.0.0,>=2.1.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (2.4.0)\nRequirement already satisfied: attrs>=19.2.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (20.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2020.12.5)\nRequirement already satisfied: chardet<5,>=3.0.2 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (4.0.0)\nRequirement already satisfied: urllib3<1.27,>=1.21.1 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (1.25.11)\nRequirement already satisfied: idna<3,>=2.5 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2.10)\nRequirement already satisfied: sacremoses in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.0.46)\nRequirement already satisfied: filelock in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (3.0.12)\nRequirement already satisfied: tokenizers<0.11,>=0.10.1 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.10.3)\nRequirement already satisfied: huggingface-hub<1.0,>=0.1.0 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.1.2)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /databricks/python3/lib/python3.8/site-packages (from huggingface-hub<1.0,>=0.1.0->transformers<5,>=2.5.0->recommenders) (4.1.1)\nCollecting mypy-extensions>=0.3.0\n Downloading mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)\nCollecting mpmath\n Downloading mpmath-1.2.1-py3-none-any.whl (532 kB)\nBuilding wheels for collected packages: lightfm, memory-profiler, retrying, scikit-surprise\n Building wheel for lightfm (setup.py): started\n Building wheel for lightfm (setup.py): finished with status 'done'\n Created wheel for lightfm: filename=lightfm-1.16-cp38-cp38-linux_x86_64.whl size=916377 sha256=0a9e0d25a534e383e7eccbcfb0cef94a9cbbc0c8263e8304392e28e0b95687bb\n Stored in directory: /root/.cache/pip/wheels/ec/bb/51/9c487d021c1373b691d13cadca0b65b6852627b1f3f43550fa\n Building wheel for memory-profiler (setup.py): started\n Building wheel for memory-profiler (setup.py): finished with status 'done'\n Created wheel for memory-profiler: filename=memory_profiler-0.60.0-py3-none-any.whl size=31276 sha256=90995f86f807bfec943fed686c2e824dbc3b731849011ee2621f740f8c977f6d\n Stored in directory: /root/.cache/pip/wheels/01/ca/8b/b518dd2aef69635ad6fcab87069c9c52f355a2e9c5d4c02da9\n Building wheel for retrying (setup.py): started\n Building wheel for retrying (setup.py): finished with status 'done'\n Created wheel for retrying: filename=retrying-1.3.3-py3-none-any.whl size=11429 sha256=7bf6f755f79979da7b4bafbe3533ac56d34c46db8e756f90d84e68e6086a5e5d\n Stored in directory: /root/.cache/pip/wheels/c4/a7/48/0a434133f6d56e878ca511c0e6c38326907c0792f67b476e56\n Building wheel for scikit-surprise (setup.py): started\n Building wheel for scikit-surprise (setup.py): finished with status 'done'\n Created wheel for scikit-surprise: filename=scikit_surprise-1.1.1-cp38-cp38-linux_x86_64.whl size=2285696 sha256=b64c3bb0ac43213d79801461e5451b160e692999159e6c9d4c4a50805137db68\n Stored in directory: /root/.cache/pip/wheels/20/91/57/2965d4cff1b8ac7ed1b6fa25741882af3974b54a31759e10b6\nSuccessfully built lightfm memory-profiler retrying scikit-surprise\nInstalling collected packages: mypy-extensions, typing-inspect, pandas, mpmath, powerlaw, pandera, hypothesis, scikit-surprise, retrying, memory-profiler, lightfm, cornac, category-encoders, bottleneck, recommenders\n Attempting uninstall: pandas\n Found existing installation: pandas 1.1.5\n Not uninstalling pandas at /databricks/python3/lib/python3.8/site-packages, outside environment /local_disk0/.ephemeral_nfs/envs/pythonEnv-408f02fb-9066-49a9-af35-cfe09cb1dade\n Can't uninstall 'pandas'. No files were found to uninstall.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\npandas-profiling 3.1.0 requires joblib~=1.0.1, but you have joblib 0.14.1 which is incompatible.\nazureml-training-tabular 1.40.0 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nazureml-train-automl-runtime 1.40.0.post1 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nazureml-automl-runtime 1.40.0 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nSuccessfully installed bottleneck-1.3.4 category-encoders-1.3.0 cornac-1.14.2 hypothesis-6.41.0 lightfm-1.16 memory-profiler-0.60.0 mpmath-1.2.1 mypy-extensions-0.4.3 pandas-1.4.2 pandera-0.10.1 powerlaw-1.5 recommenders-1.1.0 retrying-1.3.3 scikit-surprise-1.1.1 typing-inspect-0.7.1\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nCollecting datetime\n Downloading DateTime-4.4-py2.py3-none-any.whl (51 kB)\nCollecting zope.interface\n Downloading zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl (259 kB)\nRequirement already satisfied: pytz in /databricks/python3/lib/python3.8/site-packages (from datetime) (2020.5)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from zope.interface->datetime) (49.6.0)\nInstalling collected packages: zope.interface, datetime\nSuccessfully installed datetime-4.4 zope.interface-5.4.0\nPython interpreter will be restarted.\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nPython interpreter will be restarted.\nCollecting recommenders\n Downloading recommenders-1.1.0-py3-none-manylinux1_x86_64.whl (335 kB)\nCollecting memory-profiler<1,>=0.54.0\n Downloading memory_profiler-0.60.0.tar.gz (38 kB)\nCollecting cornac<2,>=1.1.2\n Downloading cornac-1.14.2-cp38-cp38-manylinux1_x86_64.whl (14.4 MB)\nRequirement already satisfied: transformers<5,>=2.5.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.15.0)\nRequirement already satisfied: tqdm<5,>=4.31.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.59.0)\nRequirement already satisfied: seaborn<1,>=0.8.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.11.1)\nRequirement already satisfied: jinja2<3.1,>=2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.11.2)\nCollecting category-encoders<2,>=1.3.0\n Downloading category_encoders-1.3.0-py2.py3-none-any.whl (61 kB)\nRequirement already satisfied: pyyaml<6,>=5.4.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (5.4.1)\nRequirement already satisfied: pandas<2,>1.0.3 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.1.5)\nCollecting bottleneck<2,>=1.2.1\n Downloading Bottleneck-1.3.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl (331 kB)\nRequirement already satisfied: requests<3,>=2.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.25.1)\nRequirement already satisfied: matplotlib<4,>=2.2.2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.4.2)\nRequirement already satisfied: nltk<4,>=3.4 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.6.1)\nRequirement already satisfied: scipy<2,>=1.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.5.2)\nCollecting scikit-surprise>=1.0.6\n Downloading scikit-surprise-1.1.1.tar.gz (11.8 MB)\nRequirement already satisfied: lightgbm>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.2.1)\nCollecting retrying>=1.3.3\n Downloading retrying-1.3.3.tar.gz (10 kB)\nRequirement already satisfied: numba<1,>=0.38.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.53.1)\nCollecting lightfm<2,>=1.15\n Downloading lightfm-1.16.tar.gz (310 kB)\nCollecting pandera[strategies]>=0.6.5\n Downloading pandera-0.10.1-py3-none-any.whl (197 kB)\nRequirement already satisfied: numpy>=1.19 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.19.5)\nRequirement already satisfied: scikit-learn<1.0.3,>=0.22.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.22.2.post1)\nRequirement already satisfied: statsmodels>=0.6.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.11.1)\nRequirement already satisfied: patsy>=0.4.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.5.1)\nCollecting powerlaw\n Downloading powerlaw-1.5-py3-none-any.whl (24 kB)\nRequirement already satisfied: MarkupSafe>=0.23 in /databricks/python3/lib/python3.8/site-packages (from jinja2<3.1,>=2->recommenders) (2.0.1)\nRequirement already satisfied: wheel in /databricks/python3/lib/python3.8/site-packages (from lightgbm>=2.2.1->recommenders) (0.36.2)\nRequirement already satisfied: kiwisolver>=1.0.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (1.3.1)\nRequirement already satisfied: cycler>=0.10 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (0.10.0)\nRequirement already satisfied: pillow>=6.2.0 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (8.2.0)\nRequirement already satisfied: pyparsing>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.4.7)\nRequirement already satisfied: python-dateutil>=2.7 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.8.1)\nRequirement already satisfied: six in /databricks/python3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib<4,>=2.2.2->recommenders) (1.15.0)\nRequirement already satisfied: psutil in /databricks/python3/lib/python3.8/site-packages (from memory-profiler<1,>=0.54.0->recommenders) (5.8.0)\nRequirement already satisfied: regex in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (2021.4.4)\nRequirement already satisfied: click in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (7.1.2)\nRequirement already satisfied: joblib in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (0.14.1)\nRequirement already satisfied: llvmlite<0.37,>=0.36.0rc1 in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (0.36.0)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (49.6.0)\nRequirement already satisfied: pytz>=2017.2 in /databricks/python3/lib/python3.8/site-packages (from pandas<2,>1.0.3->recommenders) (2020.5)\nCollecting typing-inspect>=0.6.0\n Downloading typing_inspect-0.7.1-py3-none-any.whl (8.4 kB)\nRequirement already satisfied: wrapt in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.12.1)\nCollecting pandas<2,>1.0.3\n Downloading pandas-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB)\nRequirement already satisfied: pyarrow in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (3.0.0)\nRequirement already satisfied: packaging>=20.0 in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (21.3)\nRequirement already satisfied: pydantic in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.8.2)\nCollecting hypothesis>=5.41.1\n Downloading hypothesis-6.41.0-py3-none-any.whl (380 kB)\nRequirement already satisfied: sortedcontainers<3.0.0,>=2.1.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (2.4.0)\nRequirement already satisfied: attrs>=19.2.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (20.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2020.12.5)\nRequirement already satisfied: chardet<5,>=3.0.2 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (4.0.0)\nRequirement already satisfied: urllib3<1.27,>=1.21.1 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (1.25.11)\nRequirement already satisfied: idna<3,>=2.5 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2.10)\nRequirement already satisfied: sacremoses in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.0.46)\nRequirement already satisfied: filelock in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (3.0.12)\nRequirement already satisfied: tokenizers<0.11,>=0.10.1 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.10.3)\nRequirement already satisfied: huggingface-hub<1.0,>=0.1.0 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.1.2)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /databricks/python3/lib/python3.8/site-packages (from huggingface-hub<1.0,>=0.1.0->transformers<5,>=2.5.0->recommenders) (4.1.1)\nCollecting mypy-extensions>=0.3.0\n Downloading mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)\nCollecting mpmath\n Downloading mpmath-1.2.1-py3-none-any.whl (532 kB)\nBuilding wheels for collected packages: lightfm, memory-profiler, retrying, scikit-surprise\n Building wheel for lightfm (setup.py): started\n Building wheel for lightfm (setup.py): finished with status 'done'\n Created wheel for lightfm: filename=lightfm-1.16-cp38-cp38-linux_x86_64.whl size=916377 sha256=0a9e0d25a534e383e7eccbcfb0cef94a9cbbc0c8263e8304392e28e0b95687bb\n Stored in directory: /root/.cache/pip/wheels/ec/bb/51/9c487d021c1373b691d13cadca0b65b6852627b1f3f43550fa\n Building wheel for memory-profiler (setup.py): started\n Building wheel for memory-profiler (setup.py): finished with status 'done'\n Created wheel for memory-profiler: filename=memory_profiler-0.60.0-py3-none-any.whl size=31276 sha256=90995f86f807bfec943fed686c2e824dbc3b731849011ee2621f740f8c977f6d\n Stored in directory: /root/.cache/pip/wheels/01/ca/8b/b518dd2aef69635ad6fcab87069c9c52f355a2e9c5d4c02da9\n Building wheel for retrying (setup.py): started\n Building wheel for retrying (setup.py): finished with status 'done'\n Created wheel for retrying: filename=retrying-1.3.3-py3-none-any.whl size=11429 sha256=7bf6f755f79979da7b4bafbe3533ac56d34c46db8e756f90d84e68e6086a5e5d\n Stored in directory: /root/.cache/pip/wheels/c4/a7/48/0a434133f6d56e878ca511c0e6c38326907c0792f67b476e56\n Building wheel for scikit-surprise (setup.py): started\n Building wheel for scikit-surprise (setup.py): finished with status 'done'\n Created wheel for scikit-surprise: filename=scikit_surprise-1.1.1-cp38-cp38-linux_x86_64.whl size=2285696 sha256=b64c3bb0ac43213d79801461e5451b160e692999159e6c9d4c4a50805137db68\n Stored in directory: /root/.cache/pip/wheels/20/91/57/2965d4cff1b8ac7ed1b6fa25741882af3974b54a31759e10b6\nSuccessfully built lightfm memory-profiler retrying scikit-surprise\nInstalling collected packages: mypy-extensions, typing-inspect, pandas, mpmath, powerlaw, pandera, hypothesis, scikit-surprise, retrying, memory-profiler, lightfm, cornac, category-encoders, bottleneck, recommenders\n Attempting uninstall: pandas\n Found existing installation: pandas 1.1.5\n Not uninstalling pandas at /databricks/python3/lib/python3.8/site-packages, outside environment /local_disk0/.ephemeral_nfs/envs/pythonEnv-408f02fb-9066-49a9-af35-cfe09cb1dade\n Can't uninstall 'pandas'. No files were found to uninstall.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\npandas-profiling 3.1.0 requires joblib~=1.0.1, but you have joblib 0.14.1 which is incompatible.\nazureml-training-tabular 1.40.0 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nazureml-train-automl-runtime 1.40.0.post1 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nazureml-automl-runtime 1.40.0 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nSuccessfully installed bottleneck-1.3.4 category-encoders-1.3.0 cornac-1.14.2 hypothesis-6.41.0 lightfm-1.16 memory-profiler-0.60.0 mpmath-1.2.1 mypy-extensions-0.4.3 pandas-1.4.2 pandera-0.10.1 powerlaw-1.5 recommenders-1.1.0 retrying-1.3.3 scikit-surprise-1.1.1 typing-inspect-0.7.1\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nCollecting datetime\n Downloading DateTime-4.4-py2.py3-none-any.whl (51 kB)\nCollecting zope.interface\n Downloading zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl (259 kB)\nRequirement already satisfied: pytz in /databricks/python3/lib/python3.8/site-packages (from datetime) (2020.5)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from zope.interface->datetime) (49.6.0)\nInstalling collected packages: zope.interface, datetime\nSuccessfully installed datetime-4.4 zope.interface-5.4.0\nPython interpreter will be restarted.\n
"]}}],"execution_count":0},{"cell_type":"code","source":["# set the environment path to find Recommenders\nimport sys\n\nimport pyspark\nimport pandas as pd\nimport numpy as np\nfrom datetime import datetime, timedelta\n\nfrom recommenders.utils.spark_utils import start_or_get_spark\nfrom recommenders.datasets.download_utils import maybe_download\nfrom recommenders.datasets.python_splitters import (\n python_random_split, \n python_chrono_split, \n python_stratified_split\n)\nfrom recommenders.datasets.spark_splitters import spark_random_split\n\nprint(\"System version: {}\".format(sys.version))\nprint(\"Pyspark version: {}\".format(pyspark.__version__))"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"eb8b1ea5-44ec-4979-bcf4-ad92a271d2c3"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"System version: 3.8.10 (default, Nov 26 2021, 20:14:08) \n[GCC 9.3.0]\nPyspark version: 3.2.1\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nSystem version: 3.8.10 (default, Nov 26 2021, 20:14:08) \n[GCC 9.3.0]\nPyspark version: 3.2.1\n
"]}}],"execution_count":0},{"cell_type":"code","source":["%scala\n//\nval filepath1= \"abfss://.../mldata/MoviesDataRecommendation/ratings.csv\"\nvar df1=spark.read.format(\"csv\").option(\"header\", \"true\").option(\"delimiter\", \",\").load(filepath1)\ndf1.createOrReplaceTempView(\"ratings\")\n"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"94730136-16fa-48b8-a6ee-e9792d24004e"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[{"name":"df1","typeStr":"org.apache.spark.sql.DataFrame","schema":{"type":"struct","fields":[{"name":"userId","type":"string","nullable":true,"metadata":{}},{"name":"movieId","type":"string","nullable":true,"metadata":{}},{"name":"rating","type":"string","nullable":true,"metadata":{}},{"name":"timestamp","type":"string","nullable":true,"metadata":{}}]},"tableIdentifier":null}],"data":"filepath1: String = abfss://adlsstore@psinsightsadlsdev.dfs.core.windows.net/mldata/MoviesDataRecommendation/ratings.csv\ndf1: org.apache.spark.sql.DataFrame = [userId: string, movieId: string ... 2 more fields]\n
","removedWidgets":[],"addedWidgets":{},"metadata":{"isDbfsCommandResult":false},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nfilepath1: String = abfss://adlsstore@psinsightsadlsdev.dfs.core.windows.net/mldata/MoviesDataRecommendation/ratings.csv\ndf1: org.apache.spark.sql.DataFrame = [userId: string, movieId: string ... 2 more fields]\n
"]}}],"execution_count":0},{"cell_type":"code","source":["%scala\nval filepath2= \"abfss://.../mldata/MoviesDataRecommendation/movies.csv\"\nvar df2=spark.read.format(\"csv\").option(\"header\", \"true\").option(\"delimiter\", \",\").load(filepath2)\ndf2.createOrReplaceTempView(\"movies\")"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"ab422b44-8d19-475b-b841-98d7e95aab4b"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[{"name":"df2","typeStr":"org.apache.spark.sql.DataFrame","schema":{"type":"struct","fields":[{"name":"movieId","type":"string","nullable":true,"metadata":{}},{"name":"title","type":"string","nullable":true,"metadata":{}},{"name":"genres","type":"string","nullable":true,"metadata":{}}]},"tableIdentifier":null}],"data":"filepath2: String = abfss://adlsstore@psinsightsadlsdev.dfs.core.windows.net/mldata/MoviesDataRecommendation/movies.csv\ndf2: org.apache.spark.sql.DataFrame = [movieId: string, title: string ... 1 more field]\n
","removedWidgets":[],"addedWidgets":{},"metadata":{"isDbfsCommandResult":false},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nfilepath2: String = abfss://adlsstore@psinsightsadlsdev.dfs.core.windows.net/mldata/MoviesDataRecommendation/movies.csv\ndf2: org.apache.spark.sql.DataFrame = [movieId: string, title: string ... 1 more field]\n
"]}}],"execution_count":0},{"cell_type":"code","source":["#Convert spark sql df to pyspark df\ndf1= spark.sql(\"\"\"select * from ratings\"\"\")\n#dtype conversion-rating df\nimport pandas as pd\nimport numpy as np\nfrom pyspark.sql.functions import col\ncols_all=['userId'\n,'movieId'\n,'rating']\ncols_string=['userId'\n,'movieId']\ncols_int=['rating']\ncols_bool=[]\ncols_Float=[]\nfor col_name in cols_int:\n df1 = df1.withColumn(col_name, col(col_name).cast('Int')) \nfor col_name in cols_Float:\n df1 = df1.withColumn(col_name, col(col_name).cast('float')) \nfor col_name in cols_bool:\n df1 = df1.withColumn(col_name, col(col_name).cast('bool')) \n \ndf_ratings = df1.toPandas()\n\n#persist for handy use\noutdir = '/dbfs/FileStore/df_ratings.csv'\ndf_ratings.to_csv(outdir, index=False)\n#input_dataframe = pd.read_csv(\"/dbfs/FileStore/Dataframe.csv\", header='infer')"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"25b88b72-17c4-4930-8d09-4a6ed3082992"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n"]}}],"execution_count":0},{"cell_type":"code","source":["#Convert spark sql df to pyspark df\ndf1= spark.sql(\"\"\"select * from movies\"\"\")\n#dtype conversion-rating df\nimport pandas as pd\nimport numpy as np\nfrom pyspark.sql.functions import col\ncols_all=['movieId'\n,'title'\n,'genres']\ncols_string=['movieId'\n,'title'\n,'genres']\ncols_int=[]\ncols_bool=[]\ncols_Float=[]\nfor col_name in cols_int:\n df1 = df1.withColumn(col_name, col(col_name).cast('Int')) \nfor col_name in cols_Float:\n df1 = df1.withColumn(col_name, col(col_name).cast('float')) \nfor col_name in cols_bool:\n df1 = df1.withColumn(col_name, col(col_name).cast('bool')) \n \ndf_ratings = df1.toPandas()\n\n#persist for handy use\noutdir = '/dbfs/FileStore/df_movies.csv'\ndf_ratings.to_csv(outdir, index=False)\n#input_dataframe = pd.read_csv(\"/dbfs/FileStore/Dataframe.csv\", header='infer')"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"3dc425bb-9b80-4c6d-ad58-fbb2328f06a1"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n"]}}],"execution_count":0},{"cell_type":"markdown","source":["## DATA PREPARATION"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"70e45f34-679f-44b6-8c8a-df20b248fba0"}}},{"cell_type":"code","source":["import pandas as pd\ndata=pd.read_csv(\"/dbfs/FileStore/df_ratings.csv\", header='infer')\nCOL_USER = \"userId\"\nCOL_ITEM = \"movieId\"\nCOL_RATING = \"rating\"\nCOL_PREDICTION = \"rating\"\nCOL_TIMESTAMP = \"timestamp\""],"metadata":{"application/vnd.databricks.v1+cell":{"title":"1.Read Data","showTitle":true,"inputWidgets":{},"nuid":"ae8e1c6c-724d-43a6-b833-f286f803dcc9"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n"]}}],"execution_count":0},{"cell_type":"code","source":["print(\n \"Total number of ratings are\\t{}\".format(data.shape[0]),\n \"Total number of users are\\t{}\".format(data[COL_USER].nunique()),\n \"Total number of items are\\t{}\".format(data[COL_ITEM].nunique()),\n sep=\"\\n\"\n)"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"fabd62bc-d9cf-4be3-8b80-30d2d359d6eb"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Total number of ratings are\t25000095\nTotal number of users are\t162541\nTotal number of items are\t59047\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nTotal number of ratings are\t25000095\nTotal number of users are\t162541\nTotal number of items are\t59047\n
"]}}],"execution_count":0},{"cell_type":"code","source":["#Original timestamps are converted to ISO format.\nprint(\"*****************Data Transformation********************\\n\")\nfrom datetime import timedelta\ndata[COL_TIMESTAMP]= data.apply(\n lambda x: datetime.strftime(datetime(1970, 1, 1, 0, 0, 0) + timedelta(seconds=x[COL_TIMESTAMP].item()), \"%Y-%m-%d %H:%M:%S\"), \n axis=1\n)\n\n#Deduplicating data\ndata = data.drop_duplicates()\n\ndisplay(data)\n\n\n#Data aggregation / Affinity Scores\n#data is aggregated by user to generate some scores that represent preferences (called affinity score). The affinity score is a percentile measure of how confident we are that a particular product fits the wants and needs of an individual customer\n\n\n#1. Count- The most simple technique is to count times of interactions between user and item for producing affinity scores \nprint(\"*****************1.Count********************\\n\")\ndata_count = data.groupby(['userId', 'movieId']).agg({'timestamp': 'count'}).reset_index()\ndata_count.columns = ['userId', 'movieId', 'Affinity']\ndisplay(data_count.head())\n\n\n#2. Weighted Count- \n#Assuming weights of the differen ratings are 1, 2, 3, 4 and 5, respectively. Then assign weights to distinct ratings and take the weighted count\nprint(\"*****************2.Weighted Count********************\\n\")\ndata_w = data.copy()\n#data['rating'].unique() #Find the distinct values to be put in coindition.\n#numpy.select() function return an array drawn from elements in choicelist, depending on conditions.\nconditions = [\n data_w['rating'] == 0,\n data_w['rating'] == 1,\n data_w['rating'] == 2,\n data_w['rating'] == 3,\n data_w['rating'] == 4,\n data_w['rating'] == 5\n]\n#Choices or weights for each rating in order.\nchoices = [1,2,3,4,5,6]\ndata_w['Weight'] = np.select(conditions, choices, default=0)\n# Convert to numeric type.\ndata_w['Weight'] = pd.to_numeric(data_w['Weight'])\n# Do count with weight.\ndata_w_count = data_w.groupby(['userId', 'movieId'])['Weight'].sum().reset_index()\ndata_w_count.columns = ['userId', 'movieId', 'Affinity']\ndisplay(data_w_count.head())\n\n\n#3. Time dependent count\n#In many scenarios, time dependency plays a critical role in preparing dataset for building a collaborative filtering model that captures user interests drift over time. One of the common techniques for achieving time dependent count is to add a time decay factor in the counting. This technique is used in SAR. Formula for getting affinity score for each user-item pair is-\n# a_{ij}=sum_k w_k * (0.5)^{{t_0-t_k}/{T}}\n# where a_ij is the affinity score, w_k is the interaction weight, t_0 is a reference time, t_k is the timestamp for the k-th interaction, and T is a hyperparameter that controls the speed of\n# The following shows how to apply time decay in aggregating counts,In this case we use 5 days as the half-life parameter, and use the latest time in the dataset as the time reference.\nprint(\"*****************3.Time Decay Count********************\\n\")\nT = 5\nt_ref = pd.to_datetime(data_w['timestamp']).max()\n# Calculate the weighted count with time decay.\ndata_w['Timedecay'] = data_w.apply(\n lambda x: x['Weight'] * np.power(0.5, (t_ref - pd.to_datetime(x['timestamp'])).days / T), \n axis=1\n)\ndata_timedecay_count = data_w.groupby(['userId', 'movieId'])['Timedecay'].sum().reset_index()\ndata_timedecay_count.columns = ['userId', 'movieId', 'Affinity']\ndisplay(data_timedecay_count.head())"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"2.Transform Data","showTitle":true,"inputWidgets":{},"nuid":"65ec0ca0-ad12-4353-9553-2b84cbd93178"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"overflow":true,"datasetInfos":[],"data":[[1,296,5,"2006-05-17 15:34:04"],[1,306,3,"2006-05-17 12:26:57"],[1,307,5,"2006-05-17 12:27:08"],[1,665,5,"2006-05-17 15:13:40"],[1,899,3,"2006-05-17 12:21:50"],[1,1088,4,"2006-05-17 12:21:35"],[1,1175,3,"2006-05-17 12:27:06"],[1,1217,3,"2006-05-17 15:05:26"],[1,1237,5,"2006-05-17 12:27:19"],[1,1250,4,"2006-05-17 12:20:14"],[1,1260,3,"2006-05-17 14:57:37"],[1,1653,4,"2006-05-17 12:14:57"],[1,2011,2,"2006-05-17 12:14:39"],[1,2012,2,"2006-05-17 12:14:28"],[1,2068,2,"2006-05-17 12:30:44"],[1,2161,3,"2006-05-17 12:23:29"],[1,2351,4,"2006-05-17 14:59:17"],[1,2573,4,"2006-05-17 15:15:23"],[1,2632,5,"2006-05-17 15:04:08"],[1,2692,5,"2006-05-17 12:31:40"],[1,2843,4,"2006-05-17 12:28:11"],[1,3448,4,"2006-05-17 12:21:20"],[1,3569,5,"2006-05-17 15:26:43"],[1,3949,5,"2006-05-17 12:24:38"],[1,4144,5,"2006-05-17 12:28:18"],[1,4308,3,"2006-05-17 12:22:14"],[1,4325,5,"2006-05-17 15:02:02"],[1,4422,3,"2006-05-17 12:30:48"],[1,4703,4,"2006-05-17 12:33:43"],[1,4973,4,"2006-05-17 12:31:20"],[1,5147,4,"2006-05-17 14:54:14"],[1,5269,0,"2006-05-17 15:26:11"],[1,5684,2,"2006-05-17 15:29:57"],[1,5767,5,"2006-05-17 15:12:09"],[1,5878,4,"2006-05-17 12:26:47"],[1,5912,3,"2006-05-17 15:11:38"],[1,5952,4,"2006-05-17 12:14:13"],[1,6016,5,"2006-05-17 12:31:30"],[1,6370,4,"2006-05-17 12:33:11"],[1,6377,4,"2006-05-17 12:21:09"],[1,6539,3,"2006-05-17 12:21:01"],[1,6711,5,"2006-05-17 12:23:42"],[1,6954,3,"2006-05-17 12:32:30"],[1,7209,4,"2006-05-17 14:59:46"],[1,7234,4,"2006-05-17 12:27:49"],[1,7318,2,"2006-05-17 15:30:50"],[1,7323,3,"2006-05-17 12:31:59"],[1,7327,3,"2006-05-17 12:27:35"],[1,7361,5,"2006-05-17 15:34:15"],[1,7365,4,"2006-05-17 12:30:33"],[1,7820,2,"2006-05-17 15:00:50"],[1,7937,3,"2006-05-17 15:00:55"],[1,7938,2,"2006-05-17 15:01:03"],[1,7939,2,"2006-05-17 12:33:03"],[1,7940,4,"2006-05-17 14:59:27"],[1,8014,3,"2006-05-17 12:32:35"],[1,8154,5,"2006-05-17 12:27:45"],[1,8327,5,"2006-05-17 15:22:55"],[1,8360,4,"2006-05-17 12:24:42"],[1,8405,3,"2006-05-17 15:01:35"],[1,8685,1,"2006-05-17 15:00:23"],[1,8729,3,"2006-05-17 15:07:32"],[1,8786,4,"2006-05-17 14:57:33"],[1,8873,3,"2006-05-17 12:31:34"],[1,8973,4,"2006-05-17 12:33:31"],[1,27193,3,"2006-05-17 15:29:34"],[1,27266,4,"2006-05-17 15:22:45"],[1,27721,3,"2006-05-17 12:31:55"],[1,31956,3,"2006-05-17 14:53:30"],[1,32591,5,"2006-05-17 15:25:38"],[2,1,3,"2006-03-03 19:57:00"],[2,62,0,"2006-03-03 20:18:50"],[2,110,5,"2006-03-03 20:09:49"],[2,150,4,"2006-03-03 19:56:30"],[2,151,4,"2006-03-03 19:54:03"],[2,236,4,"2006-03-03 19:54:19"],[2,260,5,"2006-03-03 20:19:32"],[2,261,0,"2006-03-03 20:30:55"],[2,266,1,"2006-03-03 19:58:46"],[2,318,5,"2006-03-03 20:19:41"],[2,333,5,"2006-03-03 19:58:51"],[2,349,4,"2006-03-03 20:17:25"],[2,356,4,"2006-03-03 20:10:37"],[2,364,4,"2006-03-03 20:17:57"],[2,380,1,"2006-03-03 19:56:48"],[2,457,5,"2006-03-03 20:10:18"],[2,480,2,"2006-03-03 20:18:08"],[2,497,4,"2006-03-03 19:52:46"],[2,524,3,"2006-03-03 20:18:32"],[2,527,5,"2006-03-03 19:56:56"],[2,534,4,"2006-03-03 20:30:14"],[2,553,2,"2006-03-03 19:52:19"],[2,588,2,"2006-03-03 20:19:49"],[2,589,4,"2006-03-03 20:12:28"],[2,653,3,"2006-03-03 19:52:32"],[2,733,4,"2006-03-03 19:58:25"],[2,858,3,"2006-03-03 20:15:26"],[2,914,4,"2006-03-03 20:27:22"],[2,953,4,"2006-03-03 20:24:47"],[2,1035,1,"2006-03-03 19:58:19"],[2,1080,1,"2006-03-03 19:52:12"],[2,1136,5,"2006-03-03 20:32:30"],[2,1196,5,"2006-03-03 20:19:58"],[2,1197,5,"2006-03-03 19:57:54"],[2,1198,4,"2006-03-03 20:17:12"],[2,1201,2,"2006-03-03 19:58:07"],[2,1210,5,"2006-03-03 20:11:05"],[2,1246,4,"2006-03-03 20:13:13"],[2,1257,5,"2006-03-03 20:21:53"],[2,1270,4,"2006-03-03 20:16:53"],[2,1271,1,"2006-03-03 20:28:56"],[2,1275,4,"2006-03-03 20:20:37"],[2,1283,4,"2006-03-03 20:03:25"],[2,1287,5,"2006-03-03 20:19:00"],[2,1291,5,"2006-03-03 20:10:03"],[2,1293,5,"2006-03-03 20:32:17"],[2,1299,1,"2006-03-03 20:03:40"],[2,1302,3,"2006-03-03 20:17:16"],[2,1356,5,"2006-03-03 20:21:12"],[2,1374,4,"2006-03-03 19:52:56"],[2,1376,5,"2006-03-03 20:23:22"],[2,1393,4,"2006-03-03 20:20:43"],[2,1431,3,"2006-03-03 20:03:10"],[2,1465,3,"2006-03-03 20:31:15"],[2,1485,3,"2006-03-03 19:53:12"],[2,1488,5,"2006-03-03 20:03:05"],[2,1527,3,"2006-03-03 20:28:36"],[2,1580,4,"2006-03-03 20:17:39"],[2,1584,5,"2006-03-03 20:13:26"],[2,1587,1,"2006-03-03 20:02:52"],[2,1610,5,"2006-03-03 20:10:01"],[2,1653,4,"2006-03-03 19:53:06"],[2,1672,4,"2006-03-03 20:21:50"],[2,1674,4,"2006-03-03 20:23:17"],[2,1682,4,"2006-03-03 19:57:25"],[2,1693,4,"2006-03-03 20:19:54"],[2,1722,0,"2006-03-03 19:57:44"],[2,1873,4,"2006-03-03 20:13:08"],[2,1907,4,"2006-03-03 20:17:34"],[2,1923,0,"2006-03-03 20:25:16"],[2,1957,3,"2006-03-03 20:02:28"],[2,1968,1,"2006-03-03 19:57:30"],[2,2028,4,"2006-03-03 19:57:20"],[2,2081,1,"2006-03-03 19:57:37"],[2,2083,4,"2006-03-03 20:26:21"],[2,2115,3,"2006-03-03 20:22:00"],[2,2138,4,"2006-03-03 20:14:59"],[2,2139,4,"2006-03-03 20:13:54"],[2,2150,5,"2006-03-03 20:33:28"],[2,2194,5,"2006-03-03 19:54:45"],[2,2268,4,"2006-03-03 20:16:13"],[2,2273,2,"2006-03-03 20:02:39"],[2,2294,4,"2006-03-03 20:14:39"],[2,2324,1,"2006-03-03 20:28:46"],[2,2355,4,"2006-03-03 20:12:07"],[2,2359,5,"2006-03-03 20:23:43"],[2,2406,2,"2006-03-03 19:54:07"],[2,2470,5,"2006-03-03 19:56:27"],[2,2496,4,"2006-03-03 20:01:24"],[2,2501,4,"2006-03-03 20:16:32"],[2,2571,5,"2006-03-03 20:12:23"],[2,2617,4,"2006-03-03 19:54:34"],[2,2640,5,"2006-03-03 19:53:39"],[2,2643,0,"2006-03-03 20:02:10"],[2,2694,4,"2006-03-03 20:01:48"],[2,2720,0,"2006-03-03 20:02:07"],[2,2745,5,"2006-03-03 20:14:49"],[2,2761,0,"2006-03-03 20:24:32"],[2,2762,4,"2006-03-03 19:57:03"],[2,2797,1,"2006-03-03 19:51:49"],[2,2918,4,"2006-03-03 20:20:14"],[2,2987,0,"2006-03-03 20:31:34"],[2,3098,3,"2006-03-03 20:17:29"],[2,3105,4,"2006-03-03 20:20:24"],[2,3107,3,"2006-03-03 20:00:48"],[2,3114,4,"2006-03-03 20:10:34"],[2,3148,2,"2006-03-03 20:26:01"],[2,3175,3,"2006-03-03 20:21:28"],[2,3360,5,"2006-03-03 20:18:28"],[2,3396,4,"2006-03-03 20:28:31"],[2,3479,2,"2006-03-03 20:00:18"],[2,3510,4,"2006-03-03 20:00:05"],[2,3578,5,"2006-03-03 19:56:43"],[2,3793,5,"2006-03-03 20:11:22"],[2,3889,2,"2006-03-03 20:07:45"],[2,3916,3,"2006-03-03 20:00:27"],[2,3948,3,"2006-03-03 19:56:38"],[2,3994,3,"2006-03-03 20:13:46"],[2,4016,5,"2006-03-03 20:21:42"],[2,4019,3,"2006-03-03 20:10:07"],[2,4022,5,"2006-03-03 19:57:07"],[2,4023,3,"2006-03-03 20:27:31"],[2,4103,4,"2006-03-03 20:30:31"],[2,4299,4,"2006-03-03 19:59:51"],[2,4306,4,"2006-03-03 20:11:08"],[2,4535,3,"2006-03-03 20:17:04"],[2,4571,1,"2006-03-03 19:59:44"],[2,4720,4,"2006-03-03 20:14:10"],[2,4857,1,"2006-03-03 19:59:38"],[2,4874,4,"2006-03-03 20:30:48"],[2,4886,5,"2006-03-03 19:54:29"],[2,4896,5,"2006-03-03 20:10:46"],[2,4963,4,"2006-03-03 20:11:55"],[2,4993,5,"2006-03-03 20:20:01"],[2,4995,5,"2006-03-03 20:11:50"],[2,5010,2,"2006-03-03 20:21:00"],[2,5103,5,"2006-03-03 20:18:38"],[2,5349,5,"2006-03-03 20:11:04"],[2,5418,5,"2006-03-03 20:10:43"],[2,5445,3,"2006-03-03 19:53:52"],[2,5574,3,"2006-03-03 20:06:43"],[2,5816,5,"2006-03-03 19:59:10"],[2,5952,5,"2006-03-03 19:52:08"],[2,5955,4,"2006-03-03 20:20:29"],[2,6156,2,"2006-03-03 20:06:07"],[2,6157,3,"2006-03-03 19:59:30"],[2,6213,2,"2006-03-03 20:06:16"],[2,6287,2,"2006-03-03 20:06:21"],[2,6311,5,"2006-03-03 20:21:03"],[2,6333,5,"2006-03-03 20:10:21"],[2,6539,5,"2006-03-03 20:16:49"],[2,6565,3,"2006-03-03 20:16:58"],[2,6753,3,"2006-03-03 20:06:02"],[2,6879,5,"2006-03-03 20:20:51"],[2,6947,4,"2006-03-03 20:25:29"],[2,7004,2,"2006-03-03 20:05:51"],[2,7007,0,"2006-03-03 20:05:47"],[2,7075,5,"2006-03-03 20:18:56"],[2,7090,2,"2006-03-03 20:32:27"],[2,7143,5,"2006-03-03 20:10:13"],[2,7153,5,"2006-03-03 20:12:59"],[2,7162,0,"2006-03-03 20:26:57"],[2,7386,4,"2006-03-03 20:10:31"],[2,7624,3,"2006-03-03 20:23:30"],[2,8010,5,"2006-03-03 20:26:43"],[2,8360,4,"2006-03-03 20:11:14"],[2,8368,5,"2006-03-03 20:11:11"],[2,8636,5,"2006-03-03 20:12:02"],[2,8665,4,"2006-03-03 20:12:17"],[2,8958,2,"2006-03-03 20:23:59"],[2,8961,4,"2006-03-03 19:59:06"],[2,8970,5,"2006-03-03 20:21:08"],[2,27821,4,"2006-03-03 20:05:26"],[2,30749,5,"2006-03-03 20:29:38"],[2,30848,0,"2006-03-03 20:29:29"],[2,31923,3,"2006-03-03 20:13:59"],[2,33166,0,"2006-03-03 20:28:19"],[2,33493,4,"2006-03-03 20:12:43"],[2,33660,5,"2006-03-03 20:16:10"],[2,33794,5,"2006-03-03 20:10:40"],[2,34162,0,"2006-03-03 20:05:17"],[2,35836,0,"2006-03-03 20:24:09"],[2,36527,3,"2006-03-03 20:23:02"],[2,40815,5,"2006-03-03 20:10:09"],[3,1,4,"2015-08-13 13:23:35"],[3,29,4,"2017-01-18 15:56:07"],[3,32,4,"2015-08-13 14:03:55"],[3,50,5,"2015-08-13 13:59:51"],[3,111,4,"2017-01-18 15:37:29"],[3,172,4,"2015-08-13 14:07:51"],[3,173,3,"2015-08-13 14:07:49"],[3,214,5,"2017-01-18 15:38:08"],[3,260,4,"2015-08-13 13:23:59"],[3,293,5,"2017-01-18 15:38:32"],[3,296,5,"2015-08-13 14:01:16"],[3,318,4,"2015-08-13 13:27:04"],[3,356,4,"2015-08-13 13:23:19"],[3,442,3,"2015-08-13 14:07:47"],[3,480,2,"2015-08-13 13:23:39"],[3,527,4,"2015-08-13 13:27:16"],[3,541,5,"2015-08-13 14:03:45"],[3,589,4,"2015-08-13 14:04:17"],[3,593,4,"2015-08-13 13:23:23"],[3,741,5,"2017-01-18 15:36:48"],[3,745,5,"2015-08-13 14:01:07"],[3,778,5,"2017-01-18 15:37:22"],[3,780,3,"2015-08-13 14:04:27"],[3,858,5,"2015-08-13 13:59:49"],[3,912,4,"2015-08-13 14:00:08"],[3,913,4,"2015-08-13 14:01:27"],[3,924,5,"2015-08-13 14:03:58"],[3,1089,4,"2017-01-18 15:34:14"],[3,1127,3,"2015-08-13 14:05:25"],[3,1148,5,"2015-08-13 14:00:52"],[3,1196,4,"2015-08-13 13:27:07"],[3,1198,3,"2015-08-13 13:27:11"],[3,1200,4,"2015-08-13 14:04:10"],[3,1201,4,"2015-08-13 14:01:57"],[3,1206,4,"2016-01-27 14:13:41"],[3,1208,4,"2016-01-27 14:13:51"],[3,1210,4,"2015-08-13 13:27:22"],[3,1213,5,"2017-01-18 15:42:36"],[3,1214,4,"2015-08-13 14:04:00"],[3,1217,5,"2015-08-13 14:00:55"],[3,1221,5,"2015-08-13 13:59:53"],[3,1222,4,"2017-01-18 15:45:39"],[3,1240,4,"2015-08-13 14:04:12"],[3,1252,5,"2017-01-18 15:38:58"],[3,1270,3,"2015-08-13 13:23:31"],[3,1274,4,"2019-08-18 00:40:19"],[3,1320,3,"2015-08-13 14:07:03"],[3,1356,4,"2015-08-13 14:06:00"],[3,1527,4,"2015-08-13 14:03:52"],[3,1584,4,"2015-08-13 14:04:37"],[3,1653,5,"2015-08-13 14:03:51"],[3,1676,3,"2015-08-13 14:06:06"],[3,1682,4,"2015-08-13 14:12:05"],[3,1732,4,"2019-08-18 01:31:23"],[3,1748,4,"2015-08-13 14:04:57"],[3,1882,2,"2015-08-13 14:12:07"],[3,1909,4,"2015-08-13 14:12:03"],[3,1960,4,"2019-08-18 01:12:46"],[3,2019,5,"2015-08-13 14:00:41"],[3,2021,4,"2019-08-18 00:50:49"],[3,2105,3,"2015-08-13 14:06:03"],[3,2329,5,"2015-08-13 14:01:03"],[3,2542,4,"2017-01-18 16:19:12"],[3,2571,4,"2015-08-13 13:23:41"],[3,2628,4,"2015-08-13 14:04:29"],[3,2641,3,"2015-08-13 14:11:46"],[3,2858,5,"2015-08-13 14:01:14"],[3,2938,4,"2017-01-18 15:44:00"],[3,2959,5,"2015-08-13 14:00:17"],[3,3091,4,"2017-01-18 15:44:22"],[3,3156,4,"2015-08-13 14:05:58"],[3,3285,3,"2015-08-13 13:38:02"],[3,3300,4,"2015-08-13 13:35:28"],[3,3301,4,"2015-08-13 13:36:15"],[3,3328,3,"2017-01-18 15:42:10"],[3,3408,3,"2019-08-18 00:56:13"],[3,3452,3,"2015-08-13 13:41:20"],[3,3471,4,"2015-08-13 14:05:33"],[3,3484,3,"2015-08-13 13:50:59"],[3,3527,4,"2015-08-13 14:06:09"],[3,3534,3,"2015-08-13 13:39:40"],[3,3535,4,"2015-08-13 13:34:37"],[3,3578,4,"2015-08-13 13:30:19"],[3,3646,2,"2015-08-13 13:48:53"],[3,3702,4,"2015-08-13 14:09:52"],[3,3730,4,"2017-01-18 15:49:09"],[3,3744,4,"2015-08-13 13:41:39"],[3,3745,3,"2015-08-13 14:09:54"],[3,3751,4,"2019-08-18 00:56:04"],[3,3753,3,"2015-08-13 13:32:07"],[3,3755,3,"2019-08-18 00:56:44"],[3,3785,3,"2015-08-13 13:34:29"],[3,3793,4,"2015-08-13 13:30:29"],[3,3798,3,"2015-08-13 13:36:52"],[3,3825,2,"2015-08-13 13:41:57"],[3,3827,2,"2015-08-13 13:38:43"],[3,3863,3,"2015-08-13 13:34:42"],[3,3879,3,"2015-08-13 13:58:17"],[3,3948,3,"2019-08-18 00:55:39"],[3,3968,3,"2019-08-18 01:05:00"],[3,3969,4,"2015-08-13 13:38:07"],[3,3977,2,"2019-08-18 00:56:09"],[3,3979,2,"2015-08-13 13:45:05"],[3,3980,4,"2015-08-13 13:43:54"],[3,3986,3,"2019-08-18 01:03:02"],[3,3988,3,"2019-08-18 00:59:04"],[3,3991,2,"2015-08-13 13:55:20"],[3,3993,4,"2015-08-13 13:48:19"],[3,3994,4,"2015-08-13 13:32:21"],[3,3996,4,"2015-08-13 13:30:33"],[3,3999,3,"2015-08-13 13:44:06"],[3,4011,4,"2017-01-18 15:36:06"],[3,4018,3,"2015-08-13 13:34:31"],[3,4019,4,"2015-08-13 13:37:41"],[3,4022,4,"2015-08-13 13:31:32"],[3,4023,4,"2015-08-13 13:39:22"],[3,4025,2,"2015-08-13 13:33:48"],[3,4027,4,"2015-08-13 13:31:10"],[3,4034,4,"2019-08-18 00:56:19"],[3,4069,3,"2019-08-18 01:04:35"],[3,4148,3,"2019-08-18 00:57:45"],[3,4167,3,"2015-08-13 13:55:37"],[3,4226,4,"2015-08-13 13:30:27"],[3,4232,3,"2015-08-13 13:42:14"],[3,4234,3,"2015-08-13 13:56:51"],[3,4246,3,"2015-08-13 13:32:42"],[3,4262,4,"2019-08-18 01:31:12"],[3,4306,4,"2015-08-13 13:30:24"],[3,4308,3,"2015-08-13 13:33:12"],[3,4340,2,"2015-08-13 13:56:42"],[3,4343,3,"2015-08-13 13:40:42"],[3,4344,4,"2016-01-27 14:18:59"],[3,4366,3,"2015-08-13 13:49:00"],[3,4367,3,"2015-08-13 13:35:20"],[3,4368,2,"2015-08-13 13:53:52"],[3,4369,4,"2015-08-13 13:36:29"],[3,4383,4,"2019-08-18 00:50:03"],[3,4388,3,"2015-08-13 13:42:59"],[3,4447,2,"2015-08-13 13:34:20"],[3,4448,4,"2019-08-18 01:06:22"],[3,4571,3,"2015-08-13 14:06:59"],[3,4643,4,"2015-08-13 13:34:48"],[3,4701,3,"2015-08-13 13:37:59"],[3,4718,2,"2019-08-18 00:57:23"],[3,4776,4,"2019-08-18 00:57:16"],[3,4816,3,"2015-08-13 13:35:17"],[3,4844,4,"2015-08-13 13:49:40"],[3,4866,4,"2015-08-13 13:57:17"],[3,4874,3,"2015-08-13 13:37:13"],[3,4886,4,"2015-08-13 13:30:40"],[3,4887,3,"2015-08-13 13:50:13"],[3,4901,4,"2015-08-13 13:38:16"],[3,4958,3,"2019-08-18 01:08:48"],[3,4963,4,"2015-08-13 13:30:48"],[3,4975,3,"2015-08-13 14:05:29"],[3,4979,4,"2015-08-13 13:32:31"],[3,4992,3,"2015-08-13 13:45:36"],[3,4993,4,"2015-08-13 13:27:26"],[3,4995,4,"2015-08-13 13:30:59"],[3,5004,4,"2017-01-18 15:42:13"],[3,5013,4,"2015-08-13 13:37:03"],[3,5014,4,"2015-08-13 13:44:52"],[3,5108,3,"2015-08-13 13:54:51"],[3,5218,4,"2015-08-13 13:32:53"],[3,5219,3,"2015-08-13 13:40:38"],[3,5225,4,"2015-08-13 13:40:00"],[3,5254,3,"2015-08-13 13:39:35"],[3,5266,3,"2019-08-18 00:58:09"],[3,5291,5,"2015-08-13 14:00:59"],[3,5293,3,"2015-08-13 13:50:44"],[3,5313,2,"2019-08-18 01:08:31"],[3,5349,4,"2015-08-13 13:30:55"],[3,5364,3,"2015-08-13 13:53:38"],[3,5377,3,"2015-08-13 13:34:08"],[3,5378,3,"2019-08-18 00:55:28"],[3,5388,3,"2015-08-13 13:37:16"],[3,5400,4,"2015-08-13 13:43:12"],[3,5418,5,"2015-08-13 13:31:04"],[3,5445,3,"2015-08-13 13:30:42"],[3,5449,2,"2015-08-13 13:45:03"],[3,5459,3,"2015-08-13 14:10:11"],[3,5479,3,"2015-08-13 13:56:17"],[3,5502,3,"2015-08-13 14:07:06"],[3,5507,3,"2019-08-18 01:02:33"],[3,5528,3,"2015-08-13 13:40:36"],[3,5574,4,"2019-08-18 01:02:42"],[3,5630,3,"2015-08-13 13:39:08"],[3,5669,3,"2015-08-13 13:32:51"],[3,5679,3,"2015-08-13 13:33:51"],[3,5782,4,"2017-01-18 15:46:15"],[3,5785,2,"2015-08-13 13:45:49"],[3,5810,3,"2019-08-18 00:59:10"],[3,5816,3,"2015-08-13 13:31:51"],[3,5853,3,"2015-08-13 14:12:12"],[3,5872,4,"2015-08-13 13:38:31"],[3,5900,3,"2019-08-18 01:16:23"],[3,5903,4,"2015-08-13 13:35:58"],[3,5944,3,"2015-08-13 14:06:32"],[3,5945,4,"2015-08-13 13:38:18"],[3,5952,4,"2015-08-13 13:30:16"],[3,5954,4,"2019-08-18 01:03:56"],[3,5956,4,"2015-08-13 13:36:16"],[3,5959,4,"2015-08-13 13:56:01"],[3,5989,4,"2019-08-18 00:55:05"],[3,5991,4,"2015-08-13 13:34:50"],[3,6016,4,"2015-08-13 13:32:04"],[3,6059,3,"2015-08-13 13:48:36"],[3,6155,3,"2015-08-13 13:43:03"],[3,6156,3,"2015-08-13 13:48:39"],[3,6213,3,"2015-08-13 13:57:46"],[3,6281,2,"2019-08-18 00:59:22"],[3,6283,4,"2015-08-13 13:48:22"],[3,6287,3,"2015-08-13 13:41:44"],[3,6323,4,"2015-08-13 13:40:18"],[3,6333,4,"2015-08-13 14:05:11"],[3,6365,4,"2019-08-18 00:55:15"],[3,6373,3,"2015-08-13 13:34:00"],[3,6377,4,"2015-08-13 13:30:44"],[3,6378,3,"2015-08-13 13:33:46"],[3,6383,4,"2015-08-13 13:42:40"],[3,6440,4,"2017-01-18 15:42:52"],[3,6482,2,"2015-08-13 13:58:24"],[3,6502,3,"2015-08-13 13:33:32"],[3,6534,3,"2015-08-13 13:39:20"],[3,6535,2,"2015-08-13 13:52:03"],[3,6537,3,"2019-08-18 00:56:50"],[3,6539,4,"2015-08-13 13:30:31"],[3,6541,3,"2015-08-13 13:40:25"],[3,6548,3,"2019-08-18 01:05:43"],[3,6550,3,"2015-08-13 13:52:57"],[3,6564,3,"2015-08-13 13:47:08"],[3,6586,3,"2015-08-13 13:49:51"],[3,6595,3,"2015-08-13 13:48:59"],[3,6708,4,"2019-08-18 01:02:51"],[3,6711,4,"2019-08-18 00:55:46"],[3,6754,4,"2015-08-13 13:41:30"],[3,6863,3,"2015-08-13 13:34:15"],[3,6870,4,"2019-08-18 00:56:55"],[3,6873,3,"2015-08-13 13:49:33"],[3,6874,4,"2015-08-13 13:31:02"],[3,6879,4,"2019-08-18 01:09:07"],[3,6934,4,"2015-08-13 13:32:33"],[3,6952,3,"2015-08-13 13:52:52"],[3,7090,4,"2015-08-13 13:36:08"],[3,7143,2,"2019-08-18 00:56:27"],[3,7147,4,"2015-08-13 13:32:28"],[3,7149,4,"2015-08-13 13:47:23"],[3,7153,4,"2015-08-13 13:30:17"],[3,7154,4,"2015-08-13 13:52:12"],[3,7163,3,"2015-08-13 13:49:26"],[3,7293,3,"2015-08-13 13:37:11"],[3,7325,2,"2015-08-13 13:44:22"],[3,7346,3,"2015-08-13 13:51:21"],[3,7347,4,"2015-08-13 13:48:43"],[3,7361,4,"2015-08-13 13:30:57"],[3,7373,4,"2015-08-13 13:37:55"],[3,7438,4,"2015-08-13 13:31:27"],[3,7439,3,"2015-08-13 13:57:09"],[3,7445,3,"2019-08-18 00:58:58"],[3,7454,3,"2015-08-13 13:42:42"],[3,7458,4,"2015-08-13 13:37:19"],[3,8360,3,"2019-08-18 00:55:59"],[3,8361,2,"2015-08-13 13:37:24"],[3,8368,4,"2015-08-13 13:32:01"],[3,8370,4,"2017-01-18 15:44:57"],[3,8371,4,"2015-08-13 13:44:11"],[3,8528,3,"2017-01-18 15:34:41"],[3,8529,3,"2015-08-13 13:38:40"],[3,8641,4,"2015-08-13 13:38:20"],[3,8644,4,"2015-08-13 14:04:34"],[3,8665,4,"2015-08-13 13:31:55"],[3,8666,3,"2015-08-13 13:57:52"],[3,8781,3,"2015-08-13 13:48:46"],[3,8783,4,"2019-08-18 01:01:01"],[3,8798,3,"2015-08-13 13:35:05"],[3,8810,3,"2015-08-13 13:42:50"],[3,8861,3,"2019-08-18 01:08:00"],[3,8865,4,"2015-08-13 13:45:26"],[3,8874,4,"2015-08-13 13:33:02"],[3,8958,4,"2015-08-13 13:42:10"],[3,8961,4,"2015-08-13 13:31:07"],[3,8965,4,"2015-08-13 13:55:42"],[3,8969,3,"2015-08-13 13:51:36"],[3,8983,4,"2019-08-18 01:05:12"],[3,8984,4,"2015-08-13 13:37:37"],[3,8985,3,"2015-08-13 13:51:32"],[3,27134,4,"2019-08-18 00:49:54"],[3,27660,4,"2019-08-18 01:07:15"],[3,27706,3,"2019-08-18 01:04:16"],[3,27728,5,"2017-01-18 15:46:02"],[3,27773,5,"2017-01-18 16:21:46"],[3,27793,3,"2015-08-13 14:11:18"],[3,27803,4,"2015-08-13 13:58:05"],[3,27808,3,"2015-08-13 13:51:16"],[3,30707,4,"2015-08-13 13:34:04"],[3,30793,3,"2015-08-13 13:27:59"],[3,30825,3,"2015-08-13 13:41:08"],[3,31184,4,"2015-08-13 14:06:34"],[3,31221,3,"2019-08-18 01:21:10"],[3,31685,3,"2015-08-13 13:41:35"],[3,31696,4,"2015-08-13 13:41:06"],[3,31804,4,"2019-08-18 00:52:56"],[3,31878,4,"2019-08-18 01:04:44"],[3,32587,4,"2016-01-27 14:14:08"],[3,33004,4,"2015-08-13 13:37:44"],[3,33166,4,"2015-08-13 13:34:53"],[3,33493,4,"2015-08-13 13:32:37"],[3,33615,4,"2019-08-18 00:59:47"],[3,33679,3,"2015-08-13 13:28:25"],[3,33794,4,"2015-08-13 13:31:22"],[3,34048,3,"2016-01-27 14:14:45"],[3,34150,3,"2015-08-13 13:42:17"],[3,34162,3,"2015-08-13 13:28:14"],[3,34319,3,"2015-08-13 13:41:16"],[3,34405,4,"2015-08-13 14:04:09"],[3,34437,4,"2016-01-27 14:16:14"],[3,35836,3,"2016-01-27 14:14:48"],[3,36519,4,"2015-08-13 13:55:59"],[3,36529,4,"2016-01-27 14:14:54"],[3,37386,4,"2015-08-13 14:05:27"],[3,37727,3,"2015-08-13 13:55:46"],[3,37729,4,"2015-08-13 14:13:52"],[3,37741,4,"2015-08-13 13:44:24"],[3,39435,3,"2019-08-18 01:20:31"],[3,40583,4,"2016-01-27 14:16:15"],[3,40815,4,"2016-01-27 14:14:22"],[3,40819,4,"2015-08-13 13:36:47"],[3,41566,4,"2015-08-13 13:28:11"],[3,41569,3,"2016-01-27 14:15:04"],[3,42738,4,"2015-08-13 13:52:22"],[3,43928,2,"2015-08-13 14:06:24"],[3,44022,4,"2015-08-13 13:48:33"],[3,44191,4,"2016-01-27 14:14:06"],[3,45186,3,"2016-01-27 14:15:45"],[3,45447,3,"2015-08-13 13:38:22"],[3,45499,4,"2015-08-13 13:36:46"],[3,45501,3,"2015-08-13 13:58:28"],[3,45517,4,"2016-01-27 14:15:23"],[3,45666,3,"2019-08-18 01:19:51"],[3,45672,3,"2015-08-13 13:50:05"],[3,45722,4,"2016-01-27 14:14:26"],[3,46335,3,"2019-08-18 01:14:46"],[3,46578,4,"2015-08-13 13:32:39"],[3,46965,3,"2015-08-13 13:54:40"],[3,46970,3,"2015-08-13 13:49:47"],[3,46972,3,"2015-08-13 13:47:16"],[3,47200,4,"2015-08-13 13:52:28"],[3,47610,4,"2016-01-27 14:14:43"],[3,48385,3,"2016-01-27 14:14:37"],[3,48394,4,"2015-08-13 13:32:55"],[3,48516,5,"2015-08-13 14:02:06"],[3,48738,4,"2015-08-13 13:41:55"],[3,48774,4,"2015-08-13 13:34:17"],[3,48780,4,"2015-08-13 13:33:34"],[3,49272,4,"2015-08-13 13:32:25"],[3,49274,4,"2015-08-13 13:55:08"],[3,49278,3,"2015-08-13 13:47:31"],[3,49530,3,"2015-08-13 13:28:18"],[3,49822,4,"2019-08-18 01:22:52"],[3,50068,4,"2015-08-13 13:50:10"],[3,50872,4,"2015-08-13 13:33:43"],[3,51255,4,"2015-08-13 13:36:01"],[3,51662,4,"2016-01-27 14:14:14"],[3,51935,4,"2015-08-13 13:51:30"],[3,52604,4,"2015-08-13 13:55:22"],[3,52722,3,"2015-08-13 14:13:50"],[3,52950,4,"2019-08-18 00:50:29"],[3,53121,3,"2015-08-13 13:50:16"],[3,53125,4,"2016-01-27 14:15:01"],[3,53129,4,"2019-08-18 01:17:14"],[3,53464,3,"2019-08-18 00:46:56"],[3,53972,4,"2015-08-13 13:41:51"],[3,53996,4,"2015-08-13 13:37:33"],[3,54001,4,"2015-08-13 13:37:00"],[3,54286,4,"2015-08-13 13:33:09"],[3,54503,3,"2015-08-13 13:28:23"],[3,54648,3,"2019-08-18 01:20:14"],[3,54997,4,"2015-08-13 13:39:47"],[3,55232,4,"2015-08-13 13:58:08"],[3,55765,4,"2016-01-27 14:15:08"],[3,55805,4,"2019-08-18 01:24:42"],[3,55820,5,"2016-01-27 14:14:19"],[3,56145,3,"2015-08-13 14:09:10"],[3,56156,3,"2019-08-18 01:22:17"],[3,56171,4,"2015-08-13 13:53:50"],[3,56174,3,"2015-08-13 13:36:22"],[3,56587,4,"2015-08-13 13:54:06"],[3,56782,4,"2015-08-13 13:38:37"],[3,56949,3,"2019-08-18 00:47:05"],[3,57368,2,"2015-08-13 14:05:39"],[3,57528,3,"2019-08-18 01:11:51"],[3,57640,4,"2015-08-13 13:50:03"],[3,57669,3,"2019-08-18 00:57:30"],[3,58025,3,"2015-08-13 13:51:42"],[3,58559,5,"2015-08-13 13:27:19"],[3,59315,4,"2015-08-13 13:32:24"],[3,59369,3,"2015-08-13 13:39:09"],[3,59501,3,"2019-08-18 01:09:10"],[3,59615,3,"2016-01-27 14:15:26"],[3,59784,4,"2016-01-27 14:15:11"],[3,59900,3,"2019-08-18 01:15:09"],[3,60040,3,"2016-01-27 14:15:51"],[3,60069,4,"2015-08-13 13:32:09"],[3,60072,3,"2015-08-13 13:48:24"],[3,60074,4,"2015-08-13 13:44:15"],[3,60126,3,"2015-08-13 13:54:41"],[3,60684,4,"2015-08-13 14:04:18"],[3,60756,3,"2015-08-13 13:55:34"],[3,60760,3,"2017-01-18 16:18:28"],[3,61132,3,"2015-08-13 13:43:47"],[3,61160,4,"2015-08-13 14:09:13"],[3,61248,2,"2019-08-18 01:21:05"],[3,61323,4,"2015-08-13 13:41:37"],[3,61350,3,"2017-01-18 16:18:18"],[3,62849,4,"2015-08-13 13:57:50"],[3,62999,3,"2019-08-18 01:16:29"],[3,63062,4,"2015-08-13 13:53:38"],[3,63072,4,"2015-08-13 13:56:29"],[3,63113,4,"2015-08-13 13:44:13"],[3,63859,4,"2015-08-13 13:54:28"],[3,63876,4,"2015-08-13 13:48:01"],[3,64030,3,"2019-08-18 01:22:03"],[3,64614,4,"2015-08-13 13:36:30"],[3,64839,3,"2015-08-13 13:42:01"],[3,64957,4,"2015-08-13 13:39:53"],[3,65514,4,"2019-08-18 01:11:15"],[3,65682,4,"2017-01-18 16:17:46"],[3,66097,4,"2015-08-13 13:44:09"],[3,67255,4,"2015-08-13 13:45:21"],[3,67923,3,"2019-08-18 01:15:25"],[3,68157,4,"2017-04-21 14:39:13"],[3,68319,4,"2015-08-13 13:44:49"],[3,68358,4,"2015-08-13 14:04:05"],[3,68554,4,"2015-08-13 13:52:20"],[3,68791,3,"2015-08-13 13:50:54"],[3,68793,3,"2019-08-18 01:16:32"],[3,68952,2,"2019-08-18 01:18:04"],[3,69122,4,"2017-04-21 14:39:20"],[3,69481,3,"2015-08-13 13:41:27"],[3,69526,4,"2015-08-13 13:51:34"],[3,69640,4,"2015-08-13 13:59:15"],[3,69844,3,"2017-04-21 14:39:26"],[3,70286,4,"2015-08-13 13:34:34"],[3,70293,4,"2015-08-13 13:58:02"],[3,70305,3,"2015-08-13 14:09:24"],[3,70336,3,"2019-08-18 01:19:29"],[3,71057,4,"2015-08-13 13:56:07"],[3,71156,4,"2019-08-18 01:16:01"],[3,71464,4,"2019-08-18 01:15:40"],[3,71530,3,"2017-01-18 16:16:56"],[3,71535,4,"2015-08-13 13:37:30"],[3,72011,4,"2015-08-13 13:42:53"],[3,72209,3,"2017-01-18 16:16:36"],[3,72378,2,"2015-08-13 13:47:58"],[3,72641,4,"2015-08-13 13:49:20"],[3,72701,3,"2017-01-18 16:16:22"],[3,72998,4,"2015-08-13 14:03:43"],[3,73017,3,"2015-08-13 13:37:05"],[3,73268,4,"2015-08-13 14:11:38"],[3,73321,4,"2015-08-13 13:52:05"],[3,73323,4,"2019-08-18 01:23:19"],[3,74458,4,"2017-04-21 14:39:18"],[3,74789,4,"2019-08-18 00:59:42"],[3,76077,2,"2017-01-18 16:15:09"],[3,76093,4,"2015-08-13 13:38:04"],[3,76251,4,"2019-08-18 00:57:08"],[3,77561,4,"2015-08-13 13:40:40"],[3,78469,3,"2015-08-13 13:57:37"],[3,78499,4,"2015-08-13 13:36:54"],[3,79091,4,"2019-08-18 01:26:52"],[3,79132,5,"2015-08-13 14:01:13"],[3,79224,2,"2019-08-18 01:21:54"],[3,79293,4,"2015-08-13 13:55:06"],[3,79695,3,"2015-08-13 13:56:10"],[3,80363,3,"2017-01-18 16:14:37"],[3,80463,4,"2017-04-21 14:39:21"],[3,81229,4,"2015-08-13 13:54:23"],[3,81537,3,"2019-08-18 01:16:55"],[3,81564,4,"2019-08-18 01:04:09"],[3,81591,5,"2017-04-21 14:39:24"],[3,81834,3,"2019-08-18 01:27:10"],[3,81845,4,"2015-08-13 13:36:58"],[3,82095,2,"2017-01-18 16:14:15"],[3,82202,3,"2019-08-18 01:20:03"],[3,82461,4,"2015-08-13 13:52:47"],[3,83349,3,"2019-08-18 01:21:44"],[3,83613,3,"2017-01-18 16:11:58"],[3,84152,4,"2015-08-13 14:09:34"],[3,84772,3,"2017-01-18 16:13:08"],[3,84954,4,"2015-08-13 13:53:06"],[3,85020,3,"2019-08-18 01:21:28"],[3,85056,3,"2015-08-13 14:06:38"],[3,85131,2,"2017-01-18 16:13:03"],[3,85261,3,"2015-08-13 14:09:39"],[3,85414,4,"2015-08-13 13:42:46"],[3,86332,4,"2015-08-13 13:45:15"],[3,86644,3,"2019-08-18 01:14:54"],[3,86880,4,"2015-08-13 13:56:59"],[3,86911,3,"2019-08-18 01:07:11"],[3,87232,4,"2015-08-13 13:41:47"],[3,87306,3,"2015-08-13 14:05:16"],[3,87430,3,"2017-01-18 16:12:05"],[3,87520,3,"2017-01-18 16:12:09"],[3,87876,3,"2019-08-18 01:25:57"],[3,88125,3,"2019-08-18 01:27:03"],[3,88140,3,"2019-08-18 00:58:15"],[3,88405,3,"2019-08-18 01:09:31"],[3,88744,4,"2015-08-13 14:05:49"],[3,89492,4,"2015-08-13 13:49:14"],[3,89745,4,"2015-08-13 13:37:35"],[3,89753,4,"2019-08-18 01:17:27"],[3,90249,3,"2017-01-18 16:11:30"],[3,90866,3,"2019-08-18 01:07:05"],[3,91500,3,"2015-08-13 13:41:32"],[3,91529,4,"2017-04-21 14:39:16"],[3,91542,4,"2015-08-13 13:47:06"],[3,91630,4,"2015-08-13 13:51:18"],[3,91658,4,"2015-08-13 13:47:37"],[3,91974,3,"2019-08-18 01:24:31"],[3,91976,3,"2019-08-18 01:23:13"],[3,93363,4,"2015-08-13 14:05:52"],[3,93805,3,"2015-08-13 14:10:44"],[3,94018,2,"2019-08-18 01:26:05"],[3,94677,3,"2019-08-18 01:13:28"],[3,94777,3,"2017-01-18 16:10:47"],[3,94864,4,"2015-08-13 13:49:42"],[3,95441,3,"2019-08-18 01:04:03"],[3,95510,4,"2015-08-13 13:51:02"],[3,95875,4,"2015-08-13 14:05:43"],[3,96079,3,"2019-08-18 01:12:51"],[3,96610,4,"2015-08-13 13:44:36"],[3,96691,3,"2017-01-18 16:10:26"],[3,96737,4,"2015-08-13 14:05:41"],[3,96861,3,"2019-08-18 01:20:38"],[3,97225,3,"2019-08-18 01:18:19"],[3,97306,4,"2019-08-18 01:10:43"],[3,97921,3,"2015-08-13 13:47:52"],[3,97923,3,"2019-08-18 01:13:56"],[3,98809,4,"2015-08-13 13:43:44"],[3,99112,3,"2019-08-18 01:10:01"],[3,99114,4,"2015-08-13 13:37:57"],[3,101864,4,"2015-08-13 14:04:58"],[3,102125,4,"2015-08-13 14:08:57"],[3,102407,4,"2019-08-18 01:05:39"],[3,102445,4,"2015-08-13 13:49:57"],[3,102686,3,"2019-08-18 01:20:23"],[3,102716,3,"2019-08-18 01:19:00"],[3,102880,3,"2015-08-13 14:07:13"],[3,102903,3,"2019-08-18 01:01:22"],[3,103075,3,"2017-01-18 16:09:05"],[3,103141,3,"2019-08-18 01:06:45"],[3,103228,3,"2017-01-18 16:08:37"],[3,103249,3,"2017-01-18 16:09:01"],[3,103253,4,"2017-01-18 16:08:10"],[3,103384,3,"2019-08-18 01:23:57"],[3,103772,3,"2017-01-18 16:08:31"],[3,103810,3,"2019-08-18 01:22:43"],[3,104241,3,"2019-08-18 01:19:17"],[3,104243,4,"2015-08-13 14:08:52"],[3,104841,4,"2015-08-13 13:44:59"],[3,105213,3,"2019-08-18 01:22:10"],[3,106002,4,"2015-08-13 14:10:28"],[3,106072,4,"2015-08-13 14:07:42"],[3,106100,4,"2015-08-13 13:58:31"],[3,106487,3,"2015-08-13 13:49:12"],[3,106489,3,"2019-08-18 01:27:06"],[3,106782,4,"2015-08-13 13:47:39"],[3,106920,4,"2015-08-13 13:50:02"],[3,107348,3,"2019-08-18 01:22:35"],[3,107406,4,"2015-08-13 14:10:30"],[3,108190,3,"2015-08-13 14:07:35"],[3,108932,4,"2015-08-13 13:55:56"],[3,108945,3,"2017-01-18 16:07:29"],[3,109374,4,"2015-08-13 13:45:13"],[3,109487,4,"2015-08-13 13:28:37"],[3,109578,3,"2019-08-18 01:25:44"],[3,110102,4,"2015-08-13 13:54:04"],[3,110407,3,"2017-01-18 16:09:15"],[3,110730,4,"2017-01-18 16:06:50"],[3,111113,2,"2019-08-18 01:19:37"],[3,111360,4,"2015-08-13 14:06:52"],[3,111362,4,"2015-08-13 13:51:03"],[3,111443,3,"2019-08-18 01:25:28"],[3,111659,4,"2019-08-18 01:09:21"],[3,111759,4,"2015-08-13 14:04:39"],[3,112138,3,"2019-08-18 01:08:16"],[3,112171,3,"2019-08-18 01:15:05"],[3,112370,3,"2017-01-18 16:06:23"],[3,112552,5,"2015-08-13 13:28:33"],[3,112556,5,"2015-08-13 13:45:17"],[3,112623,4,"2015-08-13 14:05:06"],[3,112852,4,"2015-08-13 13:44:03"],[3,113345,4,"2017-01-18 16:04:33"],[3,114180,3,"2017-01-18 16:05:46"],[3,114847,4,"2017-01-18 16:05:21"],[3,114935,4,"2015-08-13 14:06:50"],[3,115569,4,"2015-08-13 14:14:06"],[3,115617,4,"2015-08-13 13:54:10"],[3,115713,4,"2015-08-13 14:04:32"],[3,116797,4,"2015-08-13 13:28:42"],[3,116823,3,"2017-01-18 16:05:13"],[3,116897,4,"2015-08-13 13:28:47"],[3,117529,3,"2015-08-13 14:06:48"],[3,117533,4,"2015-08-13 14:14:06"],[3,120466,3,"2015-08-13 14:06:45"],[3,122882,3,"2015-08-13 13:28:50"],[3,122886,3,"2016-01-27 14:16:45"],[3,122892,3,"2017-01-18 16:04:16"],[3,122896,3,"2019-08-18 01:23:40"],[3,122900,4,"2015-08-13 14:14:16"],[3,122906,4,"2019-08-18 01:09:18"],[3,122912,3,"2019-08-18 01:01:33"],[3,122914,3,"2019-08-18 00:47:25"],[3,122918,4,"2019-08-18 01:02:04"],[3,122920,3,"2017-01-18 16:01:27"],[3,122922,4,"2019-08-18 01:02:11"],[3,122924,3,"2017-01-18 16:01:15"],[3,129354,3,"2019-08-18 01:19:47"],[3,130490,3,"2017-01-18 16:03:57"],[3,130634,3,"2019-08-18 01:16:40"],[3,132046,3,"2015-08-13 14:07:09"],[3,134130,4,"2016-01-27 14:16:35"],[3,134853,4,"2015-08-13 13:28:39"],[3,135133,3,"2017-01-18 16:02:12"],[3,135143,3,"2019-08-18 01:07:02"],[3,135536,3,"2019-08-18 01:10:14"],[3,135569,3,"2019-08-18 01:11:28"],[3,136020,3,"2019-08-18 01:09:02"],[3,136449,5,"2017-01-18 15:36:02"],[3,136469,4,"2017-01-18 15:38:22"],[3,136864,3,"2019-08-18 01:11:47"],[3,139385,4,"2019-08-18 00:59:36"],[3,139644,4,"2019-08-18 01:06:50"],[3,140956,3,"2019-08-18 01:18:09"],[3,142509,3,"2017-01-18 16:02:42"],[3,143385,4,"2019-08-18 01:08:04"],[3,148626,4,"2019-08-18 00:59:14"],[3,148855,4,"2017-01-18 16:03:31"],[3,149406,4,"2019-08-18 01:23:29"],[3,151763,4,"2017-01-18 15:40:09"],[3,158238,3,"2019-08-18 01:09:39"],[3,158966,3,"2019-08-18 01:21:17"],[3,159093,3,"2019-08-18 01:14:49"],[3,164179,4,"2017-04-21 14:39:45"],[3,166528,4,"2017-01-18 16:00:25"],[3,166635,3,"2019-08-18 01:10:10"],[3,168252,4,"2017-04-21 14:39:46"],[3,168612,4,"2019-08-18 01:24:01"],[3,171763,3,"2019-08-18 01:07:44"],[3,175197,3,"2019-08-18 00:51:33"],[3,176101,3,"2019-08-18 01:22:39"],[3,176371,4,"2019-08-18 01:04:51"],[3,179819,3,"2019-08-18 01:09:51"],[3,182823,3,"2019-08-18 00:51:50"],[3,187541,3,"2019-08-18 01:11:33"],[3,187593,4,"2019-08-18 01:06:54"],[4,1,3,"2019-11-16 22:44:12"],[4,260,3,"2019-11-16 21:06:55"],[4,296,4,"2019-11-16 21:14:58"],[4,541,4,"2019-11-16 22:45:03"],[4,589,4,"2019-11-16 21:17:22"],[4,780,2,"2019-11-16 21:04:03"],[4,924,4,"2019-11-16 22:21:20"],[4,1036,4,"2019-11-16 21:52:49"],[4,1080,3,"2019-11-16 22:40:05"],[4,1136,4,"2019-11-19 20:25:01"],[4,1196,4,"2019-11-16 21:11:41"],[4,1197,4,"2019-11-16 23:07:08"],[4,1198,4,"2019-11-16 21:11:05"],[4,1200,3,"2019-11-16 22:45:11"],[4,1201,3,"2019-11-16 22:28:26"],[4,1210,3,"2019-11-16 21:03:45"],[4,1214,2,"2019-11-16 21:04:50"],[4,1220,4,"2019-11-16 21:18:07"],[4,1265,4,"2019-11-16 22:25:55"],[4,1270,2,"2019-11-16 22:43:45"],[4,1278,4,"2019-11-16 22:40:01"],[4,1288,3,"2019-11-16 22:43:28"],[4,1291,4,"2019-11-16 21:06:17"],[4,1527,3,"2019-11-16 21:16:27"],[4,1580,4,"2019-11-16 21:02:22"],[4,1610,3,"2019-11-16 21:03:52"],[4,1732,4,"2019-11-16 22:33:10"],[4,1907,4,"2019-11-16 21:09:03"],[4,2019,4,"2019-11-16 22:37:32"],[4,2028,4,"2019-11-16 21:05:24"],[4,2115,3,"2019-11-16 22:47:38"],[4,2571,4,"2019-11-16 21:10:19"],[4,2716,4,"2019-11-16 22:46:57"],[4,2791,4,"2019-11-16 22:43:24"],[4,2918,3,"2019-11-16 22:37:53"],[4,2951,3,"2019-11-16 22:48:19"],[4,2985,4,"2019-11-16 21:06:01"],[4,2993,3,"2019-11-16 22:31:11"],[4,3033,3,"2019-11-16 22:49:02"],[4,3039,3,"2019-11-16 22:47:04"],[4,3114,3,"2019-11-16 22:40:42"],[4,3175,4,"2019-11-16 22:38:33"],[4,3624,2,"2019-11-16 22:00:19"],[4,3671,4,"2019-11-16 22:43:19"],[4,3681,3,"2019-11-16 22:29:40"],[4,3751,3,"2019-11-16 21:57:48"],[4,3793,1,"2019-11-19 20:19:49"],[4,3827,3,"2019-11-16 21:35:52"],[4,4308,3,"2019-11-16 21:21:13"],[4,4709,2,"2019-11-16 22:14:19"],[4,4816,4,"2019-11-16 21:29:24"],[4,4886,3,"2019-11-16 21:26:20"],[4,4963,4,"2019-11-16 22:58:13"],[4,4974,4,"2019-11-16 21:51:10"],[4,4993,4,"2019-11-16 21:02:03"],[4,5110,4,"2019-11-16 21:39:35"],[4,5219,2,"2019-11-16 21:33:18"],[4,5299,2,"2019-11-16 21:58:42"],[4,5418,3,"2019-11-16 21:20:09"],[4,5444,4,"2019-11-16 21:02:35"],[4,5618,5,"2019-11-16 21:07:13"],[4,5903,4,"2019-11-16 21:29:52"],[4,5952,4,"2019-11-19 19:57:52"],[4,6156,3,"2019-11-16 21:40:06"],[4,6377,3,"2019-11-16 21:26:24"],[4,6539,4,"2019-11-16 21:03:02"],[4,6550,3,"2019-11-16 21:51:28"],[4,6863,4,"2019-11-16 21:58:07"],[4,6874,4,"2019-11-16 21:03:38"],[4,6947,4,"2019-11-16 21:31:59"],[4,7143,3,"2019-11-16 21:16:52"],[4,7153,4,"2019-11-16 21:02:46"],[4,7324,3,"2019-11-16 21:45:18"],[4,7373,4,"2019-11-16 21:30:31"],[4,7438,3,"2019-11-16 21:03:56"],[4,7451,4,"2019-11-16 21:51:41"],[4,7569,3,"2019-11-16 22:30:31"],[4,8641,4,"2019-11-16 21:17:10"],[4,8665,3,"2019-11-16 20:57:14"],[4,8874,4,"2019-11-16 21:10:41"],[4,8914,4,"2019-11-16 21:22:05"],[4,8961,5,"2019-11-16 21:01:32"],[4,33794,3,"2019-11-16 21:03:21"],[4,34048,2,"2019-11-16 21:29:48"],[4,34405,3,"2019-11-16 21:04:35"],[4,38038,3,"2019-11-16 21:09:12"],[4,44191,2,"2019-11-16 21:15:11"],[4,44193,3,"2019-11-16 21:45:54"],[4,44665,5,"2019-11-16 21:10:28"],[4,45431,2,"2019-11-16 21:41:28"]],"plotOptions":{"displayType":"table","customPlotOptions":{},"pivotColumns":null,"pivotAggregation":null,"xColumns":null,"yColumns":null},"columnCustomDisplayInfos":{},"aggType":"","isJsonSchema":true,"removedWidgets":[],"aggSchema":[],"schema":[{"name":"userId","type":"\"long\"","metadata":"{}"},{"name":"movieId","type":"\"long\"","metadata":"{}"},{"name":"rating","type":"\"long\"","metadata":"{}"},{"name":"timestamp","type":"\"string\"","metadata":"{}"}],"aggError":"","aggData":[],"addedWidgets":{},"metadata":{},"dbfsResultPath":null,"type":"table","aggOverflow":false,"aggSeriesLimitReached":false,"arguments":{}}},"output_type":"display_data","data":{"text/html":["userId | movieId | rating | timestamp |
---|
1 | 296 | 5 | 2006-05-17 15:34:04 |
1 | 306 | 3 | 2006-05-17 12:26:57 |
1 | 307 | 5 | 2006-05-17 12:27:08 |
1 | 665 | 5 | 2006-05-17 15:13:40 |
1 | 899 | 3 | 2006-05-17 12:21:50 |
1 | 1088 | 4 | 2006-05-17 12:21:35 |
1 | 1175 | 3 | 2006-05-17 12:27:06 |
1 | 1217 | 3 | 2006-05-17 15:05:26 |
1 | 1237 | 5 | 2006-05-17 12:27:19 |
1 | 1250 | 4 | 2006-05-17 12:20:14 |
1 | 1260 | 3 | 2006-05-17 14:57:37 |
1 | 1653 | 4 | 2006-05-17 12:14:57 |
1 | 2011 | 2 | 2006-05-17 12:14:39 |
1 | 2012 | 2 | 2006-05-17 12:14:28 |
1 | 2068 | 2 | 2006-05-17 12:30:44 |
1 | 2161 | 3 | 2006-05-17 12:23:29 |
1 | 2351 | 4 | 2006-05-17 14:59:17 |
1 | 2573 | 4 | 2006-05-17 15:15:23 |
1 | 2632 | 5 | 2006-05-17 15:04:08 |
1 | 2692 | 5 | 2006-05-17 12:31:40 |
1 | 2843 | 4 | 2006-05-17 12:28:11 |
1 | 3448 | 4 | 2006-05-17 12:21:20 |
1 | 3569 | 5 | 2006-05-17 15:26:43 |
1 | 3949 | 5 | 2006-05-17 12:24:38 |
1 | 4144 | 5 | 2006-05-17 12:28:18 |
1 | 4308 | 3 | 2006-05-17 12:22:14 |
1 | 4325 | 5 | 2006-05-17 15:02:02 |
1 | 4422 | 3 | 2006-05-17 12:30:48 |
1 | 4703 | 4 | 2006-05-17 12:33:43 |
1 | 4973 | 4 | 2006-05-17 12:31:20 |
1 | 5147 | 4 | 2006-05-17 14:54:14 |
1 | 5269 | 0 | 2006-05-17 15:26:11 |
1 | 5684 | 2 | 2006-05-17 15:29:57 |
1 | 5767 | 5 | 2006-05-17 15:12:09 |
1 | 5878 | 4 | 2006-05-17 12:26:47 |
1 | 5912 | 3 | 2006-05-17 15:11:38 |
1 | 5952 | 4 | 2006-05-17 12:14:13 |
1 | 6016 | 5 | 2006-05-17 12:31:30 |
1 | 6370 | 4 | 2006-05-17 12:33:11 |
1 | 6377 | 4 | 2006-05-17 12:21:09 |
1 | 6539 | 3 | 2006-05-17 12:21:01 |
1 | 6711 | 5 | 2006-05-17 12:23:42 |
1 | 6954 | 3 | 2006-05-17 12:32:30 |
1 | 7209 | 4 | 2006-05-17 14:59:46 |
1 | 7234 | 4 | 2006-05-17 12:27:49 |
1 | 7318 | 2 | 2006-05-17 15:30:50 |
1 | 7323 | 3 | 2006-05-17 12:31:59 |
1 | 7327 | 3 | 2006-05-17 12:27:35 |
1 | 7361 | 5 | 2006-05-17 15:34:15 |
1 | 7365 | 4 | 2006-05-17 12:30:33 |
1 | 7820 | 2 | 2006-05-17 15:00:50 |
1 | 7937 | 3 | 2006-05-17 15:00:55 |
1 | 7938 | 2 | 2006-05-17 15:01:03 |
1 | 7939 | 2 | 2006-05-17 12:33:03 |
1 | 7940 | 4 | 2006-05-17 14:59:27 |
1 | 8014 | 3 | 2006-05-17 12:32:35 |
1 | 8154 | 5 | 2006-05-17 12:27:45 |
1 | 8327 | 5 | 2006-05-17 15:22:55 |
1 | 8360 | 4 | 2006-05-17 12:24:42 |
1 | 8405 | 3 | 2006-05-17 15:01:35 |
1 | 8685 | 1 | 2006-05-17 15:00:23 |
1 | 8729 | 3 | 2006-05-17 15:07:32 |
1 | 8786 | 4 | 2006-05-17 14:57:33 |
1 | 8873 | 3 | 2006-05-17 12:31:34 |
1 | 8973 | 4 | 2006-05-17 12:33:31 |
1 | 27193 | 3 | 2006-05-17 15:29:34 |
1 | 27266 | 4 | 2006-05-17 15:22:45 |
1 | 27721 | 3 | 2006-05-17 12:31:55 |
1 | 31956 | 3 | 2006-05-17 14:53:30 |
1 | 32591 | 5 | 2006-05-17 15:25:38 |
2 | 1 | 3 | 2006-03-03 19:57:00 |
2 | 62 | 0 | 2006-03-03 20:18:50 |
2 | 110 | 5 | 2006-03-03 20:09:49 |
2 | 150 | 4 | 2006-03-03 19:56:30 |
2 | 151 | 4 | 2006-03-03 19:54:03 |
2 | 236 | 4 | 2006-03-03 19:54:19 |
2 | 260 | 5 | 2006-03-03 20:19:32 |
2 | 261 | 0 | 2006-03-03 20:30:55 |
2 | 266 | 1 | 2006-03-03 19:58:46 |
2 | 318 | 5 | 2006-03-03 20:19:41 |
2 | 333 | 5 | 2006-03-03 19:58:51 |
2 | 349 | 4 | 2006-03-03 20:17:25 |
2 | 356 | 4 | 2006-03-03 20:10:37 |
2 | 364 | 4 | 2006-03-03 20:17:57 |
2 | 380 | 1 | 2006-03-03 19:56:48 |
2 | 457 | 5 | 2006-03-03 20:10:18 |
2 | 480 | 2 | 2006-03-03 20:18:08 |
2 | 497 | 4 | 2006-03-03 19:52:46 |
2 | 524 | 3 | 2006-03-03 20:18:32 |
2 | 527 | 5 | 2006-03-03 19:56:56 |
2 | 534 | 4 | 2006-03-03 20:30:14 |
2 | 553 | 2 | 2006-03-03 19:52:19 |
2 | 588 | 2 | 2006-03-03 20:19:49 |
2 | 589 | 4 | 2006-03-03 20:12:28 |
2 | 653 | 3 | 2006-03-03 19:52:32 |
2 | 733 | 4 | 2006-03-03 19:58:25 |
2 | 858 | 3 | 2006-03-03 20:15:26 |
2 | 914 | 4 | 2006-03-03 20:27:22 |
2 | 953 | 4 | 2006-03-03 20:24:47 |
2 | 1035 | 1 | 2006-03-03 19:58:19 |
2 | 1080 | 1 | 2006-03-03 19:52:12 |
2 | 1136 | 5 | 2006-03-03 20:32:30 |
2 | 1196 | 5 | 2006-03-03 20:19:58 |
2 | 1197 | 5 | 2006-03-03 19:57:54 |
2 | 1198 | 4 | 2006-03-03 20:17:12 |
2 | 1201 | 2 | 2006-03-03 19:58:07 |
2 | 1210 | 5 | 2006-03-03 20:11:05 |
2 | 1246 | 4 | 2006-03-03 20:13:13 |
2 | 1257 | 5 | 2006-03-03 20:21:53 |
2 | 1270 | 4 | 2006-03-03 20:16:53 |
2 | 1271 | 1 | 2006-03-03 20:28:56 |
2 | 1275 | 4 | 2006-03-03 20:20:37 |
2 | 1283 | 4 | 2006-03-03 20:03:25 |
2 | 1287 | 5 | 2006-03-03 20:19:00 |
2 | 1291 | 5 | 2006-03-03 20:10:03 |
2 | 1293 | 5 | 2006-03-03 20:32:17 |
2 | 1299 | 1 | 2006-03-03 20:03:40 |
2 | 1302 | 3 | 2006-03-03 20:17:16 |
2 | 1356 | 5 | 2006-03-03 20:21:12 |
2 | 1374 | 4 | 2006-03-03 19:52:56 |
2 | 1376 | 5 | 2006-03-03 20:23:22 |
2 | 1393 | 4 | 2006-03-03 20:20:43 |
2 | 1431 | 3 | 2006-03-03 20:03:10 |
2 | 1465 | 3 | 2006-03-03 20:31:15 |
2 | 1485 | 3 | 2006-03-03 19:53:12 |
2 | 1488 | 5 | 2006-03-03 20:03:05 |
2 | 1527 | 3 | 2006-03-03 20:28:36 |
2 | 1580 | 4 | 2006-03-03 20:17:39 |
2 | 1584 | 5 | 2006-03-03 20:13:26 |
2 | 1587 | 1 | 2006-03-03 20:02:52 |
2 | 1610 | 5 | 2006-03-03 20:10:01 |
2 | 1653 | 4 | 2006-03-03 19:53:06 |
2 | 1672 | 4 | 2006-03-03 20:21:50 |
2 | 1674 | 4 | 2006-03-03 20:23:17 |
2 | 1682 | 4 | 2006-03-03 19:57:25 |
2 | 1693 | 4 | 2006-03-03 20:19:54 |
2 | 1722 | 0 | 2006-03-03 19:57:44 |
2 | 1873 | 4 | 2006-03-03 20:13:08 |
2 | 1907 | 4 | 2006-03-03 20:17:34 |
2 | 1923 | 0 | 2006-03-03 20:25:16 |
2 | 1957 | 3 | 2006-03-03 20:02:28 |
2 | 1968 | 1 | 2006-03-03 19:57:30 |
2 | 2028 | 4 | 2006-03-03 19:57:20 |
2 | 2081 | 1 | 2006-03-03 19:57:37 |
2 | 2083 | 4 | 2006-03-03 20:26:21 |
2 | 2115 | 3 | 2006-03-03 20:22:00 |
2 | 2138 | 4 | 2006-03-03 20:14:59 |
2 | 2139 | 4 | 2006-03-03 20:13:54 |
2 | 2150 | 5 | 2006-03-03 20:33:28 |
2 | 2194 | 5 | 2006-03-03 19:54:45 |
2 | 2268 | 4 | 2006-03-03 20:16:13 |
2 | 2273 | 2 | 2006-03-03 20:02:39 |
2 | 2294 | 4 | 2006-03-03 20:14:39 |
2 | 2324 | 1 | 2006-03-03 20:28:46 |
2 | 2355 | 4 | 2006-03-03 20:12:07 |
2 | 2359 | 5 | 2006-03-03 20:23:43 |
2 | 2406 | 2 | 2006-03-03 19:54:07 |
2 | 2470 | 5 | 2006-03-03 19:56:27 |
2 | 2496 | 4 | 2006-03-03 20:01:24 |
2 | 2501 | 4 | 2006-03-03 20:16:32 |
2 | 2571 | 5 | 2006-03-03 20:12:23 |
2 | 2617 | 4 | 2006-03-03 19:54:34 |
2 | 2640 | 5 | 2006-03-03 19:53:39 |
2 | 2643 | 0 | 2006-03-03 20:02:10 |
2 | 2694 | 4 | 2006-03-03 20:01:48 |
2 | 2720 | 0 | 2006-03-03 20:02:07 |
2 | 2745 | 5 | 2006-03-03 20:14:49 |
2 | 2761 | 0 | 2006-03-03 20:24:32 |
2 | 2762 | 4 | 2006-03-03 19:57:03 |
2 | 2797 | 1 | 2006-03-03 19:51:49 |
2 | 2918 | 4 | 2006-03-03 20:20:14 |
2 | 2987 | 0 | 2006-03-03 20:31:34 |
2 | 3098 | 3 | 2006-03-03 20:17:29 |
2 | 3105 | 4 | 2006-03-03 20:20:24 |
2 | 3107 | 3 | 2006-03-03 20:00:48 |
2 | 3114 | 4 | 2006-03-03 20:10:34 |
2 | 3148 | 2 | 2006-03-03 20:26:01 |
2 | 3175 | 3 | 2006-03-03 20:21:28 |
2 | 3360 | 5 | 2006-03-03 20:18:28 |
2 | 3396 | 4 | 2006-03-03 20:28:31 |
2 | 3479 | 2 | 2006-03-03 20:00:18 |
2 | 3510 | 4 | 2006-03-03 20:00:05 |
2 | 3578 | 5 | 2006-03-03 19:56:43 |
2 | 3793 | 5 | 2006-03-03 20:11:22 |
2 | 3889 | 2 | 2006-03-03 20:07:45 |
2 | 3916 | 3 | 2006-03-03 20:00:27 |
2 | 3948 | 3 | 2006-03-03 19:56:38 |
2 | 3994 | 3 | 2006-03-03 20:13:46 |
2 | 4016 | 5 | 2006-03-03 20:21:42 |
2 | 4019 | 3 | 2006-03-03 20:10:07 |
2 | 4022 | 5 | 2006-03-03 19:57:07 |
2 | 4023 | 3 | 2006-03-03 20:27:31 |
2 | 4103 | 4 | 2006-03-03 20:30:31 |
2 | 4299 | 4 | 2006-03-03 19:59:51 |
2 | 4306 | 4 | 2006-03-03 20:11:08 |
2 | 4535 | 3 | 2006-03-03 20:17:04 |
2 | 4571 | 1 | 2006-03-03 19:59:44 |
2 | 4720 | 4 | 2006-03-03 20:14:10 |
2 | 4857 | 1 | 2006-03-03 19:59:38 |
2 | 4874 | 4 | 2006-03-03 20:30:48 |
2 | 4886 | 5 | 2006-03-03 19:54:29 |
2 | 4896 | 5 | 2006-03-03 20:10:46 |
2 | 4963 | 4 | 2006-03-03 20:11:55 |
2 | 4993 | 5 | 2006-03-03 20:20:01 |
2 | 4995 | 5 | 2006-03-03 20:11:50 |
2 | 5010 | 2 | 2006-03-03 20:21:00 |
2 | 5103 | 5 | 2006-03-03 20:18:38 |
2 | 5349 | 5 | 2006-03-03 20:11:04 |
2 | 5418 | 5 | 2006-03-03 20:10:43 |
2 | 5445 | 3 | 2006-03-03 19:53:52 |
2 | 5574 | 3 | 2006-03-03 20:06:43 |
2 | 5816 | 5 | 2006-03-03 19:59:10 |
2 | 5952 | 5 | 2006-03-03 19:52:08 |
2 | 5955 | 4 | 2006-03-03 20:20:29 |
2 | 6156 | 2 | 2006-03-03 20:06:07 |
2 | 6157 | 3 | 2006-03-03 19:59:30 |
2 | 6213 | 2 | 2006-03-03 20:06:16 |
2 | 6287 | 2 | 2006-03-03 20:06:21 |
2 | 6311 | 5 | 2006-03-03 20:21:03 |
2 | 6333 | 5 | 2006-03-03 20:10:21 |
2 | 6539 | 5 | 2006-03-03 20:16:49 |
2 | 6565 | 3 | 2006-03-03 20:16:58 |
2 | 6753 | 3 | 2006-03-03 20:06:02 |
2 | 6879 | 5 | 2006-03-03 20:20:51 |
2 | 6947 | 4 | 2006-03-03 20:25:29 |
2 | 7004 | 2 | 2006-03-03 20:05:51 |
2 | 7007 | 0 | 2006-03-03 20:05:47 |
2 | 7075 | 5 | 2006-03-03 20:18:56 |
2 | 7090 | 2 | 2006-03-03 20:32:27 |
2 | 7143 | 5 | 2006-03-03 20:10:13 |
2 | 7153 | 5 | 2006-03-03 20:12:59 |
2 | 7162 | 0 | 2006-03-03 20:26:57 |
2 | 7386 | 4 | 2006-03-03 20:10:31 |
2 | 7624 | 3 | 2006-03-03 20:23:30 |
2 | 8010 | 5 | 2006-03-03 20:26:43 |
2 | 8360 | 4 | 2006-03-03 20:11:14 |
2 | 8368 | 5 | 2006-03-03 20:11:11 |
2 | 8636 | 5 | 2006-03-03 20:12:02 |
2 | 8665 | 4 | 2006-03-03 20:12:17 |
2 | 8958 | 2 | 2006-03-03 20:23:59 |
2 | 8961 | 4 | 2006-03-03 19:59:06 |
2 | 8970 | 5 | 2006-03-03 20:21:08 |
2 | 27821 | 4 | 2006-03-03 20:05:26 |
2 | 30749 | 5 | 2006-03-03 20:29:38 |
2 | 30848 | 0 | 2006-03-03 20:29:29 |
2 | 31923 | 3 | 2006-03-03 20:13:59 |
2 | 33166 | 0 | 2006-03-03 20:28:19 |
2 | 33493 | 4 | 2006-03-03 20:12:43 |
2 | 33660 | 5 | 2006-03-03 20:16:10 |
2 | 33794 | 5 | 2006-03-03 20:10:40 |
2 | 34162 | 0 | 2006-03-03 20:05:17 |
2 | 35836 | 0 | 2006-03-03 20:24:09 |
2 | 36527 | 3 | 2006-03-03 20:23:02 |
2 | 40815 | 5 | 2006-03-03 20:10:09 |
3 | 1 | 4 | 2015-08-13 13:23:35 |
3 | 29 | 4 | 2017-01-18 15:56:07 |
3 | 32 | 4 | 2015-08-13 14:03:55 |
3 | 50 | 5 | 2015-08-13 13:59:51 |
3 | 111 | 4 | 2017-01-18 15:37:29 |
3 | 172 | 4 | 2015-08-13 14:07:51 |
3 | 173 | 3 | 2015-08-13 14:07:49 |
3 | 214 | 5 | 2017-01-18 15:38:08 |
3 | 260 | 4 | 2015-08-13 13:23:59 |
3 | 293 | 5 | 2017-01-18 15:38:32 |
3 | 296 | 5 | 2015-08-13 14:01:16 |
3 | 318 | 4 | 2015-08-13 13:27:04 |
3 | 356 | 4 | 2015-08-13 13:23:19 |
3 | 442 | 3 | 2015-08-13 14:07:47 |
3 | 480 | 2 | 2015-08-13 13:23:39 |
3 | 527 | 4 | 2015-08-13 13:27:16 |
3 | 541 | 5 | 2015-08-13 14:03:45 |
3 | 589 | 4 | 2015-08-13 14:04:17 |
3 | 593 | 4 | 2015-08-13 13:23:23 |
3 | 741 | 5 | 2017-01-18 15:36:48 |
3 | 745 | 5 | 2015-08-13 14:01:07 |
3 | 778 | 5 | 2017-01-18 15:37:22 |
3 | 780 | 3 | 2015-08-13 14:04:27 |
3 | 858 | 5 | 2015-08-13 13:59:49 |
3 | 912 | 4 | 2015-08-13 14:00:08 |
3 | 913 | 4 | 2015-08-13 14:01:27 |
3 | 924 | 5 | 2015-08-13 14:03:58 |
3 | 1089 | 4 | 2017-01-18 15:34:14 |
3 | 1127 | 3 | 2015-08-13 14:05:25 |
3 | 1148 | 5 | 2015-08-13 14:00:52 |
3 | 1196 | 4 | 2015-08-13 13:27:07 |
3 | 1198 | 3 | 2015-08-13 13:27:11 |
3 | 1200 | 4 | 2015-08-13 14:04:10 |
3 | 1201 | 4 | 2015-08-13 14:01:57 |
3 | 1206 | 4 | 2016-01-27 14:13:41 |
3 | 1208 | 4 | 2016-01-27 14:13:51 |
3 | 1210 | 4 | 2015-08-13 13:27:22 |
3 | 1213 | 5 | 2017-01-18 15:42:36 |
3 | 1214 | 4 | 2015-08-13 14:04:00 |
3 | 1217 | 5 | 2015-08-13 14:00:55 |
3 | 1221 | 5 | 2015-08-13 13:59:53 |
3 | 1222 | 4 | 2017-01-18 15:45:39 |
3 | 1240 | 4 | 2015-08-13 14:04:12 |
3 | 1252 | 5 | 2017-01-18 15:38:58 |
3 | 1270 | 3 | 2015-08-13 13:23:31 |
3 | 1274 | 4 | 2019-08-18 00:40:19 |
3 | 1320 | 3 | 2015-08-13 14:07:03 |
3 | 1356 | 4 | 2015-08-13 14:06:00 |
3 | 1527 | 4 | 2015-08-13 14:03:52 |
3 | 1584 | 4 | 2015-08-13 14:04:37 |
3 | 1653 | 5 | 2015-08-13 14:03:51 |
3 | 1676 | 3 | 2015-08-13 14:06:06 |
3 | 1682 | 4 | 2015-08-13 14:12:05 |
3 | 1732 | 4 | 2019-08-18 01:31:23 |
3 | 1748 | 4 | 2015-08-13 14:04:57 |
3 | 1882 | 2 | 2015-08-13 14:12:07 |
3 | 1909 | 4 | 2015-08-13 14:12:03 |
3 | 1960 | 4 | 2019-08-18 01:12:46 |
3 | 2019 | 5 | 2015-08-13 14:00:41 |
3 | 2021 | 4 | 2019-08-18 00:50:49 |
3 | 2105 | 3 | 2015-08-13 14:06:03 |
3 | 2329 | 5 | 2015-08-13 14:01:03 |
3 | 2542 | 4 | 2017-01-18 16:19:12 |
3 | 2571 | 4 | 2015-08-13 13:23:41 |
3 | 2628 | 4 | 2015-08-13 14:04:29 |
3 | 2641 | 3 | 2015-08-13 14:11:46 |
3 | 2858 | 5 | 2015-08-13 14:01:14 |
3 | 2938 | 4 | 2017-01-18 15:44:00 |
3 | 2959 | 5 | 2015-08-13 14:00:17 |
3 | 3091 | 4 | 2017-01-18 15:44:22 |
3 | 3156 | 4 | 2015-08-13 14:05:58 |
3 | 3285 | 3 | 2015-08-13 13:38:02 |
3 | 3300 | 4 | 2015-08-13 13:35:28 |
3 | 3301 | 4 | 2015-08-13 13:36:15 |
3 | 3328 | 3 | 2017-01-18 15:42:10 |
3 | 3408 | 3 | 2019-08-18 00:56:13 |
3 | 3452 | 3 | 2015-08-13 13:41:20 |
3 | 3471 | 4 | 2015-08-13 14:05:33 |
3 | 3484 | 3 | 2015-08-13 13:50:59 |
3 | 3527 | 4 | 2015-08-13 14:06:09 |
3 | 3534 | 3 | 2015-08-13 13:39:40 |
3 | 3535 | 4 | 2015-08-13 13:34:37 |
3 | 3578 | 4 | 2015-08-13 13:30:19 |
3 | 3646 | 2 | 2015-08-13 13:48:53 |
3 | 3702 | 4 | 2015-08-13 14:09:52 |
3 | 3730 | 4 | 2017-01-18 15:49:09 |
3 | 3744 | 4 | 2015-08-13 13:41:39 |
3 | 3745 | 3 | 2015-08-13 14:09:54 |
3 | 3751 | 4 | 2019-08-18 00:56:04 |
3 | 3753 | 3 | 2015-08-13 13:32:07 |
3 | 3755 | 3 | 2019-08-18 00:56:44 |
3 | 3785 | 3 | 2015-08-13 13:34:29 |
3 | 3793 | 4 | 2015-08-13 13:30:29 |
3 | 3798 | 3 | 2015-08-13 13:36:52 |
3 | 3825 | 2 | 2015-08-13 13:41:57 |
3 | 3827 | 2 | 2015-08-13 13:38:43 |
3 | 3863 | 3 | 2015-08-13 13:34:42 |
3 | 3879 | 3 | 2015-08-13 13:58:17 |
3 | 3948 | 3 | 2019-08-18 00:55:39 |
3 | 3968 | 3 | 2019-08-18 01:05:00 |
3 | 3969 | 4 | 2015-08-13 13:38:07 |
3 | 3977 | 2 | 2019-08-18 00:56:09 |
3 | 3979 | 2 | 2015-08-13 13:45:05 |
3 | 3980 | 4 | 2015-08-13 13:43:54 |
3 | 3986 | 3 | 2019-08-18 01:03:02 |
3 | 3988 | 3 | 2019-08-18 00:59:04 |
3 | 3991 | 2 | 2015-08-13 13:55:20 |
3 | 3993 | 4 | 2015-08-13 13:48:19 |
3 | 3994 | 4 | 2015-08-13 13:32:21 |
3 | 3996 | 4 | 2015-08-13 13:30:33 |
3 | 3999 | 3 | 2015-08-13 13:44:06 |
3 | 4011 | 4 | 2017-01-18 15:36:06 |
3 | 4018 | 3 | 2015-08-13 13:34:31 |
3 | 4019 | 4 | 2015-08-13 13:37:41 |
3 | 4022 | 4 | 2015-08-13 13:31:32 |
3 | 4023 | 4 | 2015-08-13 13:39:22 |
3 | 4025 | 2 | 2015-08-13 13:33:48 |
3 | 4027 | 4 | 2015-08-13 13:31:10 |
3 | 4034 | 4 | 2019-08-18 00:56:19 |
3 | 4069 | 3 | 2019-08-18 01:04:35 |
3 | 4148 | 3 | 2019-08-18 00:57:45 |
3 | 4167 | 3 | 2015-08-13 13:55:37 |
3 | 4226 | 4 | 2015-08-13 13:30:27 |
3 | 4232 | 3 | 2015-08-13 13:42:14 |
3 | 4234 | 3 | 2015-08-13 13:56:51 |
3 | 4246 | 3 | 2015-08-13 13:32:42 |
3 | 4262 | 4 | 2019-08-18 01:31:12 |
3 | 4306 | 4 | 2015-08-13 13:30:24 |
3 | 4308 | 3 | 2015-08-13 13:33:12 |
3 | 4340 | 2 | 2015-08-13 13:56:42 |
3 | 4343 | 3 | 2015-08-13 13:40:42 |
3 | 4344 | 4 | 2016-01-27 14:18:59 |
3 | 4366 | 3 | 2015-08-13 13:49:00 |
3 | 4367 | 3 | 2015-08-13 13:35:20 |
3 | 4368 | 2 | 2015-08-13 13:53:52 |
3 | 4369 | 4 | 2015-08-13 13:36:29 |
3 | 4383 | 4 | 2019-08-18 00:50:03 |
3 | 4388 | 3 | 2015-08-13 13:42:59 |
3 | 4447 | 2 | 2015-08-13 13:34:20 |
3 | 4448 | 4 | 2019-08-18 01:06:22 |
3 | 4571 | 3 | 2015-08-13 14:06:59 |
3 | 4643 | 4 | 2015-08-13 13:34:48 |
3 | 4701 | 3 | 2015-08-13 13:37:59 |
3 | 4718 | 2 | 2019-08-18 00:57:23 |
3 | 4776 | 4 | 2019-08-18 00:57:16 |
3 | 4816 | 3 | 2015-08-13 13:35:17 |
3 | 4844 | 4 | 2015-08-13 13:49:40 |
3 | 4866 | 4 | 2015-08-13 13:57:17 |
3 | 4874 | 3 | 2015-08-13 13:37:13 |
3 | 4886 | 4 | 2015-08-13 13:30:40 |
3 | 4887 | 3 | 2015-08-13 13:50:13 |
3 | 4901 | 4 | 2015-08-13 13:38:16 |
3 | 4958 | 3 | 2019-08-18 01:08:48 |
3 | 4963 | 4 | 2015-08-13 13:30:48 |
3 | 4975 | 3 | 2015-08-13 14:05:29 |
3 | 4979 | 4 | 2015-08-13 13:32:31 |
3 | 4992 | 3 | 2015-08-13 13:45:36 |
3 | 4993 | 4 | 2015-08-13 13:27:26 |
3 | 4995 | 4 | 2015-08-13 13:30:59 |
3 | 5004 | 4 | 2017-01-18 15:42:13 |
3 | 5013 | 4 | 2015-08-13 13:37:03 |
3 | 5014 | 4 | 2015-08-13 13:44:52 |
3 | 5108 | 3 | 2015-08-13 13:54:51 |
3 | 5218 | 4 | 2015-08-13 13:32:53 |
3 | 5219 | 3 | 2015-08-13 13:40:38 |
3 | 5225 | 4 | 2015-08-13 13:40:00 |
3 | 5254 | 3 | 2015-08-13 13:39:35 |
3 | 5266 | 3 | 2019-08-18 00:58:09 |
3 | 5291 | 5 | 2015-08-13 14:00:59 |
3 | 5293 | 3 | 2015-08-13 13:50:44 |
3 | 5313 | 2 | 2019-08-18 01:08:31 |
3 | 5349 | 4 | 2015-08-13 13:30:55 |
3 | 5364 | 3 | 2015-08-13 13:53:38 |
3 | 5377 | 3 | 2015-08-13 13:34:08 |
3 | 5378 | 3 | 2019-08-18 00:55:28 |
3 | 5388 | 3 | 2015-08-13 13:37:16 |
3 | 5400 | 4 | 2015-08-13 13:43:12 |
3 | 5418 | 5 | 2015-08-13 13:31:04 |
3 | 5445 | 3 | 2015-08-13 13:30:42 |
3 | 5449 | 2 | 2015-08-13 13:45:03 |
3 | 5459 | 3 | 2015-08-13 14:10:11 |
3 | 5479 | 3 | 2015-08-13 13:56:17 |
3 | 5502 | 3 | 2015-08-13 14:07:06 |
3 | 5507 | 3 | 2019-08-18 01:02:33 |
3 | 5528 | 3 | 2015-08-13 13:40:36 |
3 | 5574 | 4 | 2019-08-18 01:02:42 |
3 | 5630 | 3 | 2015-08-13 13:39:08 |
3 | 5669 | 3 | 2015-08-13 13:32:51 |
3 | 5679 | 3 | 2015-08-13 13:33:51 |
3 | 5782 | 4 | 2017-01-18 15:46:15 |
3 | 5785 | 2 | 2015-08-13 13:45:49 |
3 | 5810 | 3 | 2019-08-18 00:59:10 |
3 | 5816 | 3 | 2015-08-13 13:31:51 |
3 | 5853 | 3 | 2015-08-13 14:12:12 |
3 | 5872 | 4 | 2015-08-13 13:38:31 |
3 | 5900 | 3 | 2019-08-18 01:16:23 |
3 | 5903 | 4 | 2015-08-13 13:35:58 |
3 | 5944 | 3 | 2015-08-13 14:06:32 |
3 | 5945 | 4 | 2015-08-13 13:38:18 |
3 | 5952 | 4 | 2015-08-13 13:30:16 |
3 | 5954 | 4 | 2019-08-18 01:03:56 |
3 | 5956 | 4 | 2015-08-13 13:36:16 |
3 | 5959 | 4 | 2015-08-13 13:56:01 |
3 | 5989 | 4 | 2019-08-18 00:55:05 |
3 | 5991 | 4 | 2015-08-13 13:34:50 |
3 | 6016 | 4 | 2015-08-13 13:32:04 |
3 | 6059 | 3 | 2015-08-13 13:48:36 |
3 | 6155 | 3 | 2015-08-13 13:43:03 |
3 | 6156 | 3 | 2015-08-13 13:48:39 |
3 | 6213 | 3 | 2015-08-13 13:57:46 |
3 | 6281 | 2 | 2019-08-18 00:59:22 |
3 | 6283 | 4 | 2015-08-13 13:48:22 |
3 | 6287 | 3 | 2015-08-13 13:41:44 |
3 | 6323 | 4 | 2015-08-13 13:40:18 |
3 | 6333 | 4 | 2015-08-13 14:05:11 |
3 | 6365 | 4 | 2019-08-18 00:55:15 |
3 | 6373 | 3 | 2015-08-13 13:34:00 |
3 | 6377 | 4 | 2015-08-13 13:30:44 |
3 | 6378 | 3 | 2015-08-13 13:33:46 |
3 | 6383 | 4 | 2015-08-13 13:42:40 |
3 | 6440 | 4 | 2017-01-18 15:42:52 |
3 | 6482 | 2 | 2015-08-13 13:58:24 |
3 | 6502 | 3 | 2015-08-13 13:33:32 |
3 | 6534 | 3 | 2015-08-13 13:39:20 |
3 | 6535 | 2 | 2015-08-13 13:52:03 |
3 | 6537 | 3 | 2019-08-18 00:56:50 |
3 | 6539 | 4 | 2015-08-13 13:30:31 |
3 | 6541 | 3 | 2015-08-13 13:40:25 |
3 | 6548 | 3 | 2019-08-18 01:05:43 |
3 | 6550 | 3 | 2015-08-13 13:52:57 |
3 | 6564 | 3 | 2015-08-13 13:47:08 |
3 | 6586 | 3 | 2015-08-13 13:49:51 |
3 | 6595 | 3 | 2015-08-13 13:48:59 |
3 | 6708 | 4 | 2019-08-18 01:02:51 |
3 | 6711 | 4 | 2019-08-18 00:55:46 |
3 | 6754 | 4 | 2015-08-13 13:41:30 |
3 | 6863 | 3 | 2015-08-13 13:34:15 |
3 | 6870 | 4 | 2019-08-18 00:56:55 |
3 | 6873 | 3 | 2015-08-13 13:49:33 |
3 | 6874 | 4 | 2015-08-13 13:31:02 |
3 | 6879 | 4 | 2019-08-18 01:09:07 |
3 | 6934 | 4 | 2015-08-13 13:32:33 |
3 | 6952 | 3 | 2015-08-13 13:52:52 |
3 | 7090 | 4 | 2015-08-13 13:36:08 |
3 | 7143 | 2 | 2019-08-18 00:56:27 |
3 | 7147 | 4 | 2015-08-13 13:32:28 |
3 | 7149 | 4 | 2015-08-13 13:47:23 |
3 | 7153 | 4 | 2015-08-13 13:30:17 |
3 | 7154 | 4 | 2015-08-13 13:52:12 |
3 | 7163 | 3 | 2015-08-13 13:49:26 |
3 | 7293 | 3 | 2015-08-13 13:37:11 |
3 | 7325 | 2 | 2015-08-13 13:44:22 |
3 | 7346 | 3 | 2015-08-13 13:51:21 |
3 | 7347 | 4 | 2015-08-13 13:48:43 |
3 | 7361 | 4 | 2015-08-13 13:30:57 |
3 | 7373 | 4 | 2015-08-13 13:37:55 |
3 | 7438 | 4 | 2015-08-13 13:31:27 |
3 | 7439 | 3 | 2015-08-13 13:57:09 |
3 | 7445 | 3 | 2019-08-18 00:58:58 |
3 | 7454 | 3 | 2015-08-13 13:42:42 |
3 | 7458 | 4 | 2015-08-13 13:37:19 |
3 | 8360 | 3 | 2019-08-18 00:55:59 |
3 | 8361 | 2 | 2015-08-13 13:37:24 |
3 | 8368 | 4 | 2015-08-13 13:32:01 |
3 | 8370 | 4 | 2017-01-18 15:44:57 |
3 | 8371 | 4 | 2015-08-13 13:44:11 |
3 | 8528 | 3 | 2017-01-18 15:34:41 |
3 | 8529 | 3 | 2015-08-13 13:38:40 |
3 | 8641 | 4 | 2015-08-13 13:38:20 |
3 | 8644 | 4 | 2015-08-13 14:04:34 |
3 | 8665 | 4 | 2015-08-13 13:31:55 |
3 | 8666 | 3 | 2015-08-13 13:57:52 |
3 | 8781 | 3 | 2015-08-13 13:48:46 |
3 | 8783 | 4 | 2019-08-18 01:01:01 |
3 | 8798 | 3 | 2015-08-13 13:35:05 |
3 | 8810 | 3 | 2015-08-13 13:42:50 |
3 | 8861 | 3 | 2019-08-18 01:08:00 |
3 | 8865 | 4 | 2015-08-13 13:45:26 |
3 | 8874 | 4 | 2015-08-13 13:33:02 |
3 | 8958 | 4 | 2015-08-13 13:42:10 |
3 | 8961 | 4 | 2015-08-13 13:31:07 |
3 | 8965 | 4 | 2015-08-13 13:55:42 |
3 | 8969 | 3 | 2015-08-13 13:51:36 |
3 | 8983 | 4 | 2019-08-18 01:05:12 |
3 | 8984 | 4 | 2015-08-13 13:37:37 |
3 | 8985 | 3 | 2015-08-13 13:51:32 |
3 | 27134 | 4 | 2019-08-18 00:49:54 |
3 | 27660 | 4 | 2019-08-18 01:07:15 |
3 | 27706 | 3 | 2019-08-18 01:04:16 |
3 | 27728 | 5 | 2017-01-18 15:46:02 |
3 | 27773 | 5 | 2017-01-18 16:21:46 |
3 | 27793 | 3 | 2015-08-13 14:11:18 |
3 | 27803 | 4 | 2015-08-13 13:58:05 |
3 | 27808 | 3 | 2015-08-13 13:51:16 |
3 | 30707 | 4 | 2015-08-13 13:34:04 |
3 | 30793 | 3 | 2015-08-13 13:27:59 |
3 | 30825 | 3 | 2015-08-13 13:41:08 |
3 | 31184 | 4 | 2015-08-13 14:06:34 |
3 | 31221 | 3 | 2019-08-18 01:21:10 |
3 | 31685 | 3 | 2015-08-13 13:41:35 |
3 | 31696 | 4 | 2015-08-13 13:41:06 |
3 | 31804 | 4 | 2019-08-18 00:52:56 |
3 | 31878 | 4 | 2019-08-18 01:04:44 |
3 | 32587 | 4 | 2016-01-27 14:14:08 |
3 | 33004 | 4 | 2015-08-13 13:37:44 |
3 | 33166 | 4 | 2015-08-13 13:34:53 |
3 | 33493 | 4 | 2015-08-13 13:32:37 |
3 | 33615 | 4 | 2019-08-18 00:59:47 |
3 | 33679 | 3 | 2015-08-13 13:28:25 |
3 | 33794 | 4 | 2015-08-13 13:31:22 |
3 | 34048 | 3 | 2016-01-27 14:14:45 |
3 | 34150 | 3 | 2015-08-13 13:42:17 |
3 | 34162 | 3 | 2015-08-13 13:28:14 |
3 | 34319 | 3 | 2015-08-13 13:41:16 |
3 | 34405 | 4 | 2015-08-13 14:04:09 |
3 | 34437 | 4 | 2016-01-27 14:16:14 |
3 | 35836 | 3 | 2016-01-27 14:14:48 |
3 | 36519 | 4 | 2015-08-13 13:55:59 |
3 | 36529 | 4 | 2016-01-27 14:14:54 |
3 | 37386 | 4 | 2015-08-13 14:05:27 |
3 | 37727 | 3 | 2015-08-13 13:55:46 |
3 | 37729 | 4 | 2015-08-13 14:13:52 |
3 | 37741 | 4 | 2015-08-13 13:44:24 |
3 | 39435 | 3 | 2019-08-18 01:20:31 |
3 | 40583 | 4 | 2016-01-27 14:16:15 |
3 | 40815 | 4 | 2016-01-27 14:14:22 |
3 | 40819 | 4 | 2015-08-13 13:36:47 |
3 | 41566 | 4 | 2015-08-13 13:28:11 |
3 | 41569 | 3 | 2016-01-27 14:15:04 |
3 | 42738 | 4 | 2015-08-13 13:52:22 |
3 | 43928 | 2 | 2015-08-13 14:06:24 |
3 | 44022 | 4 | 2015-08-13 13:48:33 |
3 | 44191 | 4 | 2016-01-27 14:14:06 |
3 | 45186 | 3 | 2016-01-27 14:15:45 |
3 | 45447 | 3 | 2015-08-13 13:38:22 |
3 | 45499 | 4 | 2015-08-13 13:36:46 |
3 | 45501 | 3 | 2015-08-13 13:58:28 |
3 | 45517 | 4 | 2016-01-27 14:15:23 |
3 | 45666 | 3 | 2019-08-18 01:19:51 |
3 | 45672 | 3 | 2015-08-13 13:50:05 |
3 | 45722 | 4 | 2016-01-27 14:14:26 |
3 | 46335 | 3 | 2019-08-18 01:14:46 |
3 | 46578 | 4 | 2015-08-13 13:32:39 |
3 | 46965 | 3 | 2015-08-13 13:54:40 |
3 | 46970 | 3 | 2015-08-13 13:49:47 |
3 | 46972 | 3 | 2015-08-13 13:47:16 |
3 | 47200 | 4 | 2015-08-13 13:52:28 |
3 | 47610 | 4 | 2016-01-27 14:14:43 |
3 | 48385 | 3 | 2016-01-27 14:14:37 |
3 | 48394 | 4 | 2015-08-13 13:32:55 |
3 | 48516 | 5 | 2015-08-13 14:02:06 |
3 | 48738 | 4 | 2015-08-13 13:41:55 |
3 | 48774 | 4 | 2015-08-13 13:34:17 |
3 | 48780 | 4 | 2015-08-13 13:33:34 |
3 | 49272 | 4 | 2015-08-13 13:32:25 |
3 | 49274 | 4 | 2015-08-13 13:55:08 |
3 | 49278 | 3 | 2015-08-13 13:47:31 |
3 | 49530 | 3 | 2015-08-13 13:28:18 |
3 | 49822 | 4 | 2019-08-18 01:22:52 |
3 | 50068 | 4 | 2015-08-13 13:50:10 |
3 | 50872 | 4 | 2015-08-13 13:33:43 |
3 | 51255 | 4 | 2015-08-13 13:36:01 |
3 | 51662 | 4 | 2016-01-27 14:14:14 |
3 | 51935 | 4 | 2015-08-13 13:51:30 |
3 | 52604 | 4 | 2015-08-13 13:55:22 |
3 | 52722 | 3 | 2015-08-13 14:13:50 |
3 | 52950 | 4 | 2019-08-18 00:50:29 |
3 | 53121 | 3 | 2015-08-13 13:50:16 |
3 | 53125 | 4 | 2016-01-27 14:15:01 |
3 | 53129 | 4 | 2019-08-18 01:17:14 |
3 | 53464 | 3 | 2019-08-18 00:46:56 |
3 | 53972 | 4 | 2015-08-13 13:41:51 |
3 | 53996 | 4 | 2015-08-13 13:37:33 |
3 | 54001 | 4 | 2015-08-13 13:37:00 |
3 | 54286 | 4 | 2015-08-13 13:33:09 |
3 | 54503 | 3 | 2015-08-13 13:28:23 |
3 | 54648 | 3 | 2019-08-18 01:20:14 |
3 | 54997 | 4 | 2015-08-13 13:39:47 |
3 | 55232 | 4 | 2015-08-13 13:58:08 |
3 | 55765 | 4 | 2016-01-27 14:15:08 |
3 | 55805 | 4 | 2019-08-18 01:24:42 |
3 | 55820 | 5 | 2016-01-27 14:14:19 |
3 | 56145 | 3 | 2015-08-13 14:09:10 |
3 | 56156 | 3 | 2019-08-18 01:22:17 |
3 | 56171 | 4 | 2015-08-13 13:53:50 |
3 | 56174 | 3 | 2015-08-13 13:36:22 |
3 | 56587 | 4 | 2015-08-13 13:54:06 |
3 | 56782 | 4 | 2015-08-13 13:38:37 |
3 | 56949 | 3 | 2019-08-18 00:47:05 |
3 | 57368 | 2 | 2015-08-13 14:05:39 |
3 | 57528 | 3 | 2019-08-18 01:11:51 |
3 | 57640 | 4 | 2015-08-13 13:50:03 |
3 | 57669 | 3 | 2019-08-18 00:57:30 |
3 | 58025 | 3 | 2015-08-13 13:51:42 |
3 | 58559 | 5 | 2015-08-13 13:27:19 |
3 | 59315 | 4 | 2015-08-13 13:32:24 |
3 | 59369 | 3 | 2015-08-13 13:39:09 |
3 | 59501 | 3 | 2019-08-18 01:09:10 |
3 | 59615 | 3 | 2016-01-27 14:15:26 |
3 | 59784 | 4 | 2016-01-27 14:15:11 |
3 | 59900 | 3 | 2019-08-18 01:15:09 |
3 | 60040 | 3 | 2016-01-27 14:15:51 |
3 | 60069 | 4 | 2015-08-13 13:32:09 |
3 | 60072 | 3 | 2015-08-13 13:48:24 |
3 | 60074 | 4 | 2015-08-13 13:44:15 |
3 | 60126 | 3 | 2015-08-13 13:54:41 |
3 | 60684 | 4 | 2015-08-13 14:04:18 |
3 | 60756 | 3 | 2015-08-13 13:55:34 |
3 | 60760 | 3 | 2017-01-18 16:18:28 |
3 | 61132 | 3 | 2015-08-13 13:43:47 |
3 | 61160 | 4 | 2015-08-13 14:09:13 |
3 | 61248 | 2 | 2019-08-18 01:21:05 |
3 | 61323 | 4 | 2015-08-13 13:41:37 |
3 | 61350 | 3 | 2017-01-18 16:18:18 |
3 | 62849 | 4 | 2015-08-13 13:57:50 |
3 | 62999 | 3 | 2019-08-18 01:16:29 |
3 | 63062 | 4 | 2015-08-13 13:53:38 |
3 | 63072 | 4 | 2015-08-13 13:56:29 |
3 | 63113 | 4 | 2015-08-13 13:44:13 |
3 | 63859 | 4 | 2015-08-13 13:54:28 |
3 | 63876 | 4 | 2015-08-13 13:48:01 |
3 | 64030 | 3 | 2019-08-18 01:22:03 |
3 | 64614 | 4 | 2015-08-13 13:36:30 |
3 | 64839 | 3 | 2015-08-13 13:42:01 |
3 | 64957 | 4 | 2015-08-13 13:39:53 |
3 | 65514 | 4 | 2019-08-18 01:11:15 |
3 | 65682 | 4 | 2017-01-18 16:17:46 |
3 | 66097 | 4 | 2015-08-13 13:44:09 |
3 | 67255 | 4 | 2015-08-13 13:45:21 |
3 | 67923 | 3 | 2019-08-18 01:15:25 |
3 | 68157 | 4 | 2017-04-21 14:39:13 |
3 | 68319 | 4 | 2015-08-13 13:44:49 |
3 | 68358 | 4 | 2015-08-13 14:04:05 |
3 | 68554 | 4 | 2015-08-13 13:52:20 |
3 | 68791 | 3 | 2015-08-13 13:50:54 |
3 | 68793 | 3 | 2019-08-18 01:16:32 |
3 | 68952 | 2 | 2019-08-18 01:18:04 |
3 | 69122 | 4 | 2017-04-21 14:39:20 |
3 | 69481 | 3 | 2015-08-13 13:41:27 |
3 | 69526 | 4 | 2015-08-13 13:51:34 |
3 | 69640 | 4 | 2015-08-13 13:59:15 |
3 | 69844 | 3 | 2017-04-21 14:39:26 |
3 | 70286 | 4 | 2015-08-13 13:34:34 |
3 | 70293 | 4 | 2015-08-13 13:58:02 |
3 | 70305 | 3 | 2015-08-13 14:09:24 |
3 | 70336 | 3 | 2019-08-18 01:19:29 |
3 | 71057 | 4 | 2015-08-13 13:56:07 |
3 | 71156 | 4 | 2019-08-18 01:16:01 |
3 | 71464 | 4 | 2019-08-18 01:15:40 |
3 | 71530 | 3 | 2017-01-18 16:16:56 |
3 | 71535 | 4 | 2015-08-13 13:37:30 |
3 | 72011 | 4 | 2015-08-13 13:42:53 |
3 | 72209 | 3 | 2017-01-18 16:16:36 |
3 | 72378 | 2 | 2015-08-13 13:47:58 |
3 | 72641 | 4 | 2015-08-13 13:49:20 |
3 | 72701 | 3 | 2017-01-18 16:16:22 |
3 | 72998 | 4 | 2015-08-13 14:03:43 |
3 | 73017 | 3 | 2015-08-13 13:37:05 |
3 | 73268 | 4 | 2015-08-13 14:11:38 |
3 | 73321 | 4 | 2015-08-13 13:52:05 |
3 | 73323 | 4 | 2019-08-18 01:23:19 |
3 | 74458 | 4 | 2017-04-21 14:39:18 |
3 | 74789 | 4 | 2019-08-18 00:59:42 |
3 | 76077 | 2 | 2017-01-18 16:15:09 |
3 | 76093 | 4 | 2015-08-13 13:38:04 |
3 | 76251 | 4 | 2019-08-18 00:57:08 |
3 | 77561 | 4 | 2015-08-13 13:40:40 |
3 | 78469 | 3 | 2015-08-13 13:57:37 |
3 | 78499 | 4 | 2015-08-13 13:36:54 |
3 | 79091 | 4 | 2019-08-18 01:26:52 |
3 | 79132 | 5 | 2015-08-13 14:01:13 |
3 | 79224 | 2 | 2019-08-18 01:21:54 |
3 | 79293 | 4 | 2015-08-13 13:55:06 |
3 | 79695 | 3 | 2015-08-13 13:56:10 |
3 | 80363 | 3 | 2017-01-18 16:14:37 |
3 | 80463 | 4 | 2017-04-21 14:39:21 |
3 | 81229 | 4 | 2015-08-13 13:54:23 |
3 | 81537 | 3 | 2019-08-18 01:16:55 |
3 | 81564 | 4 | 2019-08-18 01:04:09 |
3 | 81591 | 5 | 2017-04-21 14:39:24 |
3 | 81834 | 3 | 2019-08-18 01:27:10 |
3 | 81845 | 4 | 2015-08-13 13:36:58 |
3 | 82095 | 2 | 2017-01-18 16:14:15 |
3 | 82202 | 3 | 2019-08-18 01:20:03 |
3 | 82461 | 4 | 2015-08-13 13:52:47 |
3 | 83349 | 3 | 2019-08-18 01:21:44 |
3 | 83613 | 3 | 2017-01-18 16:11:58 |
3 | 84152 | 4 | 2015-08-13 14:09:34 |
3 | 84772 | 3 | 2017-01-18 16:13:08 |
3 | 84954 | 4 | 2015-08-13 13:53:06 |
3 | 85020 | 3 | 2019-08-18 01:21:28 |
3 | 85056 | 3 | 2015-08-13 14:06:38 |
3 | 85131 | 2 | 2017-01-18 16:13:03 |
3 | 85261 | 3 | 2015-08-13 14:09:39 |
3 | 85414 | 4 | 2015-08-13 13:42:46 |
3 | 86332 | 4 | 2015-08-13 13:45:15 |
3 | 86644 | 3 | 2019-08-18 01:14:54 |
3 | 86880 | 4 | 2015-08-13 13:56:59 |
3 | 86911 | 3 | 2019-08-18 01:07:11 |
3 | 87232 | 4 | 2015-08-13 13:41:47 |
3 | 87306 | 3 | 2015-08-13 14:05:16 |
3 | 87430 | 3 | 2017-01-18 16:12:05 |
3 | 87520 | 3 | 2017-01-18 16:12:09 |
3 | 87876 | 3 | 2019-08-18 01:25:57 |
3 | 88125 | 3 | 2019-08-18 01:27:03 |
3 | 88140 | 3 | 2019-08-18 00:58:15 |
3 | 88405 | 3 | 2019-08-18 01:09:31 |
3 | 88744 | 4 | 2015-08-13 14:05:49 |
3 | 89492 | 4 | 2015-08-13 13:49:14 |
3 | 89745 | 4 | 2015-08-13 13:37:35 |
3 | 89753 | 4 | 2019-08-18 01:17:27 |
3 | 90249 | 3 | 2017-01-18 16:11:30 |
3 | 90866 | 3 | 2019-08-18 01:07:05 |
3 | 91500 | 3 | 2015-08-13 13:41:32 |
3 | 91529 | 4 | 2017-04-21 14:39:16 |
3 | 91542 | 4 | 2015-08-13 13:47:06 |
3 | 91630 | 4 | 2015-08-13 13:51:18 |
3 | 91658 | 4 | 2015-08-13 13:47:37 |
3 | 91974 | 3 | 2019-08-18 01:24:31 |
3 | 91976 | 3 | 2019-08-18 01:23:13 |
3 | 93363 | 4 | 2015-08-13 14:05:52 |
3 | 93805 | 3 | 2015-08-13 14:10:44 |
3 | 94018 | 2 | 2019-08-18 01:26:05 |
3 | 94677 | 3 | 2019-08-18 01:13:28 |
3 | 94777 | 3 | 2017-01-18 16:10:47 |
3 | 94864 | 4 | 2015-08-13 13:49:42 |
3 | 95441 | 3 | 2019-08-18 01:04:03 |
3 | 95510 | 4 | 2015-08-13 13:51:02 |
3 | 95875 | 4 | 2015-08-13 14:05:43 |
3 | 96079 | 3 | 2019-08-18 01:12:51 |
3 | 96610 | 4 | 2015-08-13 13:44:36 |
3 | 96691 | 3 | 2017-01-18 16:10:26 |
3 | 96737 | 4 | 2015-08-13 14:05:41 |
3 | 96861 | 3 | 2019-08-18 01:20:38 |
3 | 97225 | 3 | 2019-08-18 01:18:19 |
3 | 97306 | 4 | 2019-08-18 01:10:43 |
3 | 97921 | 3 | 2015-08-13 13:47:52 |
3 | 97923 | 3 | 2019-08-18 01:13:56 |
3 | 98809 | 4 | 2015-08-13 13:43:44 |
3 | 99112 | 3 | 2019-08-18 01:10:01 |
3 | 99114 | 4 | 2015-08-13 13:37:57 |
3 | 101864 | 4 | 2015-08-13 14:04:58 |
3 | 102125 | 4 | 2015-08-13 14:08:57 |
3 | 102407 | 4 | 2019-08-18 01:05:39 |
3 | 102445 | 4 | 2015-08-13 13:49:57 |
3 | 102686 | 3 | 2019-08-18 01:20:23 |
3 | 102716 | 3 | 2019-08-18 01:19:00 |
3 | 102880 | 3 | 2015-08-13 14:07:13 |
3 | 102903 | 3 | 2019-08-18 01:01:22 |
3 | 103075 | 3 | 2017-01-18 16:09:05 |
3 | 103141 | 3 | 2019-08-18 01:06:45 |
3 | 103228 | 3 | 2017-01-18 16:08:37 |
3 | 103249 | 3 | 2017-01-18 16:09:01 |
3 | 103253 | 4 | 2017-01-18 16:08:10 |
3 | 103384 | 3 | 2019-08-18 01:23:57 |
3 | 103772 | 3 | 2017-01-18 16:08:31 |
3 | 103810 | 3 | 2019-08-18 01:22:43 |
3 | 104241 | 3 | 2019-08-18 01:19:17 |
3 | 104243 | 4 | 2015-08-13 14:08:52 |
3 | 104841 | 4 | 2015-08-13 13:44:59 |
3 | 105213 | 3 | 2019-08-18 01:22:10 |
3 | 106002 | 4 | 2015-08-13 14:10:28 |
3 | 106072 | 4 | 2015-08-13 14:07:42 |
3 | 106100 | 4 | 2015-08-13 13:58:31 |
3 | 106487 | 3 | 2015-08-13 13:49:12 |
3 | 106489 | 3 | 2019-08-18 01:27:06 |
3 | 106782 | 4 | 2015-08-13 13:47:39 |
3 | 106920 | 4 | 2015-08-13 13:50:02 |
3 | 107348 | 3 | 2019-08-18 01:22:35 |
3 | 107406 | 4 | 2015-08-13 14:10:30 |
3 | 108190 | 3 | 2015-08-13 14:07:35 |
3 | 108932 | 4 | 2015-08-13 13:55:56 |
3 | 108945 | 3 | 2017-01-18 16:07:29 |
3 | 109374 | 4 | 2015-08-13 13:45:13 |
3 | 109487 | 4 | 2015-08-13 13:28:37 |
3 | 109578 | 3 | 2019-08-18 01:25:44 |
3 | 110102 | 4 | 2015-08-13 13:54:04 |
3 | 110407 | 3 | 2017-01-18 16:09:15 |
3 | 110730 | 4 | 2017-01-18 16:06:50 |
3 | 111113 | 2 | 2019-08-18 01:19:37 |
3 | 111360 | 4 | 2015-08-13 14:06:52 |
3 | 111362 | 4 | 2015-08-13 13:51:03 |
3 | 111443 | 3 | 2019-08-18 01:25:28 |
3 | 111659 | 4 | 2019-08-18 01:09:21 |
3 | 111759 | 4 | 2015-08-13 14:04:39 |
3 | 112138 | 3 | 2019-08-18 01:08:16 |
3 | 112171 | 3 | 2019-08-18 01:15:05 |
3 | 112370 | 3 | 2017-01-18 16:06:23 |
3 | 112552 | 5 | 2015-08-13 13:28:33 |
3 | 112556 | 5 | 2015-08-13 13:45:17 |
3 | 112623 | 4 | 2015-08-13 14:05:06 |
3 | 112852 | 4 | 2015-08-13 13:44:03 |
3 | 113345 | 4 | 2017-01-18 16:04:33 |
3 | 114180 | 3 | 2017-01-18 16:05:46 |
3 | 114847 | 4 | 2017-01-18 16:05:21 |
3 | 114935 | 4 | 2015-08-13 14:06:50 |
3 | 115569 | 4 | 2015-08-13 14:14:06 |
3 | 115617 | 4 | 2015-08-13 13:54:10 |
3 | 115713 | 4 | 2015-08-13 14:04:32 |
3 | 116797 | 4 | 2015-08-13 13:28:42 |
3 | 116823 | 3 | 2017-01-18 16:05:13 |
3 | 116897 | 4 | 2015-08-13 13:28:47 |
3 | 117529 | 3 | 2015-08-13 14:06:48 |
3 | 117533 | 4 | 2015-08-13 14:14:06 |
3 | 120466 | 3 | 2015-08-13 14:06:45 |
3 | 122882 | 3 | 2015-08-13 13:28:50 |
3 | 122886 | 3 | 2016-01-27 14:16:45 |
3 | 122892 | 3 | 2017-01-18 16:04:16 |
3 | 122896 | 3 | 2019-08-18 01:23:40 |
3 | 122900 | 4 | 2015-08-13 14:14:16 |
3 | 122906 | 4 | 2019-08-18 01:09:18 |
3 | 122912 | 3 | 2019-08-18 01:01:33 |
3 | 122914 | 3 | 2019-08-18 00:47:25 |
3 | 122918 | 4 | 2019-08-18 01:02:04 |
3 | 122920 | 3 | 2017-01-18 16:01:27 |
3 | 122922 | 4 | 2019-08-18 01:02:11 |
3 | 122924 | 3 | 2017-01-18 16:01:15 |
3 | 129354 | 3 | 2019-08-18 01:19:47 |
3 | 130490 | 3 | 2017-01-18 16:03:57 |
3 | 130634 | 3 | 2019-08-18 01:16:40 |
3 | 132046 | 3 | 2015-08-13 14:07:09 |
3 | 134130 | 4 | 2016-01-27 14:16:35 |
3 | 134853 | 4 | 2015-08-13 13:28:39 |
3 | 135133 | 3 | 2017-01-18 16:02:12 |
3 | 135143 | 3 | 2019-08-18 01:07:02 |
3 | 135536 | 3 | 2019-08-18 01:10:14 |
3 | 135569 | 3 | 2019-08-18 01:11:28 |
3 | 136020 | 3 | 2019-08-18 01:09:02 |
3 | 136449 | 5 | 2017-01-18 15:36:02 |
3 | 136469 | 4 | 2017-01-18 15:38:22 |
3 | 136864 | 3 | 2019-08-18 01:11:47 |
3 | 139385 | 4 | 2019-08-18 00:59:36 |
3 | 139644 | 4 | 2019-08-18 01:06:50 |
3 | 140956 | 3 | 2019-08-18 01:18:09 |
3 | 142509 | 3 | 2017-01-18 16:02:42 |
3 | 143385 | 4 | 2019-08-18 01:08:04 |
3 | 148626 | 4 | 2019-08-18 00:59:14 |
3 | 148855 | 4 | 2017-01-18 16:03:31 |
3 | 149406 | 4 | 2019-08-18 01:23:29 |
3 | 151763 | 4 | 2017-01-18 15:40:09 |
3 | 158238 | 3 | 2019-08-18 01:09:39 |
3 | 158966 | 3 | 2019-08-18 01:21:17 |
3 | 159093 | 3 | 2019-08-18 01:14:49 |
3 | 164179 | 4 | 2017-04-21 14:39:45 |
3 | 166528 | 4 | 2017-01-18 16:00:25 |
3 | 166635 | 3 | 2019-08-18 01:10:10 |
3 | 168252 | 4 | 2017-04-21 14:39:46 |
3 | 168612 | 4 | 2019-08-18 01:24:01 |
3 | 171763 | 3 | 2019-08-18 01:07:44 |
3 | 175197 | 3 | 2019-08-18 00:51:33 |
3 | 176101 | 3 | 2019-08-18 01:22:39 |
3 | 176371 | 4 | 2019-08-18 01:04:51 |
3 | 179819 | 3 | 2019-08-18 01:09:51 |
3 | 182823 | 3 | 2019-08-18 00:51:50 |
3 | 187541 | 3 | 2019-08-18 01:11:33 |
3 | 187593 | 4 | 2019-08-18 01:06:54 |
4 | 1 | 3 | 2019-11-16 22:44:12 |
4 | 260 | 3 | 2019-11-16 21:06:55 |
4 | 296 | 4 | 2019-11-16 21:14:58 |
4 | 541 | 4 | 2019-11-16 22:45:03 |
4 | 589 | 4 | 2019-11-16 21:17:22 |
4 | 780 | 2 | 2019-11-16 21:04:03 |
4 | 924 | 4 | 2019-11-16 22:21:20 |
4 | 1036 | 4 | 2019-11-16 21:52:49 |
4 | 1080 | 3 | 2019-11-16 22:40:05 |
4 | 1136 | 4 | 2019-11-19 20:25:01 |
4 | 1196 | 4 | 2019-11-16 21:11:41 |
4 | 1197 | 4 | 2019-11-16 23:07:08 |
4 | 1198 | 4 | 2019-11-16 21:11:05 |
4 | 1200 | 3 | 2019-11-16 22:45:11 |
4 | 1201 | 3 | 2019-11-16 22:28:26 |
4 | 1210 | 3 | 2019-11-16 21:03:45 |
4 | 1214 | 2 | 2019-11-16 21:04:50 |
4 | 1220 | 4 | 2019-11-16 21:18:07 |
4 | 1265 | 4 | 2019-11-16 22:25:55 |
4 | 1270 | 2 | 2019-11-16 22:43:45 |
4 | 1278 | 4 | 2019-11-16 22:40:01 |
4 | 1288 | 3 | 2019-11-16 22:43:28 |
4 | 1291 | 4 | 2019-11-16 21:06:17 |
4 | 1527 | 3 | 2019-11-16 21:16:27 |
4 | 1580 | 4 | 2019-11-16 21:02:22 |
4 | 1610 | 3 | 2019-11-16 21:03:52 |
4 | 1732 | 4 | 2019-11-16 22:33:10 |
4 | 1907 | 4 | 2019-11-16 21:09:03 |
4 | 2019 | 4 | 2019-11-16 22:37:32 |
4 | 2028 | 4 | 2019-11-16 21:05:24 |
4 | 2115 | 3 | 2019-11-16 22:47:38 |
4 | 2571 | 4 | 2019-11-16 21:10:19 |
4 | 2716 | 4 | 2019-11-16 22:46:57 |
4 | 2791 | 4 | 2019-11-16 22:43:24 |
4 | 2918 | 3 | 2019-11-16 22:37:53 |
4 | 2951 | 3 | 2019-11-16 22:48:19 |
4 | 2985 | 4 | 2019-11-16 21:06:01 |
4 | 2993 | 3 | 2019-11-16 22:31:11 |
4 | 3033 | 3 | 2019-11-16 22:49:02 |
4 | 3039 | 3 | 2019-11-16 22:47:04 |
4 | 3114 | 3 | 2019-11-16 22:40:42 |
4 | 3175 | 4 | 2019-11-16 22:38:33 |
4 | 3624 | 2 | 2019-11-16 22:00:19 |
4 | 3671 | 4 | 2019-11-16 22:43:19 |
4 | 3681 | 3 | 2019-11-16 22:29:40 |
4 | 3751 | 3 | 2019-11-16 21:57:48 |
4 | 3793 | 1 | 2019-11-19 20:19:49 |
4 | 3827 | 3 | 2019-11-16 21:35:52 |
4 | 4308 | 3 | 2019-11-16 21:21:13 |
4 | 4709 | 2 | 2019-11-16 22:14:19 |
4 | 4816 | 4 | 2019-11-16 21:29:24 |
4 | 4886 | 3 | 2019-11-16 21:26:20 |
4 | 4963 | 4 | 2019-11-16 22:58:13 |
4 | 4974 | 4 | 2019-11-16 21:51:10 |
4 | 4993 | 4 | 2019-11-16 21:02:03 |
4 | 5110 | 4 | 2019-11-16 21:39:35 |
4 | 5219 | 2 | 2019-11-16 21:33:18 |
4 | 5299 | 2 | 2019-11-16 21:58:42 |
4 | 5418 | 3 | 2019-11-16 21:20:09 |
4 | 5444 | 4 | 2019-11-16 21:02:35 |
4 | 5618 | 5 | 2019-11-16 21:07:13 |
4 | 5903 | 4 | 2019-11-16 21:29:52 |
4 | 5952 | 4 | 2019-11-19 19:57:52 |
4 | 6156 | 3 | 2019-11-16 21:40:06 |
4 | 6377 | 3 | 2019-11-16 21:26:24 |
4 | 6539 | 4 | 2019-11-16 21:03:02 |
4 | 6550 | 3 | 2019-11-16 21:51:28 |
4 | 6863 | 4 | 2019-11-16 21:58:07 |
4 | 6874 | 4 | 2019-11-16 21:03:38 |
4 | 6947 | 4 | 2019-11-16 21:31:59 |
4 | 7143 | 3 | 2019-11-16 21:16:52 |
4 | 7153 | 4 | 2019-11-16 21:02:46 |
4 | 7324 | 3 | 2019-11-16 21:45:18 |
4 | 7373 | 4 | 2019-11-16 21:30:31 |
4 | 7438 | 3 | 2019-11-16 21:03:56 |
4 | 7451 | 4 | 2019-11-16 21:51:41 |
4 | 7569 | 3 | 2019-11-16 22:30:31 |
4 | 8641 | 4 | 2019-11-16 21:17:10 |
4 | 8665 | 3 | 2019-11-16 20:57:14 |
4 | 8874 | 4 | 2019-11-16 21:10:41 |
4 | 8914 | 4 | 2019-11-16 21:22:05 |
4 | 8961 | 5 | 2019-11-16 21:01:32 |
4 | 33794 | 3 | 2019-11-16 21:03:21 |
4 | 34048 | 2 | 2019-11-16 21:29:48 |
4 | 34405 | 3 | 2019-11-16 21:04:35 |
4 | 38038 | 3 | 2019-11-16 21:09:12 |
4 | 44191 | 2 | 2019-11-16 21:15:11 |
4 | 44193 | 3 | 2019-11-16 21:45:54 |
4 | 44665 | 5 | 2019-11-16 21:10:28 |
4 | 45431 | 2 | 2019-11-16 21:41:28 |
Showing the first 1000 rows.
"]}}],"execution_count":0},{"cell_type":"code","source":["#Negative Sampling\n#Original dataset with implicit interaction records can be binarized into one that has only 1 or 0, indicating if a user has interacted with an item, respectively. \"Negative sampling\" is a technique that samples negative feedback. Similar to the aggregation techniques, negative feedback cna be defined differently in different scenarios. In this case, for example, we can regard the items that a user has not interacted as those that the user does not like. This may be a strong assumption in many user cases, but it is reasonable to build a model when the interaction times between user and item are not that many\n\n\n# A)The following generates data that contains already existing interactions between users and items\nprint(\"Data with existing Interractions\")\ndata_A = data.copy()\ndata_A = data_A[['userId', 'movieId']].copy()\ndata_A['Feedback'] = 1\ndata_A = data_A.drop_duplicates()\n\n# B)Negative Sampling. Create dummy data for all with Feedback=0, join with the data of Feedback=1 set for existing interractions, fill rest with 0\ndata_B = data.copy()\nusers = data_B['userId'].unique()\nitems = data_B['movieId'].unique()\ninteraction_lst = []\nfor user in users:\n for item in items:\n interaction_lst.append([user, item, 0])\n\ndata_B_all_dummy = pd.DataFrame(data=interaction_lst, columns=[\"userId\", \"movieId\", \"FeedbackAll\"])\ndata_B_all_dummy\ndata_B_ns = pd.merge(data_B_all_dummy, data_A, on=['userId', 'movieId'], how='outer').fillna(0).drop('FeedbackAll', axis=1)\ndisplay(data_B_ns.head())"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"2e8664c4-2aff-43ab-b4d3-3e6fbe630223"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"data":"Error while obtaining a new communication channel","errorSummary":"ConnectException: Connection refused (Connection refused)","metadata":{},"errorTraceType":"raw","type":"ipynbError","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nError while obtaining a new communication channel"]}}],"execution_count":0},{"cell_type":"markdown","source":["1. Random Split: this is the simplest way to split the data, it randomly assigns entries to either the train set or the test set based on the allocation ratio desired.\n2. Chronological Split: in many cases accounting for temporal variations when evaluating your model can provide more realistic measures of performance. This approach will split the train and test set based on timestamps by user or item.\n3. Stratified Split: it may be preferable to ensure the same set of users or items are in the train and test sets, this method of splitting will ensure that is the case."],"metadata":{"application/vnd.databricks.v1+cell":{"title":"3.Split Data","showTitle":true,"inputWidgets":{},"nuid":"f2d3d108-2a1f-47a1-9a61-37096cc313f2"}}},{"cell_type":"code","source":["''' 1.Random split\nRandom split simply takes in a data set and outputs the splits of the data, given the split ratios.\n'''\nprint(\"******************************Random split******************************\\n\")\ndata_train_random, data_validate_random, data_test_random = python_random_split(data, ratio=[0.6, 0.2, 0.2])\nprint(\"Size of Train: \",data_train_random.shape[0])\nprint(\"Size of Validate: \",data_validate_random.shape[0])\nprint(\"Size of Test: \",data_test_random.shape[0])\n\n''' 2. Chronological split\n* Chronogically splitting method takes in a dataset and splits it on timestamp.\n* Suppose Recommender is to recommend fashion products to customers. It makes sense that evaluation of the recommender considers time-dependency of customer purchases, as apparently, tastes of the customers in fashion items may be drifting over time. In this case, a chronologically splitting should be used.\n* Chronogical splitting can be either by \"user\" or \"item\". For example, if it is by \"user\" and the splitting ratio is 0.7, it means that first 70% ratings for each user in the data will be put into one split while the other 30% is in another. It is worth noting that a chronological split is not \"random\" because splitting is timestamp-dependent.\n'''\nprint(\"******************************Chronological split******************************\\n\")\ndata_train_chrono, data_test_chrono = python_chrono_split(\n data, ratio=0.7, filter_by=\"user\",\n col_user=COL_USER, col_item=COL_ITEM, col_timestamp=COL_TIMESTAMP\n)\nprint(\"The last 10 rows of the train data:\")\ndisplay(data_train_chrono[data_train_chrono[COL_USER] == 1].tail(10))\nprint('The first 10 rows of the test data:Timestamps of train data are all precedent to those in test data')\ndisplay(data_test_chrono[data_test_chrono[COL_USER] == 1].head(10))\n\n'''\nA min-rating filter is applied to data before it is split by using chronological splitter. The reason of doing this is that, for multi-split, there should be sufficient number of ratings for user/item in the data.\nFor example, the following means splitting only applies to users that have at least 10 ratings.\nNumber of rows in the yielded splits of data may not sum to the original ones as users with fewer than 10 ratings are filtered out in the splitting.\n'''\n\n#data_train_chrono, data_test_chrono = python_chrono_split(\n# data, filter_by=\"user\", min_rating=10, ratio=0.7,\n# col_user=COL_USER, col_item=COL_ITEM, col_timestamp=COL_TIMESTAMP\n#)\n#print(data_train.shape[0] + data_test.shape[0], data.shape[0])\n\n\n''' 3. Stratified split\n* This split is stratified so that the same set of users or items will appear in both training and testing data sets.\n* Similar to chronological splitter, filter_by and min_rating_filter also apply to the stratified splitter.\n* The following example shows the split of the sample data with a ratio of 0.7, and for each user there should be at least 10 ratings.\nNumber of rows in the yielded splits of data may not sum to the original ones as users with fewer than 10 ratings are filtered out in the splitting.\n'''\nprint(\"******************************Stratified split******************************\\n\")\ndata_train_stratify, data_test_stratify = python_stratified_split(\n data, filter_by=\"user\", min_rating=10, ratio=0.7,\n col_user=COL_USER, col_item=COL_ITEM\n)\nprint(\"Size of Train: \",data_train_stratify.shape[0])\nprint(\"Size of Validate: \",data_validate_stratify.shape[0])\nprint(\"Size of Test: \",data_test_stratify.shape[0])"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"6662eaa8-73f4-4062-be01-45e783df1d8b"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"******************************Random split******************************\n\nSize of Train: 15000057\nSize of Validate: 5000019\nSize of Test: 5000019\n******************************Chronological split******************************\n\nThe last 10 rows of the train data:\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n******************************Random split******************************\n\nSize of Train: 15000057\nSize of Validate: 5000019\nSize of Test: 5000019\n******************************Chronological split******************************\n\nThe last 10 rows of the train data:\n
"]}},{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"overflow":false,"datasetInfos":[],"data":[[1,4703,4,"2006-05-17 12:33:43"],[1,31956,3,"2006-05-17 14:53:30"],[1,5147,4,"2006-05-17 14:54:14"],[1,8786,4,"2006-05-17 14:57:33"],[1,1260,3,"2006-05-17 14:57:37"],[1,2351,4,"2006-05-17 14:59:17"],[1,7940,4,"2006-05-17 14:59:27"],[1,7209,4,"2006-05-17 14:59:46"],[1,8685,1,"2006-05-17 15:00:23"],[1,7820,2,"2006-05-17 15:00:50"]],"plotOptions":{"displayType":"table","customPlotOptions":{},"pivotColumns":null,"pivotAggregation":null,"xColumns":null,"yColumns":null},"columnCustomDisplayInfos":{},"aggType":"","isJsonSchema":true,"removedWidgets":[],"aggSchema":[],"schema":[{"name":"userId","type":"\"long\"","metadata":"{}"},{"name":"movieId","type":"\"long\"","metadata":"{}"},{"name":"rating","type":"\"long\"","metadata":"{}"},{"name":"timestamp","type":"\"string\"","metadata":"{}"}],"aggError":"","aggData":[],"addedWidgets":{},"metadata":{},"dbfsResultPath":null,"type":"table","aggOverflow":false,"aggSeriesLimitReached":false,"arguments":{}}},"output_type":"display_data","data":{"text/html":["userId | movieId | rating | timestamp |
---|
1 | 4703 | 4 | 2006-05-17 12:33:43 |
1 | 31956 | 3 | 2006-05-17 14:53:30 |
1 | 5147 | 4 | 2006-05-17 14:54:14 |
1 | 8786 | 4 | 2006-05-17 14:57:33 |
1 | 1260 | 3 | 2006-05-17 14:57:37 |
1 | 2351 | 4 | 2006-05-17 14:59:17 |
1 | 7940 | 4 | 2006-05-17 14:59:27 |
1 | 7209 | 4 | 2006-05-17 14:59:46 |
1 | 8685 | 1 | 2006-05-17 15:00:23 |
1 | 7820 | 2 | 2006-05-17 15:00:50 |
"]}},{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"The first 10 rows of the test data:Timestamps of train data are all precedent to those in test data\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nThe first 10 rows of the test data:Timestamps of train data are all precedent to those in test data\n
"]}},{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"overflow":false,"datasetInfos":[],"data":[[1,7937,3,"2006-05-17 15:00:55"],[1,7938,2,"2006-05-17 15:01:03"],[1,8405,3,"2006-05-17 15:01:35"],[1,4325,5,"2006-05-17 15:02:02"],[1,2632,5,"2006-05-17 15:04:08"],[1,1217,3,"2006-05-17 15:05:26"],[1,8729,3,"2006-05-17 15:07:32"],[1,5912,3,"2006-05-17 15:11:38"],[1,5767,5,"2006-05-17 15:12:09"],[1,665,5,"2006-05-17 15:13:40"]],"plotOptions":{"displayType":"table","customPlotOptions":{},"pivotColumns":null,"pivotAggregation":null,"xColumns":null,"yColumns":null},"columnCustomDisplayInfos":{},"aggType":"","isJsonSchema":true,"removedWidgets":[],"aggSchema":[],"schema":[{"name":"userId","type":"\"long\"","metadata":"{}"},{"name":"movieId","type":"\"long\"","metadata":"{}"},{"name":"rating","type":"\"long\"","metadata":"{}"},{"name":"timestamp","type":"\"string\"","metadata":"{}"}],"aggError":"","aggData":[],"addedWidgets":{},"metadata":{},"dbfsResultPath":null,"type":"table","aggOverflow":false,"aggSeriesLimitReached":false,"arguments":{}}},"output_type":"display_data","data":{"text/html":["userId | movieId | rating | timestamp |
---|
1 | 7937 | 3 | 2006-05-17 15:00:55 |
1 | 7938 | 2 | 2006-05-17 15:01:03 |
1 | 8405 | 3 | 2006-05-17 15:01:35 |
1 | 4325 | 5 | 2006-05-17 15:02:02 |
1 | 2632 | 5 | 2006-05-17 15:04:08 |
1 | 1217 | 3 | 2006-05-17 15:05:26 |
1 | 8729 | 3 | 2006-05-17 15:07:32 |
1 | 5912 | 3 | 2006-05-17 15:11:38 |
1 | 5767 | 5 | 2006-05-17 15:12:09 |
1 | 665 | 5 | 2006-05-17 15:13:40 |
"]}},{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"25000095 25000095\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n25000095 25000095\n
"]}}],"execution_count":0}],"metadata":{"application/vnd.databricks.v1+notebook":{"notebookName":"1. Data Preparation","dashboards":[],"notebookMetadata":{"pythonIndentUnit":2},"language":"python","widgets":{"EnvType":{"nuid":"d0516f07-e996-4070-8371-8fb00d52a3f0","currentValue":"DEV","widgetInfo":{"widgetType":"text","name":"EnvType","defaultValue":"DEV","label":null,"options":{"widgetType":"text","validationRegex":null}}}},"notebookOrigID":1153725985288481}},"nbformat":4,"nbformat_minor":0}
diff --git a/Notebooks/Recommendation Engine/2.a. Modelling- Content or Item-Item Similarity.ipynb b/Notebooks/Recommendation Engine/2.a. Modelling- Content or Item-Item Similarity.ipynb
new file mode 100644
index 0000000..569a920
--- /dev/null
+++ b/Notebooks/Recommendation Engine/2.a. Modelling- Content or Item-Item Similarity.ipynb
@@ -0,0 +1 @@
+{"cells":[{"cell_type":"markdown","source":["## Content-Based Recommendation System\n\nContent-Based systems recommends items to the customer similar to previously high-rated items by the customer. It uses the features and properties of the item. From these properties, it can calculate the similarity between the items.\n\nIn a content-based recommendation system, first, we need to create a profile for each item, which represents the properties of those items. From the user profiles are inferred for a particular user. We use these user profiles to recommend the items to the users from the catalog."],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"7199f9dd-209e-4247-9ab2-20ff4a36ca8d"}}},{"cell_type":"code","source":["%scala\nval filepath1= \"abfss://.../mldata/MoviesDataRecommendation/movies_metadata.csv\"\nvar df1=spark.read.format(\"csv\").option(\"header\", \"true\").option(\"delimiter\", \",\").load(filepath1)\ndf1.createOrReplaceTempView(\"movies_metadata\")"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"1. Read Data","showTitle":true,"inputWidgets":{},"nuid":"79cb31c8-5992-42ad-8f3e-8ebad861b2cc"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[{"name":"df1","typeStr":"org.apache.spark.sql.DataFrame","schema":{"type":"struct","fields":[{"name":"adult","type":"string","nullable":true,"metadata":{}},{"name":"belongs_to_collection","type":"string","nullable":true,"metadata":{}},{"name":"budget","type":"string","nullable":true,"metadata":{}},{"name":"genres","type":"string","nullable":true,"metadata":{}},{"name":"homepage","type":"string","nullable":true,"metadata":{}},{"name":"id","type":"string","nullable":true,"metadata":{}},{"name":"imdb_id","type":"string","nullable":true,"metadata":{}},{"name":"original_language","type":"string","nullable":true,"metadata":{}},{"name":"original_title","type":"string","nullable":true,"metadata":{}},{"name":"overview","type":"string","nullable":true,"metadata":{}},{"name":"popularity","type":"string","nullable":true,"metadata":{}},{"name":"poster_path","type":"string","nullable":true,"metadata":{}},{"name":"production_companies","type":"string","nullable":true,"metadata":{}},{"name":"production_countries","type":"string","nullable":true,"metadata":{}},{"name":"release_date","type":"string","nullable":true,"metadata":{}},{"name":"revenue","type":"string","nullable":true,"metadata":{}},{"name":"runtime","type":"string","nullable":true,"metadata":{}},{"name":"spoken_languages","type":"string","nullable":true,"metadata":{}},{"name":"status","type":"string","nullable":true,"metadata":{}},{"name":"tagline","type":"string","nullable":true,"metadata":{}},{"name":"title","type":"string","nullable":true,"metadata":{}},{"name":"video","type":"string","nullable":true,"metadata":{}},{"name":"vote_average","type":"string","nullable":true,"metadata":{}},{"name":"vote_count","type":"string","nullable":true,"metadata":{}}]},"tableIdentifier":null}],"data":"filepath1: String = abfss://adlsstore@psinsightsadlsdev.dfs.core.windows.net/mldata/MoviesDataRecommendation/movies_metadata.csv\ndf1: org.apache.spark.sql.DataFrame = [adult: string, belongs_to_collection: string ... 22 more fields]\n
","removedWidgets":[],"addedWidgets":{},"metadata":{"isDbfsCommandResult":false},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nfilepath1: String = abfss://adlsstore@psinsightsadlsdev.dfs.core.windows.net/mldata/MoviesDataRecommendation/movies_metadata.csv\ndf1: org.apache.spark.sql.DataFrame = [adult: string, belongs_to_collection: string ... 22 more fields]\n
"]}}],"execution_count":0},{"cell_type":"code","source":["#Convert spark sql df to pyspark df\n\n#For memory saving mode: consider only 10 movies \ndf_pyspark_movies= spark.sql(\"\"\"select original_title,overview from movies_metadata\"\"\") \n\ndf_movies = df_pyspark_movies.toPandas()\n\n#persist for handy use\noutdir = '/dbfs/FileStore/df_movies_metadata.csv'\ndf_movies.to_csv(outdir, index=False)\n#input_dataframe = pd.read_csv(\"/dbfs/FileStore/Dataframe.csv\", header='infer')"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"b102338b-db22-4f35-b840-8244f7d5a565"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n"]}}],"execution_count":0},{"cell_type":"code","source":["import pandas as pd\ndf_movies_metadata = pd.read_csv(\"/dbfs/FileStore/df_movies_metadata.csv\", header='infer')\ndf_movies_metadata"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"6e54ef74-4be0-48cd-9762-f83a8ddf1b4c"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Out[10]:
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nOut[10]:
"]}},{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"\n\n
\n \n \n | \n original_title | \n overview | \n
\n \n \n \n 0 | \n Toy Story | \n Led by Woody, Andy's toys live happily in his ... | \n
\n \n 1 | \n Jumanji | \n When siblings Judy and Peter discover an encha... | \n
\n \n 2 | \n Grumpier Old Men | \n A family wedding reignites the ancient feud be... | \n
\n \n 3 | \n Waiting to Exhale | \n \"Cheated on, mistreated and stepped on, the wo... | \n
\n \n 4 | \n Father of the Bride Part II | \n Just when George Banks has recovered from his ... | \n
\n \n ... | \n ... | \n ... | \n
\n \n 45567 | \n رگ خواب | \n Rising and falling between a man and woman. | \n
\n \n 45568 | \n Siglo ng Pagluluwal | \n An artist struggles to finish his work while a... | \n
\n \n 45569 | \n Betrayal | \n When one of her hits goes wrong, a professiona... | \n
\n \n 45570 | \n Satana likuyushchiy | \n In a small town live two brothers, one a minis... | \n
\n \n 45571 | \n Queerama | \n 50 years after decriminalisation of homosexual... | \n
\n \n
\n
45572 rows × 2 columns
\n
","textData":null,"removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"htmlSandbox","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n\n
\n \n \n | \n original_title | \n overview | \n
\n \n \n \n 0 | \n Toy Story | \n Led by Woody, Andy's toys live happily in his ... | \n
\n \n 1 | \n Jumanji | \n When siblings Judy and Peter discover an encha... | \n
\n \n 2 | \n Grumpier Old Men | \n A family wedding reignites the ancient feud be... | \n
\n \n 3 | \n Waiting to Exhale | \n \"Cheated on, mistreated and stepped on, the wo... | \n
\n \n 4 | \n Father of the Bride Part II | \n Just when George Banks has recovered from his ... | \n
\n \n ... | \n ... | \n ... | \n
\n \n 45567 | \n رگ خواب | \n Rising and falling between a man and woman. | \n
\n \n 45568 | \n Siglo ng Pagluluwal | \n An artist struggles to finish his work while a... | \n
\n \n 45569 | \n Betrayal | \n When one of her hits goes wrong, a professiona... | \n
\n \n 45570 | \n Satana likuyushchiy | \n In a small town live two brothers, one a minis... | \n
\n \n 45571 | \n Queerama | \n 50 years after decriminalisation of homosexual... | \n
\n \n
\n
45572 rows × 2 columns
\n
"]}}],"execution_count":0},{"cell_type":"code","source":["#Now we will transform the overview column in the vector form so that we can compute similarity. Use the below code to convert it. We have used TFidfVectorizer for the same. \n#TfidfVectorizer – Transforms text to feature vectors that can be used as input to estimator. vocabulary_ Is a dictionary that converts each token (word) to feature index in the matrix, each unique token gets a feature index.\n#Check if any nulls then drop it\nprint(\"Drop NULLS as it cannot fit for TF-IDF transform:\\n\",df_movies_metadata.isnull().sum())\ndf_movies_metadata.dropna(inplace=True)\nprint(\"After NULLS dropped, checking NULL count:\\n\",df_movies_metadata.isnull().sum())\nfrom sklearn.feature_extraction.text import TfidfVectorizer\ntf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0, stop_words='english', lowercase=True)\nmatrix = tf.fit_transform(df_movies_metadata['overview'])\n#matrix\n\n\n#Now we are ready to compute cosine similarity to check what all movies are of the same content on the basis of the overview column that was present in the data set. \n#Get the similarity of each Movie(i in 0-n) with all other Movies(0-n)\nfrom sklearn.metrics.pairwise import linear_kernel\ncosine_similarities = linear_kernel(matrix,matrix)\n#cosine_similarities\n\n\n#Indexing all Movie titles\nmovie_title = df_movies_metadata['original_title']\nindices = pd.Series(df_movies_metadata.index, index=df_movies_metadata['original_title'])\n\n\n#Get the 'k_top' similar movies with passed movie 'original_title'\ndef movie_recommend(original_title,k_top):\n idx = indices[original_title]\n sim_scores = list(enumerate(cosine_similarities[idx]))\n sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)\n sim_scores = sim_scores[1:k_top+1]\n movie_indices = [i[0] for i in sim_scores]\n return movie_title.iloc[movie_indices]\n\nmovie_recommend('Toy Story',10)\n"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"2. Modelling","showTitle":true,"inputWidgets":{},"nuid":"68570b45-f4eb-41ce-849e-f817e441122c"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Drop NULLS as it cannot fit for TF-IDF transform:\n original_title 0\noverview 0\ndtype: int64\nAfter NULLS dropped, checking NULL count:\n original_title 0\noverview 0\ndtype: int64\nOut[12]: 3000 Toy Story 2\n20719 18 Fingers of Death!\n15370 Toy Story 3\n24573 Small Fry\n10313 The 40 Year Old Virgin\n23881 Andy Hardy's Blonde Trouble\n38568 Superstar: The Life and Times of Andy Warhol\n29268 Hot Splash\n42819 Andy Peters: Exclamation Mark Question Point\n39705 Ozzie\nName: original_title, dtype: object
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nDrop NULLS as it cannot fit for TF-IDF transform:\n original_title 0\noverview 0\ndtype: int64\nAfter NULLS dropped, checking NULL count:\n original_title 0\noverview 0\ndtype: int64\nOut[12]: 3000 Toy Story 2\n20719 18 Fingers of Death!\n15370 Toy Story 3\n24573 Small Fry\n10313 The 40 Year Old Virgin\n23881 Andy Hardy's Blonde Trouble\n38568 Superstar: The Life and Times of Andy Warhol\n29268 Hot Splash\n42819 Andy Peters: Exclamation Mark Question Point\n39705 Ozzie\nName: original_title, dtype: object
"]}}],"execution_count":0}],"metadata":{"application/vnd.databricks.v1+notebook":{"notebookName":"2.a. Modelling- Content or Item-Item Similarity","dashboards":[],"notebookMetadata":{"pythonIndentUnit":2},"language":"python","widgets":{"EnvType":{"nuid":"1355bab9-7522-4e99-a780-57639e54077b","currentValue":"DEV","widgetInfo":{"widgetType":"text","name":"EnvType","defaultValue":"DEV","label":null,"options":{"widgetType":"text","validationRegex":null}}}},"notebookOrigID":1153725985288632}},"nbformat":4,"nbformat_minor":0}
diff --git a/Notebooks/Recommendation Engine/2.b. Modeling- Collaborative or User-ItemSimilarity.ipynb b/Notebooks/Recommendation Engine/2.b. Modeling- Collaborative or User-ItemSimilarity.ipynb
new file mode 100644
index 0000000..aa18eab
--- /dev/null
+++ b/Notebooks/Recommendation Engine/2.b. Modeling- Collaborative or User-ItemSimilarity.ipynb
@@ -0,0 +1 @@
+{"cells":[{"cell_type":"markdown","source":["## Collaborative Filtering Based Recommendation System\n\nCollaborative filtering is based on the idea that similar people (based on the data) generally tend to like similar things. It predicts which item a user will like based on the item preferences of other similar users. \n\nCollaborative filtering uses a user-item matrix to generate recommendations. This matrix contains the values that indicate a user’s preference towards a given item. These values can represent either explicit feedback (direct user ratings) or implicit feedback (indirect user behavior such as listening, purchasing, watching)."],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"63a6986f-3912-41bb-8727-86f2687ec87d"}}},{"cell_type":"code","source":["# Meta data about data\nimport numpy as np\nimport pandas as pd\nimport sklearn\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nimport warnings\nwarnings.simplefilter(action='ignore', category=FutureWarning)\n\nratings = pd.read_csv(\"/dbfs/FileStore/df_ratings.csv\", header='infer')\ndisplay(ratings.head())\n\nmovies = pd.read_csv(\"/dbfs/FileStore/df_movies.csv\", header='infer')\ndisplay(movies.head())\n\nn_ratings = len(ratings)\nn_movies = len(ratings['movieId'].unique())\nn_users = len(ratings['userId'].unique())\n\nprint(f\"Number of ratings: {n_ratings}\")\nprint(f\"Number of unique movieId's: {n_movies}\")\nprint(f\"Number of unique users: {n_users}\")\nprint(f\"Average ratings per user: {round(n_ratings/n_users, 2)}\")\nprint(f\"Average ratings per movie: {round(n_ratings/n_movies, 2)}\")\n\nprint(\"Sample 10 User v/s the number of Movies they have rated:\\n\")\nuser_freq = ratings[['userId', 'movieId']].groupby('userId').count().reset_index()\nuser_freq.columns = ['userId', 'n_ratings']\nprint(user_freq.head(10))\n"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"1. Read Data","showTitle":true,"inputWidgets":{},"nuid":"5d98c23e-6ff3-45de-a7bc-91c1b81f3bb9"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"overflow":false,"datasetInfos":[],"data":[[1,296,5,1147880044],[1,306,3,1147868817],[1,307,5,1147868828],[1,665,5,1147878820],[1,899,3,1147868510]],"plotOptions":{"displayType":"table","customPlotOptions":{},"pivotColumns":null,"pivotAggregation":null,"xColumns":null,"yColumns":null},"columnCustomDisplayInfos":{},"aggType":"","isJsonSchema":true,"removedWidgets":[],"aggSchema":[],"schema":[{"name":"userId","type":"\"long\"","metadata":"{}"},{"name":"movieId","type":"\"long\"","metadata":"{}"},{"name":"rating","type":"\"long\"","metadata":"{}"},{"name":"timestamp","type":"\"long\"","metadata":"{}"}],"aggError":"","aggData":[],"addedWidgets":{},"metadata":{},"dbfsResultPath":null,"type":"table","aggOverflow":false,"aggSeriesLimitReached":false,"arguments":{}}},"output_type":"display_data","data":{"text/html":["userId | movieId | rating | timestamp |
---|
1 | 296 | 5 | 1147880044 |
1 | 306 | 3 | 1147868817 |
1 | 307 | 5 | 1147868828 |
1 | 665 | 5 | 1147878820 |
1 | 899 | 3 | 1147868510 |
"]}},{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"overflow":false,"datasetInfos":[],"data":[[1,"Toy Story (1995)","Adventure|Animation|Children|Comedy|Fantasy"],[2,"Jumanji (1995)","Adventure|Children|Fantasy"],[3,"Grumpier Old Men (1995)","Comedy|Romance"],[4,"Waiting to Exhale (1995)","Comedy|Drama|Romance"],[5,"Father of the Bride Part II (1995)","Comedy"]],"plotOptions":{"displayType":"table","customPlotOptions":{},"pivotColumns":null,"pivotAggregation":null,"xColumns":null,"yColumns":null},"columnCustomDisplayInfos":{},"aggType":"","isJsonSchema":true,"removedWidgets":[],"aggSchema":[],"schema":[{"name":"movieId","type":"\"long\"","metadata":"{}"},{"name":"title","type":"\"string\"","metadata":"{}"},{"name":"genres","type":"\"string\"","metadata":"{}"}],"aggError":"","aggData":[],"addedWidgets":{},"metadata":{},"dbfsResultPath":null,"type":"table","aggOverflow":false,"aggSeriesLimitReached":false,"arguments":{}}},"output_type":"display_data","data":{"text/html":["movieId | title | genres |
---|
1 | Toy Story (1995) | Adventure|Animation|Children|Comedy|Fantasy |
2 | Jumanji (1995) | Adventure|Children|Fantasy |
3 | Grumpier Old Men (1995) | Comedy|Romance |
4 | Waiting to Exhale (1995) | Comedy|Drama|Romance |
5 | Father of the Bride Part II (1995) | Comedy |
"]}},{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Number of ratings: 25000095\nNumber of unique movieId's: 59047\nNumber of unique users: 162541\nAverage ratings per user: 153.81\nAverage ratings per movie: 423.39\nSample 10 User v/s the number of Movies they have rated:\n\n userId n_ratings\n0 1 70\n1 2 184\n2 3 656\n3 4 242\n4 5 101\n5 6 26\n6 7 25\n7 8 155\n8 9 178\n9 10 53\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nNumber of ratings: 25000095\nNumber of unique movieId's: 59047\nNumber of unique users: 162541\nAverage ratings per user: 153.81\nAverage ratings per movie: 423.39\nSample 10 User v/s the number of Movies they have rated:\n\n userId n_ratings\n0 1 70\n1 2 184\n2 3 656\n3 4 242\n4 5 101\n5 6 26\n6 7 25\n7 8 155\n8 9 178\n9 10 53\n
"]}}],"execution_count":0},{"cell_type":"code","source":["# Now, we create user-item matrix using scipy csr matrix\n####################################################################################################################################################\nfrom scipy.sparse import csr_matrix\ndef create_matrix(df):\n\t\n\tN = len(df['userId'].unique())\n\tM = len(df['movieId'].unique())\n\t\n\t# Map Ids to indices (userId:Index pair, movierId:Index pair)\n\tuser_mapper = dict(zip(np.unique(df[\"userId\"]), list(range(N))))\n\tmovie_mapper = dict(zip(np.unique(df[\"movieId\"]), list(range(M))))\n\t\n\t# Map indices to IDs (Index:userId pair, Index:movierId pair)\n\tuser_inv_mapper = dict(zip(list(range(N)), np.unique(df[\"userId\"])))\n\tmovie_inv_mapper = dict(zip(list(range(M)), np.unique(df[\"movieId\"])))\n\t\n\tuser_index = [user_mapper[i] for i in df['userId']]\n\tmovie_index = [movie_mapper[i] for i in df['movieId']]\n\n\t#X= (Movies_i) X (User_j) --> (Ratings_ij) matrix\n X = csr_matrix((df[\"rating\"], (movie_index, user_index)), shape=(M, N))\n\t\n\treturn X, user_mapper, movie_mapper, user_inv_mapper, movie_inv_mapper\n####################################################################################################################################################\n\nX, user_mapper, movie_mapper, user_inv_mapper, movie_inv_mapper = create_matrix(ratings)\n\n\n#Find Similarity using KNN\n####################################################################################################################################################\nfrom sklearn.neighbors import NearestNeighbors\ndef find_similar_movies(movie_id, X, k, metric='cosine', show_distance=False):\n\t\n\tneighbour_ids = []\n\t\n\tmovie_ind = movie_mapper[movie_id]\n\tmovie_vec = X[movie_ind]\n\tk+=1\n\tkNN = NearestNeighbors(n_neighbors=k, algorithm=\"brute\", metric=metric)\n\tkNN.fit(X)\n\tmovie_vec = movie_vec.reshape(1,-1)\n\tneighbour = kNN.kneighbors(movie_vec, return_distance=show_distance)\n\tfor i in range(0,k):\n\t\tn = neighbour.item(i)\n\t\tneighbour_ids.append(movie_inv_mapper[n])\n\tneighbour_ids.pop(0) #Closest to itself hence exclude that\n\treturn neighbour_ids\n####################################################################################################################################################\n\nmovie_titles = dict(zip(movies['movieId'], movies['title']))\n\nmovie_id = 1 #Movies to find similar from- 'Toy Story'. It will return movies that the similar users(who have seen Toy Story) have watched\n\nsimilar_ids = find_similar_movies(movie_id, X, k=5)\nmovie_title = movie_titles[movie_id]\n\nprint(f\"Since you watched {movie_title}\")\nfor i in similar_ids:\n\tprint(movie_titles[i])\n"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"2. Modelling- User-Item Similarity","showTitle":true,"inputWidgets":{},"nuid":"e4be79ec-2a65-42cb-83a0-0e0b4a7a9913"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Since you watched Toy Story (1995)\nStar Wars: Episode IV - A New Hope (1977)\nToy Story 2 (1999)\nBack to the Future (1985)\nForrest Gump (1994)\nStar Wars: Episode VI - Return of the Jedi (1983)\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nSince you watched Toy Story (1995)\nStar Wars: Episode IV - A New Hope (1977)\nToy Story 2 (1999)\nBack to the Future (1985)\nForrest Gump (1994)\nStar Wars: Episode VI - Return of the Jedi (1983)\n
"]}}],"execution_count":0},{"cell_type":"code","source":["movie_titles"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"7479b5b8-e639-4d4b-9be6-8bee153eb38e"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Out[28]: {1: 'Toy Story (1995)',\n 2: 'Jumanji (1995)',\n 3: 'Grumpier Old Men (1995)',\n 4: 'Waiting to Exhale (1995)',\n 5: 'Father of the Bride Part II (1995)',\n 6: 'Heat (1995)',\n 7: 'Sabrina (1995)',\n 8: 'Tom and Huck (1995)',\n 9: 'Sudden Death (1995)',\n 10: 'GoldenEye (1995)',\n 11: 'American President, The (1995)',\n 12: 'Dracula: Dead and Loving It (1995)',\n 13: 'Balto (1995)',\n 14: 'Nixon (1995)',\n 15: 'Cutthroat Island (1995)',\n 16: 'Casino (1995)',\n 17: 'Sense and Sensibility (1995)',\n 18: 'Four Rooms (1995)',\n 19: 'Ace Ventura: When Nature Calls (1995)',\n 20: 'Money Train (1995)',\n 21: 'Get Shorty (1995)',\n 22: 'Copycat (1995)',\n 23: 'Assassins (1995)',\n 24: 'Powder (1995)',\n 25: 'Leaving Las Vegas (1995)',\n 26: 'Othello (1995)',\n 27: 'Now and Then (1995)',\n 28: 'Persuasion (1995)',\n 29: 'City of Lost Children, The (Cité des enfants perdus, La) (1995)',\n 30: 'Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)',\n 31: 'Dangerous Minds (1995)',\n 32: 'Twelve Monkeys (a.k.a. 12 Monkeys) (1995)',\n 33: 'Wings of Courage (1995)',\n 34: 'Babe (1995)',\n 35: 'Carrington (1995)',\n 36: 'Dead Man Walking (1995)',\n 37: 'Across the Sea of Time (1995)',\n 38: 'It Takes Two (1995)',\n 39: 'Clueless (1995)',\n 40: 'Cry, the Beloved Country (1995)',\n 41: 'Richard III (1995)',\n 42: 'Dead Presidents (1995)',\n 43: 'Restoration (1995)',\n 44: 'Mortal Kombat (1995)',\n 45: 'To Die For (1995)',\n 46: 'How to Make an American Quilt (1995)',\n 47: 'Seven (a.k.a. Se7en) (1995)',\n 48: 'Pocahontas (1995)',\n 49: 'When Night Is Falling (1995)',\n 50: 'Usual Suspects, The (1995)',\n 51: 'Guardian Angel (1994)',\n 52: 'Mighty Aphrodite (1995)',\n 53: 'Lamerica (1994)',\n 54: 'Big Green, The (1995)',\n 55: 'Georgia (1995)',\n 56: 'Kids of the Round Table (1995)',\n 57: 'Home for the Holidays (1995)',\n 58: 'Postman, The (Postino, Il) (1994)',\n 59: 'Confessional, The (Confessionnal, Le) (1995)',\n 60: 'Indian in the Cupboard, The (1995)',\n 61: 'Eye for an Eye (1996)',\n 62: "Mr. Holland's Opus (1995)",\n 63: "Don't Be a Menace to South Central While Drinking Your Juice in the Hood (1996)",\n 64: 'Two if by Sea (1996)',\n 65: 'Bio-Dome (1996)',\n 66: 'Lawnmower Man 2: Beyond Cyberspace (1996)',\n 67: 'Two Bits (1995)',\n 68: 'French Twist (Gazon maudit) (1995)',\n 69: 'Friday (1995)',\n 70: 'From Dusk Till Dawn (1996)',\n 71: 'Fair Game (1995)',\n 72: 'Kicking and Screaming (1995)',\n 73: 'Misérables, Les (1995)',\n 74: 'Bed of Roses (1996)',\n 75: 'Big Bully (1996)',\n 76: 'Screamers (1995)',\n 77: 'Nico Icon (1995)',\n 78: 'Crossing Guard, The (1995)',\n 79: 'Juror, The (1996)',\n 80: 'White Balloon, The (Badkonake sefid) (1995)',\n 81: "Things to Do in Denver When You're Dead (1995)",\n 82: "Antonia's Line (Antonia) (1995)",\n 83: 'Once Upon a Time... When We Were Colored (1995)',\n 84: 'Last Summer in the Hamptons (1995)',\n 85: 'Angels and Insects (1995)',\n 86: 'White Squall (1996)',\n 87: 'Dunston Checks In (1996)',\n 88: 'Black Sheep (1996)',\n 89: 'Nick of Time (1995)',\n 90: 'The Journey of August King (1995)',\n 92: 'Mary Reilly (1996)',\n 93: 'Vampire in Brooklyn (1995)',\n 94: 'Beautiful Girls (1996)',\n 95: 'Broken Arrow (1996)',\n 96: 'In the Bleak Midwinter (1995)',\n 97: 'Hate (Haine, La) (1995)',\n 98: 'Shopping (1994)',\n 99: 'Heidi Fleiss: Hollywood Madam (1995)',\n 100: 'City Hall (1996)',\n 101: 'Bottle Rocket (1996)',\n 102: 'Mr. Wrong (1996)',\n 103: 'Unforgettable (1996)',\n 104: 'Happy Gilmore (1996)',\n 105: 'Bridges of Madison County, The (1995)',\n 106: 'Nobody Loves Me (Keiner liebt mich) (1994)',\n 107: 'Muppet Treasure Island (1996)',\n 108: 'Catwalk (1996)',\n 109: 'Headless Body in Topless Bar (1995)',\n 110: 'Braveheart (1995)',\n 111: 'Taxi Driver (1976)',\n 112: 'Rumble in the Bronx (Hont faan kui) (1995)',\n 113: 'Before and After (1996)',\n 114: "Margaret's Museum (1995)",\n 115: 'Happiness Is in the Field (Bonheur est dans le pré, Le) (1995)',\n 116: 'Anne Frank Remembered (1995)',\n 117: "Young Poisoner's Handbook, The (1995)",\n 118: 'If Lucy Fell (1996)',\n 119: 'Steal Big, Steal Little (1995)',\n 120: 'Race the Sun (1996)',\n 121: 'Boys of St. Vincent, The (1992)',\n 122: 'Boomerang (1992)',\n 123: 'Chungking Express (Chung Hing sam lam) (1994)',\n 124: "Star Maker, The (Uomo delle stelle, L') (1995)",\n 125: 'Flirting With Disaster (1996)',\n 126: 'NeverEnding Story III, The (1994)',\n 127: 'Silences of the Palace, The (Saimt el Qusur) (1994)',\n 128: "Jupiter's Wife (1994)",\n 129: 'Pie in the Sky (1996)',\n 130: 'Angela (1995)',\n 131: 'Frankie Starlight (1995)',\n 132: 'Jade (1995)',\n 133: 'Nueba Yol (1995)',\n 134: 'Sonic Outlaws (1995)',\n 135: 'Down Periscope (1996)',\n 136: 'From the Journals of Jean Seberg (1995)',\n 137: 'Man of the Year (1995)',\n 138: 'Neon Bible, The (1995)',\n 139: 'Target (1995)',\n 140: 'Up Close and Personal (1996)',\n 141: 'Birdcage, The (1996)',\n 142: 'Shadows (Cienie) (1988)',\n 143: 'Gospa (1995)',\n 144: 'Brothers McMullen, The (1995)',\n 145: 'Bad Boys (1995)',\n 146: 'Amazing Panda Adventure, The (1995)',\n 147: 'Basketball Diaries, The (1995)',\n 148: 'Awfully Big Adventure, An (1995)',\n 149: 'Amateur (1994)',\n 150: 'Apollo 13 (1995)',\n 151: 'Rob Roy (1995)',\n 152: 'Addiction, The (1995)',\n 153: 'Batman Forever (1995)',\n 154: 'Beauty of the Day (Belle de jour) (1967)',\n 155: 'Beyond Rangoon (1995)',\n 156: 'Blue in the Face (1995)',\n 157: 'Canadian Bacon (1995)',\n 158: 'Casper (1995)',\n 159: 'Clockers (1995)',\n 160: 'Congo (1995)',\n 161: 'Crimson Tide (1995)',\n 162: 'Crumb (1994)',\n 163: 'Desperado (1995)',\n 164: 'Devil in a Blue Dress (1995)',\n 165: 'Die Hard: With a Vengeance (1995)',\n 166: 'Doom Generation, The (1995)',\n 167: 'Feast of July (1995)',\n 168: 'First Knight (1995)',\n 169: 'Free Willy 2: The Adventure Home (1995)',\n 170: 'Hackers (1995)',\n 171: 'Jeffrey (1995)',\n 172: 'Johnny Mnemonic (1995)',\n 173: 'Judge Dredd (1995)',\n 174: 'Jury Duty (1995)',\n 175: 'Kids (1995)',\n 176: 'Living in Oblivion (1995)',\n 177: 'Lord of Illusions (1995)',\n 178: 'Love & Human Remains (1993)',\n 179: 'Mad Love (1995)',\n 180: 'Mallrats (1995)',\n 181: 'Mighty Morphin Power Rangers: The Movie (1995)',\n 182: 'Moonlight and Valentino (1995)',\n 183: 'Mute Witness (1994)',\n 184: 'Nadja (1994)',\n 185: 'Net, The (1995)',\n 186: 'Nine Months (1995)',\n 187: 'Party Girl (1995)',\n 188: 'Prophecy, The (1995)',\n 189: 'Reckless (1995)',\n 190: 'Safe (1995)',\n 191: 'Scarlet Letter, The (1995)',\n 192: 'The Show (1995)',\n 193: 'Showgirls (1995)',\n 194: 'Smoke (1995)',\n 195: 'Something to Talk About (1995)',\n 196: 'Species (1995)',\n 197: 'Stars Fell on Henrietta, The (1995)',\n 198: 'Strange Days (1995)',\n 199: 'Umbrellas of Cherbourg, The (Parapluies de Cherbourg, Les) (1964)',\n 200: 'Tie That Binds, The (1995)',\n 201: 'Three Wishes (1995)',\n 202: 'Total Eclipse (1995)',\n 203: 'To Wong Foo, Thanks for Everything! Julie Newmar (1995)',\n 204: 'Under Siege 2: Dark Territory (1995)',\n 205: 'Unstrung Heroes (1995)',\n 206: 'Unzipped (1995)',\n 207: 'Walk in the Clouds, A (1995)',\n 208: 'Waterworld (1995)',\n 209: "White Man's Burden (1995)",\n 210: 'Wild Bill (1995)',\n 211: 'Browning Version, The (1994)',\n 212: 'Bushwhacked (1995)',\n 213: 'Burnt by the Sun (Utomlyonnye solntsem) (1994)',\n 214: 'Before the Rain (Pred dozhdot) (1994)',\n 215: 'Before Sunrise (1995)',\n 216: 'Billy Madison (1995)',\n 217: 'Babysitter, The (1995)',\n 218: 'Boys on the Side (1995)',\n 219: 'Cure, The (1995)',\n 220: 'Castle Freak (1995)',\n 222: 'Circle of Friends (1995)',\n 223: 'Clerks (1994)',\n 224: 'Don Juan DeMarco (1995)',\n 225: 'Disclosure (1994)',\n 226: 'Dream Man (1995)',\n 227: 'Drop Zone (1994)',\n 228: 'Destiny Turns on the Radio (1995)',\n 229: 'Death and the Maiden (1994)',\n 230: 'Dolores Claiborne (1995)',\n 231: 'Dumb & Dumber (Dumb and Dumber) (1994)',\n 232: 'Eat Drink Man Woman (Yin shi nan nu) (1994)',\n 233: 'Exotica (1994)',\n 234: 'Exit to Eden (1994)',\n 235: 'Ed Wood (1994)',\n 236: 'French Kiss (1995)',\n 237: 'Forget Paris (1995)',\n 238: 'Far From Home: The Adventures of Yellow Dog (1995)',\n 239: 'Goofy Movie, A (1995)',\n 240: 'Hideaway (1995)',\n 241: 'Fluke (1995)',\n 242: 'Farinelli: il castrato (1994)',\n 243: 'Gordy (1995)',\n 244: 'Gumby: The Movie (1995)',\n 245: 'The Glass Shield (1994)',\n 246: 'Hoop Dreams (1994)',\n 247: 'Heavenly Creatures (1994)',\n 248: 'Houseguest (1994)',\n 249: 'Immortal Beloved (1994)',\n 250: 'Heavyweights (Heavy Weights) (1995)',\n 251: 'Hunted, The (1995)',\n 252: 'I.Q. (1994)',\n 253: 'Interview with the Vampire: The Vampire Chronicles (1994)',\n 254: 'Jefferson in Paris (1995)',\n 255: 'Jerky Boys, The (1995)',\n 256: 'Junior (1994)',\n 257: 'Just Cause (1995)',\n 258: "Kid in King Arthur's Court, A (1995)",\n 259: 'Kiss of Death (1995)',\n 260: 'Star Wars: Episode IV - A New Hope (1977)',\n 261: 'Little Women (1994)',\n 262: 'Little Princess, A (1995)',\n 263: 'Ladybird Ladybird (1994)',\n 264: "Enfer, L' (1994)",\n 265: 'Like Water for Chocolate (Como agua para chocolate) (1992)',\n 266: 'Legends of the Fall (1994)',\n 267: 'Major Payne (1995)',\n 268: 'Little Odessa (1994)',\n 269: 'My Crazy Life (Mi vida loca) (1993)',\n 270: 'Love Affair (1994)',\n 271: 'Losing Isaiah (1995)',\n 272: 'Madness of King George, The (1994)',\n 273: "Mary Shelley's Frankenstein (Frankenstein) (1994)",\n 274: 'Man of the House (1995)',\n 275: 'Mixed Nuts (1994)',\n 276: 'Milk Money (1994)',\n 277: 'Miracle on 34th Street (1994)',\n 278: 'Miami Rhapsody (1995)',\n 279: 'My Family (1995)',\n 280: 'Murder in the First (1995)',\n 281: "Nobody's Fool (1994)",\n 282: 'Nell (1994)',\n 283: 'New Jersey Drive (1995)',\n 284: 'New York Cop (Nyû Yôku no koppu) (1993)',\n 285: 'Beyond Bedlam (1993)',\n 286: 'Nemesis 2: Nebula (1995)',\n 287: 'Nina Takes a Lover (1994)',\n 288: 'Natural Born Killers (1994)',\n 289: 'Only You (1994)',\n 290: 'Once Were Warriors (1994)',\n 292: 'Outbreak (1995)',\n 293: 'Léon: The Professional (a.k.a. The Professional) (Léon) (1994)',\n 294: 'Perez Family, The (1995)',\n 295: "Pyromaniac's Love Story, A (1995)",\n 296: 'Pulp Fiction (1994)',\n 297: 'Panther (1995)',\n 298: 'Pushing Hands (Tui shou) (1992)',\n 299: 'Priest (1994)',\n 300: 'Quiz Show (1994)',\n 301: 'Picture Bride (Bijo photo) (1994)',\n 302: 'Queen Margot (Reine Margot, La) (1994)',\n 303: 'Quick and the Dead, The (1995)',\n 304: 'Roommates (1995)',\n 305: 'Ready to Wear (Pret-A-Porter) (1994)',\n 306: 'Three Colors: Red (Trois couleurs: Rouge) (1994)',\n 307: 'Three Colors: Blue (Trois couleurs: Bleu) (1993)',\n 308: 'Three Colors: White (Trzy kolory: Bialy) (1994)',\n 309: 'Red Firecracker, Green Firecracker (Pao Da Shuang Deng) (1994)',\n 310: 'Rent-a-Kid (1995)',\n 311: 'Relative Fear (1994)',\n 312: 'Stuart Saves His Family (1995)',\n 313: 'Swan Princess, The (1994)',\n 314: 'Secret of Roan Inish, The (1994)',\n 315: 'Specialist, The (1994)',\n 316: 'Stargate (1994)',\n 317: 'Santa Clause, The (1994)',\n 318: 'Shawshank Redemption, The (1994)',\n 319: 'Shallow Grave (1994)',\n 320: 'Suture (1993)',\n 321: 'Strawberry and Chocolate (Fresa y chocolate) (1993)',\n 322: 'Swimming with Sharks (1995)',\n 324: 'Sum of Us, The (1994)',\n 325: "National Lampoon's Senior Trip (1995)",\n 326: 'To Live (Huozhe) (1994)',\n 327: 'Tank Girl (1995)',\n 328: 'Tales from the Crypt Presents: Demon Knight (1995)',\n 329: 'Star Trek: Generations (1994)',\n 330: 'Tales from the Hood (1995)',\n 331: 'Tom & Viv (1994)',\n 332: 'Village of the Damned (1995)',\n 333: 'Tommy Boy (1995)',\n 334: 'Vanya on 42nd Street (1994)',\n 335: 'Underneath (1995)',\n 336: 'Walking Dead, The (1995)',\n 337: "What's Eating Gilbert Grape (1993)",\n 338: 'Virtuosity (1995)',\n 339: 'While You Were Sleeping (1995)',\n 340: 'War, The (1994)',\n 341: 'Double Happiness (1994)',\n 342: "Muriel's Wedding (1994)",\n 343: 'Baby-Sitters Club, The (1995)',\n 344: 'Ace Ventura: Pet Detective (1994)',\n 345: 'Adventures of Priscilla, Queen of the Desert, The (1994)',\n 346: 'Backbeat (1993)',\n 347: 'Bitter Moon (1992)',\n 348: 'Bullets Over Broadway (1994)',\n 349: 'Clear and Present Danger (1994)',\n 350: 'Client, The (1994)',\n 351: 'Corrina, Corrina (1994)',\n 352: 'Crooklyn (1994)',\n 353: 'Crow, The (1994)',\n 354: 'Cobb (1994)',\n 355: 'Flintstones, The (1994)',\n 356: 'Forrest Gump (1994)',\n 357: 'Four Weddings and a Funeral (1994)',\n 358: 'Higher Learning (1995)',\n 359: 'I Like It Like That (1994)',\n 360: 'I Love Trouble (1994)',\n 361: 'It Could Happen to You (1994)',\n 362: 'Jungle Book, The (1994)',\n 363: 'Wonderful, Horrible Life of Leni Riefenstahl, The (Macht der Bilder: Leni Riefenstahl, Die) (1993)',\n 364: 'Lion King, The (1994)',\n 365: 'Little Buddha (1993)',\n 366: "Wes Craven's New Nightmare (Nightmare on Elm Street Part 7: Freddy's Finale, A) (1994)",\n 367: 'Mask, The (1994)',\n 368: 'Maverick (1994)',\n 369: 'Mrs. Parker and the Vicious Circle (1994)',\n 370: 'Naked Gun 33 1/3: The Final Insult (1994)',\n 371: 'Paper, The (1994)',\n 372: 'Reality Bites (1994)',\n 373: 'Red Rock West (1992)',\n 374: 'Richie Rich (1994)',\n 375: 'Safe Passage (1994)',\n 376: 'River Wild, The (1994)',\n 377: 'Speed (1994)',\n 378: 'Speechless (1994)',\n 379: 'Timecop (1994)',\n 380: 'True Lies (1994)',\n 381: 'When a Man Loves a Woman (1994)',\n 382: 'Wolf (1994)',\n 383: 'Wyatt Earp (1994)',\n 384: 'Bad Company (1995)',\n 385: 'Man of No Importance, A (1994)',\n 386: 'S.F.W. (1994)',\n 387: 'Low Down Dirty Shame, A (1994)',\n 388: 'Boys Life (1995)',\n 389: 'Colonel Chabert, Le (1994)',\n 390: 'Faster Pussycat! Kill! Kill! (1965)',\n 391: "Jason's Lyric (1994)",\n 392: 'Secret Adventures of Tom Thumb, The (1993)',\n 393: 'Street Fighter (1994)',\n 394: 'Coldblooded (1995)',\n 395: 'Desert Winds (1995)',\n 396: 'Fall Time (1995)',\n 397: 'Fear, The (1995)',\n 398: 'Frank and Ollie (1995)',\n 399: 'Girl in the Cadillac (1995)',\n 400: 'Homage (1995)',\n 401: 'Mirage (1995)',\n 402: 'Open Season (1996)',\n 403: 'Two Crimes (Dos crímenes) (1995)',\n 404: 'Brother Minister: The Assassination of Malcolm X (1994)',\n 405: 'Highlander III: The Sorcerer (a.k.a. Highlander: The Final Dimension) (1994)',\n 406: 'Federal Hill (1994)',\n 407: 'In the Mouth of Madness (1995)',\n 408: '8 Seconds (1994)',\n 409: 'Above the Rim (1994)',\n 410: 'Addams Family Values (1993)',\n 411: 'Martin Lawrence: You So Crazy (1994)',\n 412: 'Age of Innocence, The (1993)',\n 413: 'Airheads (1994)',\n 414: 'Air Up There, The (1994)',\n 415: 'Another Stakeout (1993)',\n 416: 'Bad Girls (1994)',\n 417: 'Barcelona (1994)',\n 418: 'Being Human (1993)',\n 419: 'Beverly Hillbillies, The (1993)',\n 420: 'Beverly Hills Cop III (1994)',\n 421: 'Black Beauty (1994)',\n 422: 'Blink (1994)',\n 423: 'Blown Away (1994)',\n 424: 'Blue Chips (1994)',\n 425: 'Blue Sky (1994)',\n 426: 'Body Snatchers (1993)',\n 427: 'Boxing Helena (1993)',\n 428: 'Bronx Tale, A (1993)',\n 429: 'Cabin Boy (1994)',\n 430: 'Calendar Girl (1993)',\n 431: "Carlito's Way (1993)",\n 432: "City Slickers II: The Legend of Curly's Gold (1994)",\n 433: 'Clean Slate (1994)',\n 434: 'Cliffhanger (1993)',\n 435: 'Coneheads (1993)',\n 436: 'Color of Night (1994)',\n 437: 'Cops and Robbersons (1994)',\n 438: 'Cowboy Way, The (1994)',\n 439: 'Dangerous Game (1993)',\n 440: 'Dave (1993)',\n 441: 'Dazed and Confused (1993)',\n 442: 'Demolition Man (1993)',\n 443: 'Endless Summer 2, The (1994)',\n 444: 'Even Cowgirls Get the Blues (1993)',\n 445: 'Fatal Instinct (1993)',\n 446: 'Farewell My Concubine (Ba wang bie ji) (1993)',\n 447: 'Favor, The (1994)',\n 448: 'Fearless (1993)',\n 449: 'Fear of a Black Hat (1994)',\n 450: 'With Honors (1994)',\n 451: 'Flesh and Bone (1993)',\n 452: "Widows' Peak (1994)",\n 453: 'For Love or Money (1993)',\n 454: 'Firm, The (1993)',\n 455: 'Free Willy (1993)',\n 456: 'Fresh (1994)',\n 457: 'Fugitive, The (1993)',\n 458: 'Geronimo: An American Legend (1993)',\n 459: 'Getaway, The (1994)',\n 460: 'Getting Even with Dad (1994)',\n 461: 'Go Fish (1994)',\n 462: 'Good Man in Africa, A (1994)',\n 463: 'Guilty as Sin (1993)',\n 464: 'Hard Target (1993)',\n 465: 'Heaven & Earth (1993)',\n 466: 'Hot Shots! Part Deux (1993)',\n 467: 'Live Nude Girls (1995)',\n 468: 'Englishman Who Went Up a Hill But Came Down a Mountain, The (1995)',\n 469: 'House of the Spirits, The (1993)',\n 470: 'House Party 3 (1994)',\n 471: 'Hudsucker Proxy, The (1994)',\n 472: "I'll Do Anything (1994)",\n 473: 'In the Army Now (1994)',\n 474: 'In the Line of Fire (1993)',\n 475: 'In the Name of the Father (1993)',\n 476: 'Inkwell, The (1994)',\n 477: "What's Love Got to Do with It? (1993)",\n 478: 'Jimmy Hollywood (1994)',\n 479: 'Judgment Night (1993)',\n 480: 'Jurassic Park (1993)',\n 481: 'Kalifornia (1993)',\n 482: 'Killing Zoe (1994)',\n 483: 'King of the Hill (1993)',\n 484: 'Lassie (1994)',\n 485: 'Last Action Hero (1993)',\n 486: 'Life with Mikey (1993)',\n 487: 'Lightning Jack (1994)',\n 488: 'M. Butterfly (1993)',\n 489: 'Made in America (1993)',\n 490: 'Malice (1993)',\n 491: 'Man Without a Face, The (1993)',\n 492: 'Manhattan Murder Mystery (1993)',\n 493: 'Menace II Society (1993)',\n 494: 'Executive Decision (1996)',\n 495: 'In the Realm of the Senses (Ai no corrida) (1976)',\n 496: 'What Happened Was... (1994)',\n 497: 'Much Ado About Nothing (1993)',\n 498: 'Mr. Jones (1993)',\n 499: 'Mr. Wonderful (1993)',\n 500: 'Mrs. Doubtfire (1993)',\n 501: 'Naked (1993)',\n 502: 'Next Karate Kid, The (1994)',\n 503: 'New Age, The (1994)',\n 504: 'No Escape (1994)',\n 505: 'North (1994)',\n 506: 'Orlando (1992)',\n 507: 'Perfect World, A (1993)',\n 508: 'Philadelphia (1993)',\n 509: 'Piano, The (1993)',\n 510: 'Poetic Justice (1993)',\n 511: 'Program, The (1993)',\n 512: 'Puppet Masters, The (1994)',\n 513: 'Radioland Murders (1994)',\n 514: 'Ref, The (1994)',\n 515: 'Remains of the Day, The (1993)',\n 516: 'Renaissance Man (1994)',\n 517: 'Rising Sun (1993)',\n 518: 'Road to Wellville, The (1994)',\n 519: 'RoboCop 3 (1993)',\n 520: 'Robin Hood: Men in Tights (1993)',\n 521: 'Romeo Is Bleeding (1993)',\n 522: 'Romper Stomper (1992)',\n 523: 'Ruby in Paradise (1993)',\n 524: 'Rudy (1993)',\n 525: 'Saint of Fort Washington, The (1993)',\n 526: 'Savage Nights (Nuits fauves, Les) (1992)',\n 527: "Schindler's List (1993)",\n 528: 'Scout, The (1994)',\n 529: 'Searching for Bobby Fischer (1993)',\n 530: 'Second Best (1994)',\n 531: 'Secret Garden, The (1993)',\n 532: 'Serial Mom (1994)',\n 533: 'Shadow, The (1994)',\n 534: 'Shadowlands (1993)',\n 535: 'Short Cuts (1993)',\n 536: 'Simple Twist of Fate, A (1994)',\n 537: 'Sirens (1994)',\n 538: 'Six Degrees of Separation (1993)',\n 539: 'Sleepless in Seattle (1993)',\n 540: 'Sliver (1993)',\n 541: 'Blade Runner (1982)',\n 542: 'Son in Law (1993)',\n 543: 'So I Married an Axe Murderer (1993)',\n 544: 'Striking Distance (1993)',\n 546: 'Super Mario Bros. (1993)',\n 547: 'Surviving the Game (1994)',\n 548: 'Terminal Velocity (1994)',\n 549: 'Thirty-Two Short Films About Glenn Gould (1993)',\n 550: 'Threesome (1994)',\n 551: 'Nightmare Before Christmas, The (1993)',\n 552: 'Three Musketeers, The (1993)',\n 553: 'Tombstone (1993)',\n 554: 'Trial by Jury (1994)',\n 555: 'True Romance (1993)',\n 556: 'War Room, The (1993)',\n 558: 'Pagemaster, The (1994)',\n 559: 'Paris, France (1993)',\n 560: 'Beans of Egypt, Maine, The (1994)',\n 561: 'Killer (Bulletproof Heart) (1994)',\n 562: 'Welcome to the Dollhouse (1995)',\n 563: 'Germinal (1993)',\n 564: 'Chasers (1994)',\n 565: 'Cronos (1993)',\n 566: 'Naked in New York (1994)',\n 567: 'Kika (1993)',\n 568: 'Bhaji on the Beach (1993)',\n 569: 'Little Big League (1994)',\n 570: 'Slingshot, The (Kådisbellan) (1993)',\n 571: 'Wedding Gift, The (1994)',\n 572: 'Foreign Student (1994)',\n 573: 'Ciao, Professore! (Io speriamo che me la cavo) (1992)',\n 574: 'Spanking the Monkey (1994)',\n 575: 'Little Rascals, The (1994)',\n 576: 'Fausto (1993)',\n 577: 'Andre (1994)',\n 579: 'Escort, The (Scorta, La) (1993)',\n 580: 'Princess Caraboo (1994)',\n 581: 'Celluloid Closet, The (1995)',\n 582: 'Métisse (Café au Lait) (1993)',\n 583: 'Dear Diary (Caro Diario) (1994)',\n 584: "I Don't Want to Talk About It (De eso no se habla) (1993)",\n 585: 'Brady Bunch Movie, The (1995)',\n 586: 'Home Alone (1990)',\n 587: 'Ghost (1990)',\n 588: 'Aladdin (1992)',\n 589: 'Terminator 2: Judgment Day (1991)',\n 590: 'Dances with Wolves (1990)',\n 591: 'Tough and Deadly (1995)',\n 592: 'Batman (1989)',\n 593: 'Silence of the Lambs, The (1991)',\n 594: 'Snow White and the Seven Dwarfs (1937)',\n 595: 'Beauty and the Beast (1991)',\n 596: 'Pinocchio (1940)',\n 597: 'Pretty Woman (1990)',\n 598: 'Window to Paris (Okno v Parizh) (1994)',\n 599: 'Wild Bunch, The (1969)',\n 600: 'Love and a .45 (1994)',\n 601: "Wooden Man's Bride, The (Yan shen) (1994)",\n 602: 'Great Day in Harlem, A (1994)',\n 603: 'Bye Bye, Love (1995)',\n 604: 'Criminals (1996)',\n 605: 'One Fine Day (1996)',\n 606: 'Candyman: Farewell to the Flesh (1995)',\n 607: 'Century (1993)',\n 608: 'Fargo (1996)',\n 609: 'Homeward Bound II: Lost in San Francisco (1996)',\n 610: 'Heavy Metal (1981)',\n 611: 'Hellraiser: Bloodline (1996)',\n 612: 'Pallbearer, The (1996)',\n 613: 'Jane Eyre (1996)',\n 614: 'Loaded (1994)',\n 615: 'Bread and Chocolate (Pane e cioccolata) (1973)',\n 616: 'Aristocats, The (1970)',\n 617: 'Flower of My Secret, The (La flor de mi secreto) (1995)',\n 618: 'Two Much (1995)',\n 619: 'Ed (1996)',\n 620: 'Scream of Stone (Cerro Torre: Schrei aus Stein) (1991)',\n 621: 'My Favorite Season (1993)',\n 623: 'Modern Affair, A (1995)',\n 625: 'Asfour Stah (1990)',\n 626: 'Thin Line Between Love and Hate, A (1996)',\n 627: 'Last Supper, The (1995)',\n 628: 'Primal Fear (1996)',\n 629: 'Rude (1995)',\n 630: 'Carried Away (1996)',\n 631: 'All Dogs Go to Heaven 2 (1996)',\n 632: 'Land and Freedom (Tierra y libertad) (1995)',\n 633: 'Denise Calls Up (1995)',\n 634: 'Theodore Rex (1995)',\n 635: 'Family Thing, A (1996)',\n 636: 'Frisk (1995)',\n 637: 'Sgt. Bilko (1996)',\n 638: 'Jack and Sarah (1995)',\n 639: 'Girl 6 (1996)',\n 640: 'Diabolique (1996)',\n 641: 'Little Indian, Big City (Un indien dans la ville) (1994)',\n 642: 'Roula (1995)',\n 643: 'Peanuts - Die Bank zahlt alles (1996)',\n 644: 'Happy Weekend (1996)',\n 645: 'Nelly & Monsieur Arnaud (1995)',\n 647: 'Courage Under Fire (1996)',\n 648: 'Mission: Impossible (1996)',\n 649: 'Cold Fever (Á köldum klaka) (1995)',\n 650: 'Moll Flanders (1996)',\n 651: 'Superweib, Das (1996)',\n 652: '301, 302 (301/302) (1995)',\n 653: 'Dragonheart (1996)',\n 654: 'And Nobody Weeps for Me (Und keiner weint mir nach) (1996)',\n 655: "My Mother's Courage (Mutters Courage) (1995)",\n 656: 'Eddie (1996)',\n 657: 'Yankee Zulu (1994)',\n 658: "Billy's Holiday (1995)",\n 659: 'Purple Noon (Plein soleil) (1960)',\n 660: 'August (1996)',\n 661: 'James and the Giant Peach (1996)',\n 662: 'Fear (1996)',\n 663: 'Kids in the Hall: Brain Candy (1996)',\n 664: 'Faithful (1996)',\n 665: 'Underground (1995)',\n 666: 'All Things Fair (Lust och fägring stor) (1995)',\n 667: 'Bloodsport 2 (a.k.a. Bloodsport II: The Next Kumite) (1996)',\n 668: 'Song of the Little Road (Pather Panchali) (1955)',\n 670: 'World of Apu, The (Apur Sansar) (1959)',\n 671: 'Mystery Science Theater 3000: The Movie (1996)',\n 672: 'Tarantella (1995)',\n 673: 'Space Jam (1996)',\n 674: 'Barbarella (1968)',\n 675: 'Hostile Intentions (1994)',\n 676: 'They Bite (1996)',\n 678: 'Some Folks Call It a Sling Blade (1993)',\n 679: 'Run of the Country, The (1995)',\n 680: 'Alphaville (Alphaville, une étrange aventure de Lemmy Caution) (1965)',\n 681: 'Coup de torchon (Clean Slate) (1981)',\n 682: 'Tigrero: A Film That Was Never Made (1994)',\n 683: "Eye of Vichy, The (Oeil de Vichy, L') (1993)",\n 684: 'Windows (1980)',\n 685: "It's My Party (1996)",\n 687: 'Country Life (1994)',\n 688: 'Operation Dumbo Drop (1995)',\n 690: 'Promise, The (Versprechen, Das) (1995)',\n 691: 'Mrs. Winterbourne (1996)',\n 692: 'Solo (1996)',\n 693: 'Under the Domim Tree (Etz Hadomim Tafus) (1994)',\n 694: 'Substitute, The (1996)',\n 695: 'True Crime (1996)',\n 696: 'Butterfly Kiss (1995)',\n 697: 'Feeling Minnesota (1996)',\n 698: 'Delta of Venus (1995)',\n 699: 'To Cross the Rubicon (1991)',\n 700: 'Angus (1995)',\n 701: 'Daens (1992)',\n 702: 'Faces (1968)',\n 703: 'Boys (1996)',\n 704: 'Quest, The (1996)',\n 705: 'Cosi (1996)',\n 706: 'Sunset Park (1996)',\n 707: 'Mulholland Falls (1996)',\n 708: 'Truth About Cats & Dogs, The (1996)',\n 709: 'Oliver & Company (1988)',\n 710: 'Celtic Pride (1996)',\n 711: 'Flipper (1996)',\n 712: 'Captives (1994)',\n 713: 'Of Love and Shadows (1994)',\n 714: 'Dead Man (1995)',\n 715: 'Horseman on the Roof, The (Hussard sur le toit, Le) (1995)',\n 716: 'Switchblade Sisters (1975)',\n 717: 'Mouth to Mouth (Boca a boca) (1995)',\n 718: 'Visitors, The (Visiteurs, Les) (1993)',\n 719: 'Multiplicity (1996)',\n 720: 'Wallace & Gromit: The Best of Aardman Animation (1996)',\n 721: 'Halfmoon (Paul Bowles - Halbmond) (1995)',\n 722: 'Haunted World of Edward D. Wood Jr., The (1996)',\n 723: 'Two Friends (1986)',\n 724: 'Craft, The (1996)',\n 725: 'Great White Hype, The (1996)',\n 726: 'Last Dance (1996)',\n 727: 'War Stories (1995)',\n 728: 'Cold Comfort Farm (1995)',\n 729: 'Institute Benjamenta, or This Dream People Call Human Life (1995)',\n 730: 'Low Life (1994)',\n 731: "Heaven's Prisoners (1996)",\n 732: 'Original Gangstas (1996)',\n 733: 'Rock, The (1996)',\n 734: 'Getting Away With Murder (1996)',\n 735: 'Cemetery Man (Dellamorte Dellamore) (1994)',\n 736: 'Twister (1996)',\n 737: 'Barb Wire (1996)',\n 738: 'Garçu, Le (1995)',\n 739: 'Honey Moon (Honigmond) (1996)',\n 741: 'Ghost in the Shell (Kôkaku kidôtai) (1995)',\n 742: 'Thinner (1996)',\n 743: 'Spy Hard (1996)',\n 744: 'Brothers in Trouble (1995)',\n 745: 'Wallace & Gromit: A Close Shave (1995)',\n 746: 'Force of Evil (1948)',\n 747: 'Stupids, The (1996)',\n 748: 'Arrival, The (1996)',\n 749: 'Man from Down Under, The (1943)',\n 750: 'Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb (1964)',\n 751: 'Careful (1992)',\n 752: 'Vermont Is For Lovers (1992)',\n 753: 'Month by the Lake, A (1995)',\n 754: 'Gold Diggers: The Secret of Bear Mountain (1995)',\n 755: 'Kim (1950)',\n 756: 'Carmen Miranda: Bananas Is My Business (1994)',\n 757: 'Ashes of Time (Dung che sai duk) (1994)',\n 758: 'Jar, The (Khomreh) (1992)',\n 759: 'Maya Lin: A Strong Clear Vision (1994)',\n 760: 'Stalingrad (1993)',\n 761: 'Phantom, The (1996)',\n 762: 'Striptease (1996)',\n 763: 'Last of the High Kings, The (a.k.a. Summer Fling) (1996)',\n 764: 'Heavy (1995)',\n 765: 'Jack (1996)',\n 766: 'I Shot Andy Warhol (1996)',\n 767: 'Grass Harp, The (1995)',\n 768: "Someone Else's America (1995)",\n 769: 'Marlene Dietrich: Shadow and Light (1996)',\n 770: 'Costa Brava (1946)',\n 771: 'Life Is Rosy (a.k.a. Life Is Beautiful) (Vie est belle, La) (1987)',\n 772: 'Quartier Mozart (1992)',\n 773: 'Touki Bouki (1973)',\n 774: "Wend Kuuni (a.k.a. God's Gift) (1982)",\n 775: 'Spirits of the Dead (1968)',\n 776: 'Babyfever (1994)',\n 777: "Pharaoh's Army (1995)",\n 778: 'Trainspotting (1996)',\n 779: "'Til There Was You (1997)",\n 780: 'Independence Day (a.k.a. ID4) (1996)',\n 781: 'Stealing Beauty (1996)',\n 782: 'Fan, The (1996)',\n 783: 'Hunchback of Notre Dame, The (1996)',\n 784: 'Cable Guy, The (1996)',\n 785: 'Kingpin (1996)',\n 786: 'Eraser (1996)',\n 787: 'Gate of Heavenly Peace, The (1995)',\n 788: 'Nutty Professor, The (1996)',\n 789: 'I, the Worst of All (Yo, la peor de todas) (1990)',\n 790: 'Unforgettable Summer, An (Un été inoubliable) (1994)',\n 791: 'Last Klezmer: Leopold Kozlowski, His Life and Music, The (1994)',\n 792: 'Hungarian Fairy Tale, A (Hol volt, hol nem volt) (1987)',\n 793: "My Life and Times With Antonin Artaud (En compagnie d'Antonin Artaud) (1993)",\n 794: 'Midnight Dancers (Sibak) (1994)',\n 795: 'Somebody to Love (1994)',\n 796: 'Very Natural Thing, A (1974)',\n 797: 'Old Lady Who Walked in the Sea, The (Vieille qui marchait dans la mer, La) (1991)',\n 798: 'Daylight (1996)',\n 799: 'Frighteners, The (1996)',\n 800: 'Lone Star (1996)',\n 801: 'Harriet the Spy (1996)',\n 802: 'Phenomenon (1996)',\n 803: 'Walking and Talking (1996)',\n 804: "She's the One (1996)",\n 805: 'Time to Kill, A (1996)',\n 806: 'American Buffalo (1996)',\n 807: 'Rendezvous in Paris (Rendez-vous de Paris, Les) (1995)',\n 808: 'Alaska (1996)',\n 809: 'Fled (1996)',\n 810: 'Kazaam (1996)',\n 812: 'Magic Hunter (Büvös vadász) (1994)',\n 813: 'Larger Than Life (1996)',\n 814: 'Boy Called Hate, A (1995)',\n 815: 'Power 98 (1996)',\n 816: 'Two Deaths (1995)',\n 818: 'Very Brady Sequel, A (1996)',\n 819: 'Stefano Quantestorie (1993)',\n 820: 'Death in the Garden (Mort en ce jardin, La) (1956)',\n 821: 'Crude Oasis, The (1995)',\n 822: 'Hedd Wyn (1992)',\n 823: 'Collector, The (La collectionneuse) (1967)',\n 824: 'Kaspar Hauser (1993)',\n 825: 'Regular Guys (Echte Kerle) (1996)',\n 826: 'Women Robbers (Diebinnen) (1995)',\n 827: 'Convent, The (O Convento) (1995)',\n 828: 'Adventures of Pinocchio, The (1996)',\n 829: "Joe's Apartment (1996)",\n 830: 'First Wives Club, The (1996)',\n 831: 'Stonewall (1995)',\n 832: 'Ransom (1996)',\n 833: 'High School High (1996)',\n 834: 'Phat Beach (1996)',\n 835: 'Foxfire (1996)',\n 836: 'Chain Reaction (1996)',\n 837: 'Matilda (1996)',\n 838: 'Emma (1996)',\n 839: 'Crow: City of Angels, The (1996)',\n 840: 'House Arrest (1996)',\n 841: 'Eyes Without a Face (Yeux sans visage, Les) (1959)',\n 842: 'Tales from the Crypt Presents: Bordello of Blood (1996)',\n 843: 'Lotto Land (1995)',\n 844: 'Story of Xinghua, The (Xinghua san yue tian) (1994)',\n 845: 'Day the Sun Turned Cold, The (Tianguo niezi) (1994)',\n 846: 'Flirt (1995)',\n 847: 'Big Squeeze, The (1996)',\n 848: 'Spitfire Grill, The (1996)',\n 849: 'Escape from L.A. (1996)',\n 850: 'Cyclo (Xich lo) (1995)',\n 851: 'Basquiat (1996)',\n 852: 'Tin Cup (1996)',\n 853: 'Dingo (1991)',\n 854: 'Ballad of Narayama, The (Narayama Bushiko) (1958)',\n 855: 'Every Other Weekend (Un week-end sur deux) (1990)',\n 856: 'Mille bolle blu (1993)',\n 857: 'Crows and Sparrows (Wuya yu maque) (1949)',\n 858: 'Godfather, The (1972)',\n 859: 'Hippie Revolution, The (1996)',\n 860: 'Maybe, Maybe Not (Bewegte Mann, Der) (1994)',\n 861: 'Supercop (Police Story 3: Supercop) (Jing cha gu shi III: Chao ji jing cha) (1992)',\n 862: 'Manny & Lo (1996)',\n 864: 'Wife, The (1995)',\n 865: 'Small Faces (1996)',\n 866: 'Bound (1996)',\n 867: 'Carpool (1996)',\n 868: 'Death in Brunswick (1991)',\n 869: 'Kansas City (1996)',\n 870: "Gone Fishin' (1997)",\n 871: "Lover's Knot (1996)",\n 872: "Vive L'Amour (Ai qing wan sui) (1994)",\n 873: 'Shadow of Angels (Schatten der Engel) (1976)',\n 874: 'Killer: A Journal of Murder (1995)',\n 875: 'Nothing to Lose (1994)',\n 876: 'Supercop 2 (Project S) (Chao ji ji hua) (1993)',\n 877: 'Girls Town (1996)',\n 878: 'Bye-Bye (1995)',\n 879: 'Relic, The (1997)',\n 880: 'Island of Dr. Moreau, The (1996)',\n 881: 'First Kid (1996)',\n 882: 'Trigger Effect, The (1996)',\n 884: 'Sweet Nothing (1996)',\n 885: 'Bogus (1996)',\n 886: 'Bulletproof (1996)',\n 887: 'Talk of Angels (1998)',\n 889: '1-900 (06) (1994)',\n 890: 'Baton Rouge (Bâton rouge) (1988)',\n 891: 'Halloween: The Curse of Michael Myers (Halloween 6: The Curse of Michael Myers) (1995)',\n 892: 'Twelfth Night (1996)',\n 893: 'Mother Night (1996)',\n 894: 'Liebelei (1933)',\n 895: 'Venice/Venice (1992)',\n 896: 'Wild Reeds (Les roseaux sauvages) (1994)',\n 897: 'For Whom the Bell Tolls (1943)',\n 898: 'Philadelphia Story, The (1940)',\n 899: "Singin' in the Rain (1952)",\n 900: 'American in Paris, An (1951)',\n 901: 'Funny Face (1957)',\n 902: "Breakfast at Tiffany's (1961)",\n 903: 'Vertigo (1958)',\n 904: 'Rear Window (1954)',\n 905: 'It Happened One Night (1934)',\n 906: 'Gaslight (1944)',\n 907: 'Gay Divorcee, The (1934)',\n 908: 'North by Northwest (1959)',\n 909: 'Apartment, The (1960)',\n 910: 'Some Like It Hot (1959)',\n 911: 'Charade (1963)',\n 912: 'Casablanca (1942)',\n 913: 'Maltese Falcon, The (1941)',\n 914: 'My Fair Lady (1964)',\n 915: 'Sabrina (1954)',\n 916: 'Roman Holiday (1953)',\n 917: 'Little Princess, The (1939)',\n 918: 'Meet Me in St. Louis (1944)',\n 919: 'Wizard of Oz, The (1939)',\n 920: 'Gone with the Wind (1939)',\n 921: 'My Favorite Year (1982)',\n 922: 'Sunset Blvd. (a.k.a. Sunset Boulevard) (1950)',\n 923: 'Citizen Kane (1941)',\n 924: '2001: A Space Odyssey (1968)',\n 925: 'Golden Earrings (1947)',\n 926: 'All About Eve (1950)',\n 927: 'Women, The (1939)',\n 928: 'Rebecca (1940)',\n 929: 'Foreign Correspondent (1940)',\n 930: 'Notorious (1946)',\n 931: 'Spellbound (1945)',\n 932: 'Affair to Remember, An (1957)',\n 933: 'To Catch a Thief (1955)',\n 934: 'Father of the Bride (1950)',\n 935: 'Band Wagon, The (1953)',\n 936: 'Ninotchka (1939)',\n 937: 'Love in the Afternoon (1957)',\n 938: 'Gigi (1958)',\n 939: 'Reluctant Debutante, The (1958)',\n 940: 'Adventures of Robin Hood, The (1938)',\n 941: 'Mark of Zorro, The (1940)',\n 942: 'Laura (1944)',\n 943: 'Ghost and Mrs. Muir, The (1947)',\n 944: 'Lost Horizon (1937)',\n 945: 'Top Hat (1935)',\n 946: 'To Be or Not to Be (1942)',\n 947: 'My Man Godfrey (1936)',\n 948: 'Giant (1956)',\n 949: 'East of Eden (1955)',\n 950: 'Thin Man, The (1934)',\n 951: 'His Girl Friday (1940)',\n 952: 'Around the World in 80 Days (1956)',\n 953: "It's a Wonderful Life (1946)",\n 954: 'Mr. Smith Goes to Washington (1939)',\n 955: 'Bringing Up Baby (1938)',\n 956: 'Penny Serenade (1941)',\n 957: 'Scarlet Letter, The (1926)',\n 958: 'Lady of Burlesque (1943)',\n 959: 'Of Human Bondage (1934)',\n 960: 'Angel on My Shoulder (1946)',\n 961: 'Little Lord Fauntleroy (1936)',\n 962: 'They Made Me a Criminal (1939)',\n 963: 'Inspector General, The (1949)',\n 964: 'Angel and the Badman (1947)',\n 965: '39 Steps, The (1935)',\n 966: 'A Walk in the Sun (1945)',\n 967: 'Outlaw, The (1943)',\n 968: 'Night of the Living Dead (1968)',\n 969: 'African Queen, The (1951)',\n 970: 'Beat the Devil (1953)',\n 971: 'Cat on a Hot Tin Roof (1958)',\n 972: 'Last Time I Saw Paris, The (1954)',\n 973: 'Meet John Doe (1941)',\n 974: 'Algiers (1938)',\n 975: 'Something to Sing About (1937)',\n 976: 'Farewell to Arms, A (1932)',\n 977: 'Moonlight Murder (1936)',\n 979: 'Nothing Personal (1995)',\n 980: 'Yes, Madam (a.k.a. Police Assassins) (a.k.a. In the Line of Duty 2) (Huang gu shi jie) (1985)',\n 981: 'Dangerous Ground (1997)',\n 982: 'Picnic (1955)',\n 983: 'Madagascar Skin (1995)',\n 984: 'Pompatus of Love, The (1996)',\n 985: 'Small Wonders (1995)',\n 986: 'Fly Away Home (1996)',\n 987: 'Bliss (1997)',\n 988: 'Grace of My Heart (1996)',\n 989: 'Brother of Sleep (Schlafes Bruder) (1995)',\n 990: 'Maximum Risk (1996)',\n 991: 'Michael Collins (1996)',\n 992: "Rich Man's Wife, The (1996)",\n 993: 'Infinity (1996)',\n 994: 'Big Night (1996)',\n 996: 'Last Man Standing (1996)',\n 997: 'Caught (1996)',\n 998: 'Set It Off (1996)',\n 999: '2 Days in the Valley (1996)',\n 1000: 'Curdled (1996)',\n 1001: "Associate, The (Associé, L') (1979)",\n 1002: "Ed's Next Move (1996)",\n 1003: 'Extreme Measures (1996)',\n 1004: 'Glimmer Man, The (1996)',\n 1005: 'D3: The Mighty Ducks (1996)',\n 1006: 'Chamber, The (1996)',\n 1007: 'Apple Dumpling Gang, The (1975)',\n 1008: 'Davy Crockett, King of the Wild Frontier (1955)',\n 1009: 'Escape to Witch Mountain (1975)',\n 1010: 'Love Bug, The (1969)',\n 1011: 'Herbie Rides Again (1974)',\n 1012: 'Old Yeller (1957)',\n 1013: 'Parent Trap, The (1961)',\n 1014: 'Pollyanna (1960)',\n 1015: 'Homeward Bound: The Incredible Journey (1993)',\n 1016: 'Shaggy Dog, The (1959)',\n 1017: 'Swiss Family Robinson (1960)',\n 1018: 'That Darn Cat! (1965)',\n 1019: '20,000 Leagues Under the Sea (1954)',\n 1020: 'Cool Runnings (1993)',\n 1021: 'Angels in the Outfield (1994)',\n 1022: 'Cinderella (1950)',\n ...}
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nOut[28]: {1: 'Toy Story (1995)',\n 2: 'Jumanji (1995)',\n 3: 'Grumpier Old Men (1995)',\n 4: 'Waiting to Exhale (1995)',\n 5: 'Father of the Bride Part II (1995)',\n 6: 'Heat (1995)',\n 7: 'Sabrina (1995)',\n 8: 'Tom and Huck (1995)',\n 9: 'Sudden Death (1995)',\n 10: 'GoldenEye (1995)',\n 11: 'American President, The (1995)',\n 12: 'Dracula: Dead and Loving It (1995)',\n 13: 'Balto (1995)',\n 14: 'Nixon (1995)',\n 15: 'Cutthroat Island (1995)',\n 16: 'Casino (1995)',\n 17: 'Sense and Sensibility (1995)',\n 18: 'Four Rooms (1995)',\n 19: 'Ace Ventura: When Nature Calls (1995)',\n 20: 'Money Train (1995)',\n 21: 'Get Shorty (1995)',\n 22: 'Copycat (1995)',\n 23: 'Assassins (1995)',\n 24: 'Powder (1995)',\n 25: 'Leaving Las Vegas (1995)',\n 26: 'Othello (1995)',\n 27: 'Now and Then (1995)',\n 28: 'Persuasion (1995)',\n 29: 'City of Lost Children, The (Cité des enfants perdus, La) (1995)',\n 30: 'Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)',\n 31: 'Dangerous Minds (1995)',\n 32: 'Twelve Monkeys (a.k.a. 12 Monkeys) (1995)',\n 33: 'Wings of Courage (1995)',\n 34: 'Babe (1995)',\n 35: 'Carrington (1995)',\n 36: 'Dead Man Walking (1995)',\n 37: 'Across the Sea of Time (1995)',\n 38: 'It Takes Two (1995)',\n 39: 'Clueless (1995)',\n 40: 'Cry, the Beloved Country (1995)',\n 41: 'Richard III (1995)',\n 42: 'Dead Presidents (1995)',\n 43: 'Restoration (1995)',\n 44: 'Mortal Kombat (1995)',\n 45: 'To Die For (1995)',\n 46: 'How to Make an American Quilt (1995)',\n 47: 'Seven (a.k.a. Se7en) (1995)',\n 48: 'Pocahontas (1995)',\n 49: 'When Night Is Falling (1995)',\n 50: 'Usual Suspects, The (1995)',\n 51: 'Guardian Angel (1994)',\n 52: 'Mighty Aphrodite (1995)',\n 53: 'Lamerica (1994)',\n 54: 'Big Green, The (1995)',\n 55: 'Georgia (1995)',\n 56: 'Kids of the Round Table (1995)',\n 57: 'Home for the Holidays (1995)',\n 58: 'Postman, The (Postino, Il) (1994)',\n 59: 'Confessional, The (Confessionnal, Le) (1995)',\n 60: 'Indian in the Cupboard, The (1995)',\n 61: 'Eye for an Eye (1996)',\n 62: "Mr. Holland's Opus (1995)",\n 63: "Don't Be a Menace to South Central While Drinking Your Juice in the Hood (1996)",\n 64: 'Two if by Sea (1996)',\n 65: 'Bio-Dome (1996)',\n 66: 'Lawnmower Man 2: Beyond Cyberspace (1996)',\n 67: 'Two Bits (1995)',\n 68: 'French Twist (Gazon maudit) (1995)',\n 69: 'Friday (1995)',\n 70: 'From Dusk Till Dawn (1996)',\n 71: 'Fair Game (1995)',\n 72: 'Kicking and Screaming (1995)',\n 73: 'Misérables, Les (1995)',\n 74: 'Bed of Roses (1996)',\n 75: 'Big Bully (1996)',\n 76: 'Screamers (1995)',\n 77: 'Nico Icon (1995)',\n 78: 'Crossing Guard, The (1995)',\n 79: 'Juror, The (1996)',\n 80: 'White Balloon, The (Badkonake sefid) (1995)',\n 81: "Things to Do in Denver When You're Dead (1995)",\n 82: "Antonia's Line (Antonia) (1995)",\n 83: 'Once Upon a Time... When We Were Colored (1995)',\n 84: 'Last Summer in the Hamptons (1995)',\n 85: 'Angels and Insects (1995)',\n 86: 'White Squall (1996)',\n 87: 'Dunston Checks In (1996)',\n 88: 'Black Sheep (1996)',\n 89: 'Nick of Time (1995)',\n 90: 'The Journey of August King (1995)',\n 92: 'Mary Reilly (1996)',\n 93: 'Vampire in Brooklyn (1995)',\n 94: 'Beautiful Girls (1996)',\n 95: 'Broken Arrow (1996)',\n 96: 'In the Bleak Midwinter (1995)',\n 97: 'Hate (Haine, La) (1995)',\n 98: 'Shopping (1994)',\n 99: 'Heidi Fleiss: Hollywood Madam (1995)',\n 100: 'City Hall (1996)',\n 101: 'Bottle Rocket (1996)',\n 102: 'Mr. Wrong (1996)',\n 103: 'Unforgettable (1996)',\n 104: 'Happy Gilmore (1996)',\n 105: 'Bridges of Madison County, The (1995)',\n 106: 'Nobody Loves Me (Keiner liebt mich) (1994)',\n 107: 'Muppet Treasure Island (1996)',\n 108: 'Catwalk (1996)',\n 109: 'Headless Body in Topless Bar (1995)',\n 110: 'Braveheart (1995)',\n 111: 'Taxi Driver (1976)',\n 112: 'Rumble in the Bronx (Hont faan kui) (1995)',\n 113: 'Before and After (1996)',\n 114: "Margaret's Museum (1995)",\n 115: 'Happiness Is in the Field (Bonheur est dans le pré, Le) (1995)',\n 116: 'Anne Frank Remembered (1995)',\n 117: "Young Poisoner's Handbook, The (1995)",\n 118: 'If Lucy Fell (1996)',\n 119: 'Steal Big, Steal Little (1995)',\n 120: 'Race the Sun (1996)',\n 121: 'Boys of St. Vincent, The (1992)',\n 122: 'Boomerang (1992)',\n 123: 'Chungking Express (Chung Hing sam lam) (1994)',\n 124: "Star Maker, The (Uomo delle stelle, L') (1995)",\n 125: 'Flirting With Disaster (1996)',\n 126: 'NeverEnding Story III, The (1994)',\n 127: 'Silences of the Palace, The (Saimt el Qusur) (1994)',\n 128: "Jupiter's Wife (1994)",\n 129: 'Pie in the Sky (1996)',\n 130: 'Angela (1995)',\n 131: 'Frankie Starlight (1995)',\n 132: 'Jade (1995)',\n 133: 'Nueba Yol (1995)',\n 134: 'Sonic Outlaws (1995)',\n 135: 'Down Periscope (1996)',\n 136: 'From the Journals of Jean Seberg (1995)',\n 137: 'Man of the Year (1995)',\n 138: 'Neon Bible, The (1995)',\n 139: 'Target (1995)',\n 140: 'Up Close and Personal (1996)',\n 141: 'Birdcage, The (1996)',\n 142: 'Shadows (Cienie) (1988)',\n 143: 'Gospa (1995)',\n 144: 'Brothers McMullen, The (1995)',\n 145: 'Bad Boys (1995)',\n 146: 'Amazing Panda Adventure, The (1995)',\n 147: 'Basketball Diaries, The (1995)',\n 148: 'Awfully Big Adventure, An (1995)',\n 149: 'Amateur (1994)',\n 150: 'Apollo 13 (1995)',\n 151: 'Rob Roy (1995)',\n 152: 'Addiction, The (1995)',\n 153: 'Batman Forever (1995)',\n 154: 'Beauty of the Day (Belle de jour) (1967)',\n 155: 'Beyond Rangoon (1995)',\n 156: 'Blue in the Face (1995)',\n 157: 'Canadian Bacon (1995)',\n 158: 'Casper (1995)',\n 159: 'Clockers (1995)',\n 160: 'Congo (1995)',\n 161: 'Crimson Tide (1995)',\n 162: 'Crumb (1994)',\n 163: 'Desperado (1995)',\n 164: 'Devil in a Blue Dress (1995)',\n 165: 'Die Hard: With a Vengeance (1995)',\n 166: 'Doom Generation, The (1995)',\n 167: 'Feast of July (1995)',\n 168: 'First Knight (1995)',\n 169: 'Free Willy 2: The Adventure Home (1995)',\n 170: 'Hackers (1995)',\n 171: 'Jeffrey (1995)',\n 172: 'Johnny Mnemonic (1995)',\n 173: 'Judge Dredd (1995)',\n 174: 'Jury Duty (1995)',\n 175: 'Kids (1995)',\n 176: 'Living in Oblivion (1995)',\n 177: 'Lord of Illusions (1995)',\n 178: 'Love & Human Remains (1993)',\n 179: 'Mad Love (1995)',\n 180: 'Mallrats (1995)',\n 181: 'Mighty Morphin Power Rangers: The Movie (1995)',\n 182: 'Moonlight and Valentino (1995)',\n 183: 'Mute Witness (1994)',\n 184: 'Nadja (1994)',\n 185: 'Net, The (1995)',\n 186: 'Nine Months (1995)',\n 187: 'Party Girl (1995)',\n 188: 'Prophecy, The (1995)',\n 189: 'Reckless (1995)',\n 190: 'Safe (1995)',\n 191: 'Scarlet Letter, The (1995)',\n 192: 'The Show (1995)',\n 193: 'Showgirls (1995)',\n 194: 'Smoke (1995)',\n 195: 'Something to Talk About (1995)',\n 196: 'Species (1995)',\n 197: 'Stars Fell on Henrietta, The (1995)',\n 198: 'Strange Days (1995)',\n 199: 'Umbrellas of Cherbourg, The (Parapluies de Cherbourg, Les) (1964)',\n 200: 'Tie That Binds, The (1995)',\n 201: 'Three Wishes (1995)',\n 202: 'Total Eclipse (1995)',\n 203: 'To Wong Foo, Thanks for Everything! Julie Newmar (1995)',\n 204: 'Under Siege 2: Dark Territory (1995)',\n 205: 'Unstrung Heroes (1995)',\n 206: 'Unzipped (1995)',\n 207: 'Walk in the Clouds, A (1995)',\n 208: 'Waterworld (1995)',\n 209: "White Man's Burden (1995)",\n 210: 'Wild Bill (1995)',\n 211: 'Browning Version, The (1994)',\n 212: 'Bushwhacked (1995)',\n 213: 'Burnt by the Sun (Utomlyonnye solntsem) (1994)',\n 214: 'Before the Rain (Pred dozhdot) (1994)',\n 215: 'Before Sunrise (1995)',\n 216: 'Billy Madison (1995)',\n 217: 'Babysitter, The (1995)',\n 218: 'Boys on the Side (1995)',\n 219: 'Cure, The (1995)',\n 220: 'Castle Freak (1995)',\n 222: 'Circle of Friends (1995)',\n 223: 'Clerks (1994)',\n 224: 'Don Juan DeMarco (1995)',\n 225: 'Disclosure (1994)',\n 226: 'Dream Man (1995)',\n 227: 'Drop Zone (1994)',\n 228: 'Destiny Turns on the Radio (1995)',\n 229: 'Death and the Maiden (1994)',\n 230: 'Dolores Claiborne (1995)',\n 231: 'Dumb & Dumber (Dumb and Dumber) (1994)',\n 232: 'Eat Drink Man Woman (Yin shi nan nu) (1994)',\n 233: 'Exotica (1994)',\n 234: 'Exit to Eden (1994)',\n 235: 'Ed Wood (1994)',\n 236: 'French Kiss (1995)',\n 237: 'Forget Paris (1995)',\n 238: 'Far From Home: The Adventures of Yellow Dog (1995)',\n 239: 'Goofy Movie, A (1995)',\n 240: 'Hideaway (1995)',\n 241: 'Fluke (1995)',\n 242: 'Farinelli: il castrato (1994)',\n 243: 'Gordy (1995)',\n 244: 'Gumby: The Movie (1995)',\n 245: 'The Glass Shield (1994)',\n 246: 'Hoop Dreams (1994)',\n 247: 'Heavenly Creatures (1994)',\n 248: 'Houseguest (1994)',\n 249: 'Immortal Beloved (1994)',\n 250: 'Heavyweights (Heavy Weights) (1995)',\n 251: 'Hunted, The (1995)',\n 252: 'I.Q. (1994)',\n 253: 'Interview with the Vampire: The Vampire Chronicles (1994)',\n 254: 'Jefferson in Paris (1995)',\n 255: 'Jerky Boys, The (1995)',\n 256: 'Junior (1994)',\n 257: 'Just Cause (1995)',\n 258: "Kid in King Arthur's Court, A (1995)",\n 259: 'Kiss of Death (1995)',\n 260: 'Star Wars: Episode IV - A New Hope (1977)',\n 261: 'Little Women (1994)',\n 262: 'Little Princess, A (1995)',\n 263: 'Ladybird Ladybird (1994)',\n 264: "Enfer, L' (1994)",\n 265: 'Like Water for Chocolate (Como agua para chocolate) (1992)',\n 266: 'Legends of the Fall (1994)',\n 267: 'Major Payne (1995)',\n 268: 'Little Odessa (1994)',\n 269: 'My Crazy Life (Mi vida loca) (1993)',\n 270: 'Love Affair (1994)',\n 271: 'Losing Isaiah (1995)',\n 272: 'Madness of King George, The (1994)',\n 273: "Mary Shelley's Frankenstein (Frankenstein) (1994)",\n 274: 'Man of the House (1995)',\n 275: 'Mixed Nuts (1994)',\n 276: 'Milk Money (1994)',\n 277: 'Miracle on 34th Street (1994)',\n 278: 'Miami Rhapsody (1995)',\n 279: 'My Family (1995)',\n 280: 'Murder in the First (1995)',\n 281: "Nobody's Fool (1994)",\n 282: 'Nell (1994)',\n 283: 'New Jersey Drive (1995)',\n 284: 'New York Cop (Nyû Yôku no koppu) (1993)',\n 285: 'Beyond Bedlam (1993)',\n 286: 'Nemesis 2: Nebula (1995)',\n 287: 'Nina Takes a Lover (1994)',\n 288: 'Natural Born Killers (1994)',\n 289: 'Only You (1994)',\n 290: 'Once Were Warriors (1994)',\n 292: 'Outbreak (1995)',\n 293: 'Léon: The Professional (a.k.a. The Professional) (Léon) (1994)',\n 294: 'Perez Family, The (1995)',\n 295: "Pyromaniac's Love Story, A (1995)",\n 296: 'Pulp Fiction (1994)',\n 297: 'Panther (1995)',\n 298: 'Pushing Hands (Tui shou) (1992)',\n 299: 'Priest (1994)',\n 300: 'Quiz Show (1994)',\n 301: 'Picture Bride (Bijo photo) (1994)',\n 302: 'Queen Margot (Reine Margot, La) (1994)',\n 303: 'Quick and the Dead, The (1995)',\n 304: 'Roommates (1995)',\n 305: 'Ready to Wear (Pret-A-Porter) (1994)',\n 306: 'Three Colors: Red (Trois couleurs: Rouge) (1994)',\n 307: 'Three Colors: Blue (Trois couleurs: Bleu) (1993)',\n 308: 'Three Colors: White (Trzy kolory: Bialy) (1994)',\n 309: 'Red Firecracker, Green Firecracker (Pao Da Shuang Deng) (1994)',\n 310: 'Rent-a-Kid (1995)',\n 311: 'Relative Fear (1994)',\n 312: 'Stuart Saves His Family (1995)',\n 313: 'Swan Princess, The (1994)',\n 314: 'Secret of Roan Inish, The (1994)',\n 315: 'Specialist, The (1994)',\n 316: 'Stargate (1994)',\n 317: 'Santa Clause, The (1994)',\n 318: 'Shawshank Redemption, The (1994)',\n 319: 'Shallow Grave (1994)',\n 320: 'Suture (1993)',\n 321: 'Strawberry and Chocolate (Fresa y chocolate) (1993)',\n 322: 'Swimming with Sharks (1995)',\n 324: 'Sum of Us, The (1994)',\n 325: "National Lampoon's Senior Trip (1995)",\n 326: 'To Live (Huozhe) (1994)',\n 327: 'Tank Girl (1995)',\n 328: 'Tales from the Crypt Presents: Demon Knight (1995)',\n 329: 'Star Trek: Generations (1994)',\n 330: 'Tales from the Hood (1995)',\n 331: 'Tom & Viv (1994)',\n 332: 'Village of the Damned (1995)',\n 333: 'Tommy Boy (1995)',\n 334: 'Vanya on 42nd Street (1994)',\n 335: 'Underneath (1995)',\n 336: 'Walking Dead, The (1995)',\n 337: "What's Eating Gilbert Grape (1993)",\n 338: 'Virtuosity (1995)',\n 339: 'While You Were Sleeping (1995)',\n 340: 'War, The (1994)',\n 341: 'Double Happiness (1994)',\n 342: "Muriel's Wedding (1994)",\n 343: 'Baby-Sitters Club, The (1995)',\n 344: 'Ace Ventura: Pet Detective (1994)',\n 345: 'Adventures of Priscilla, Queen of the Desert, The (1994)',\n 346: 'Backbeat (1993)',\n 347: 'Bitter Moon (1992)',\n 348: 'Bullets Over Broadway (1994)',\n 349: 'Clear and Present Danger (1994)',\n 350: 'Client, The (1994)',\n 351: 'Corrina, Corrina (1994)',\n 352: 'Crooklyn (1994)',\n 353: 'Crow, The (1994)',\n 354: 'Cobb (1994)',\n 355: 'Flintstones, The (1994)',\n 356: 'Forrest Gump (1994)',\n 357: 'Four Weddings and a Funeral (1994)',\n 358: 'Higher Learning (1995)',\n 359: 'I Like It Like That (1994)',\n 360: 'I Love Trouble (1994)',\n 361: 'It Could Happen to You (1994)',\n 362: 'Jungle Book, The (1994)',\n 363: 'Wonderful, Horrible Life of Leni Riefenstahl, The (Macht der Bilder: Leni Riefenstahl, Die) (1993)',\n 364: 'Lion King, The (1994)',\n 365: 'Little Buddha (1993)',\n 366: "Wes Craven's New Nightmare (Nightmare on Elm Street Part 7: Freddy's Finale, A) (1994)",\n 367: 'Mask, The (1994)',\n 368: 'Maverick (1994)',\n 369: 'Mrs. Parker and the Vicious Circle (1994)',\n 370: 'Naked Gun 33 1/3: The Final Insult (1994)',\n 371: 'Paper, The (1994)',\n 372: 'Reality Bites (1994)',\n 373: 'Red Rock West (1992)',\n 374: 'Richie Rich (1994)',\n 375: 'Safe Passage (1994)',\n 376: 'River Wild, The (1994)',\n 377: 'Speed (1994)',\n 378: 'Speechless (1994)',\n 379: 'Timecop (1994)',\n 380: 'True Lies (1994)',\n 381: 'When a Man Loves a Woman (1994)',\n 382: 'Wolf (1994)',\n 383: 'Wyatt Earp (1994)',\n 384: 'Bad Company (1995)',\n 385: 'Man of No Importance, A (1994)',\n 386: 'S.F.W. (1994)',\n 387: 'Low Down Dirty Shame, A (1994)',\n 388: 'Boys Life (1995)',\n 389: 'Colonel Chabert, Le (1994)',\n 390: 'Faster Pussycat! Kill! Kill! (1965)',\n 391: "Jason's Lyric (1994)",\n 392: 'Secret Adventures of Tom Thumb, The (1993)',\n 393: 'Street Fighter (1994)',\n 394: 'Coldblooded (1995)',\n 395: 'Desert Winds (1995)',\n 396: 'Fall Time (1995)',\n 397: 'Fear, The (1995)',\n 398: 'Frank and Ollie (1995)',\n 399: 'Girl in the Cadillac (1995)',\n 400: 'Homage (1995)',\n 401: 'Mirage (1995)',\n 402: 'Open Season (1996)',\n 403: 'Two Crimes (Dos crímenes) (1995)',\n 404: 'Brother Minister: The Assassination of Malcolm X (1994)',\n 405: 'Highlander III: The Sorcerer (a.k.a. Highlander: The Final Dimension) (1994)',\n 406: 'Federal Hill (1994)',\n 407: 'In the Mouth of Madness (1995)',\n 408: '8 Seconds (1994)',\n 409: 'Above the Rim (1994)',\n 410: 'Addams Family Values (1993)',\n 411: 'Martin Lawrence: You So Crazy (1994)',\n 412: 'Age of Innocence, The (1993)',\n 413: 'Airheads (1994)',\n 414: 'Air Up There, The (1994)',\n 415: 'Another Stakeout (1993)',\n 416: 'Bad Girls (1994)',\n 417: 'Barcelona (1994)',\n 418: 'Being Human (1993)',\n 419: 'Beverly Hillbillies, The (1993)',\n 420: 'Beverly Hills Cop III (1994)',\n 421: 'Black Beauty (1994)',\n 422: 'Blink (1994)',\n 423: 'Blown Away (1994)',\n 424: 'Blue Chips (1994)',\n 425: 'Blue Sky (1994)',\n 426: 'Body Snatchers (1993)',\n 427: 'Boxing Helena (1993)',\n 428: 'Bronx Tale, A (1993)',\n 429: 'Cabin Boy (1994)',\n 430: 'Calendar Girl (1993)',\n 431: "Carlito's Way (1993)",\n 432: "City Slickers II: The Legend of Curly's Gold (1994)",\n 433: 'Clean Slate (1994)',\n 434: 'Cliffhanger (1993)',\n 435: 'Coneheads (1993)',\n 436: 'Color of Night (1994)',\n 437: 'Cops and Robbersons (1994)',\n 438: 'Cowboy Way, The (1994)',\n 439: 'Dangerous Game (1993)',\n 440: 'Dave (1993)',\n 441: 'Dazed and Confused (1993)',\n 442: 'Demolition Man (1993)',\n 443: 'Endless Summer 2, The (1994)',\n 444: 'Even Cowgirls Get the Blues (1993)',\n 445: 'Fatal Instinct (1993)',\n 446: 'Farewell My Concubine (Ba wang bie ji) (1993)',\n 447: 'Favor, The (1994)',\n 448: 'Fearless (1993)',\n 449: 'Fear of a Black Hat (1994)',\n 450: 'With Honors (1994)',\n 451: 'Flesh and Bone (1993)',\n 452: "Widows' Peak (1994)",\n 453: 'For Love or Money (1993)',\n 454: 'Firm, The (1993)',\n 455: 'Free Willy (1993)',\n 456: 'Fresh (1994)',\n 457: 'Fugitive, The (1993)',\n 458: 'Geronimo: An American Legend (1993)',\n 459: 'Getaway, The (1994)',\n 460: 'Getting Even with Dad (1994)',\n 461: 'Go Fish (1994)',\n 462: 'Good Man in Africa, A (1994)',\n 463: 'Guilty as Sin (1993)',\n 464: 'Hard Target (1993)',\n 465: 'Heaven & Earth (1993)',\n 466: 'Hot Shots! Part Deux (1993)',\n 467: 'Live Nude Girls (1995)',\n 468: 'Englishman Who Went Up a Hill But Came Down a Mountain, The (1995)',\n 469: 'House of the Spirits, The (1993)',\n 470: 'House Party 3 (1994)',\n 471: 'Hudsucker Proxy, The (1994)',\n 472: "I'll Do Anything (1994)",\n 473: 'In the Army Now (1994)',\n 474: 'In the Line of Fire (1993)',\n 475: 'In the Name of the Father (1993)',\n 476: 'Inkwell, The (1994)',\n 477: "What's Love Got to Do with It? (1993)",\n 478: 'Jimmy Hollywood (1994)',\n 479: 'Judgment Night (1993)',\n 480: 'Jurassic Park (1993)',\n 481: 'Kalifornia (1993)',\n 482: 'Killing Zoe (1994)',\n 483: 'King of the Hill (1993)',\n 484: 'Lassie (1994)',\n 485: 'Last Action Hero (1993)',\n 486: 'Life with Mikey (1993)',\n 487: 'Lightning Jack (1994)',\n 488: 'M. Butterfly (1993)',\n 489: 'Made in America (1993)',\n 490: 'Malice (1993)',\n 491: 'Man Without a Face, The (1993)',\n 492: 'Manhattan Murder Mystery (1993)',\n 493: 'Menace II Society (1993)',\n 494: 'Executive Decision (1996)',\n 495: 'In the Realm of the Senses (Ai no corrida) (1976)',\n 496: 'What Happened Was... (1994)',\n 497: 'Much Ado About Nothing (1993)',\n 498: 'Mr. Jones (1993)',\n 499: 'Mr. Wonderful (1993)',\n 500: 'Mrs. Doubtfire (1993)',\n 501: 'Naked (1993)',\n 502: 'Next Karate Kid, The (1994)',\n 503: 'New Age, The (1994)',\n 504: 'No Escape (1994)',\n 505: 'North (1994)',\n 506: 'Orlando (1992)',\n 507: 'Perfect World, A (1993)',\n 508: 'Philadelphia (1993)',\n 509: 'Piano, The (1993)',\n 510: 'Poetic Justice (1993)',\n 511: 'Program, The (1993)',\n 512: 'Puppet Masters, The (1994)',\n 513: 'Radioland Murders (1994)',\n 514: 'Ref, The (1994)',\n 515: 'Remains of the Day, The (1993)',\n 516: 'Renaissance Man (1994)',\n 517: 'Rising Sun (1993)',\n 518: 'Road to Wellville, The (1994)',\n 519: 'RoboCop 3 (1993)',\n 520: 'Robin Hood: Men in Tights (1993)',\n 521: 'Romeo Is Bleeding (1993)',\n 522: 'Romper Stomper (1992)',\n 523: 'Ruby in Paradise (1993)',\n 524: 'Rudy (1993)',\n 525: 'Saint of Fort Washington, The (1993)',\n 526: 'Savage Nights (Nuits fauves, Les) (1992)',\n 527: "Schindler's List (1993)",\n 528: 'Scout, The (1994)',\n 529: 'Searching for Bobby Fischer (1993)',\n 530: 'Second Best (1994)',\n 531: 'Secret Garden, The (1993)',\n 532: 'Serial Mom (1994)',\n 533: 'Shadow, The (1994)',\n 534: 'Shadowlands (1993)',\n 535: 'Short Cuts (1993)',\n 536: 'Simple Twist of Fate, A (1994)',\n 537: 'Sirens (1994)',\n 538: 'Six Degrees of Separation (1993)',\n 539: 'Sleepless in Seattle (1993)',\n 540: 'Sliver (1993)',\n 541: 'Blade Runner (1982)',\n 542: 'Son in Law (1993)',\n 543: 'So I Married an Axe Murderer (1993)',\n 544: 'Striking Distance (1993)',\n 546: 'Super Mario Bros. (1993)',\n 547: 'Surviving the Game (1994)',\n 548: 'Terminal Velocity (1994)',\n 549: 'Thirty-Two Short Films About Glenn Gould (1993)',\n 550: 'Threesome (1994)',\n 551: 'Nightmare Before Christmas, The (1993)',\n 552: 'Three Musketeers, The (1993)',\n 553: 'Tombstone (1993)',\n 554: 'Trial by Jury (1994)',\n 555: 'True Romance (1993)',\n 556: 'War Room, The (1993)',\n 558: 'Pagemaster, The (1994)',\n 559: 'Paris, France (1993)',\n 560: 'Beans of Egypt, Maine, The (1994)',\n 561: 'Killer (Bulletproof Heart) (1994)',\n 562: 'Welcome to the Dollhouse (1995)',\n 563: 'Germinal (1993)',\n 564: 'Chasers (1994)',\n 565: 'Cronos (1993)',\n 566: 'Naked in New York (1994)',\n 567: 'Kika (1993)',\n 568: 'Bhaji on the Beach (1993)',\n 569: 'Little Big League (1994)',\n 570: 'Slingshot, The (Kådisbellan) (1993)',\n 571: 'Wedding Gift, The (1994)',\n 572: 'Foreign Student (1994)',\n 573: 'Ciao, Professore! (Io speriamo che me la cavo) (1992)',\n 574: 'Spanking the Monkey (1994)',\n 575: 'Little Rascals, The (1994)',\n 576: 'Fausto (1993)',\n 577: 'Andre (1994)',\n 579: 'Escort, The (Scorta, La) (1993)',\n 580: 'Princess Caraboo (1994)',\n 581: 'Celluloid Closet, The (1995)',\n 582: 'Métisse (Café au Lait) (1993)',\n 583: 'Dear Diary (Caro Diario) (1994)',\n 584: "I Don't Want to Talk About It (De eso no se habla) (1993)",\n 585: 'Brady Bunch Movie, The (1995)',\n 586: 'Home Alone (1990)',\n 587: 'Ghost (1990)',\n 588: 'Aladdin (1992)',\n 589: 'Terminator 2: Judgment Day (1991)',\n 590: 'Dances with Wolves (1990)',\n 591: 'Tough and Deadly (1995)',\n 592: 'Batman (1989)',\n 593: 'Silence of the Lambs, The (1991)',\n 594: 'Snow White and the Seven Dwarfs (1937)',\n 595: 'Beauty and the Beast (1991)',\n 596: 'Pinocchio (1940)',\n 597: 'Pretty Woman (1990)',\n 598: 'Window to Paris (Okno v Parizh) (1994)',\n 599: 'Wild Bunch, The (1969)',\n 600: 'Love and a .45 (1994)',\n 601: "Wooden Man's Bride, The (Yan shen) (1994)",\n 602: 'Great Day in Harlem, A (1994)',\n 603: 'Bye Bye, Love (1995)',\n 604: 'Criminals (1996)',\n 605: 'One Fine Day (1996)',\n 606: 'Candyman: Farewell to the Flesh (1995)',\n 607: 'Century (1993)',\n 608: 'Fargo (1996)',\n 609: 'Homeward Bound II: Lost in San Francisco (1996)',\n 610: 'Heavy Metal (1981)',\n 611: 'Hellraiser: Bloodline (1996)',\n 612: 'Pallbearer, The (1996)',\n 613: 'Jane Eyre (1996)',\n 614: 'Loaded (1994)',\n 615: 'Bread and Chocolate (Pane e cioccolata) (1973)',\n 616: 'Aristocats, The (1970)',\n 617: 'Flower of My Secret, The (La flor de mi secreto) (1995)',\n 618: 'Two Much (1995)',\n 619: 'Ed (1996)',\n 620: 'Scream of Stone (Cerro Torre: Schrei aus Stein) (1991)',\n 621: 'My Favorite Season (1993)',\n 623: 'Modern Affair, A (1995)',\n 625: 'Asfour Stah (1990)',\n 626: 'Thin Line Between Love and Hate, A (1996)',\n 627: 'Last Supper, The (1995)',\n 628: 'Primal Fear (1996)',\n 629: 'Rude (1995)',\n 630: 'Carried Away (1996)',\n 631: 'All Dogs Go to Heaven 2 (1996)',\n 632: 'Land and Freedom (Tierra y libertad) (1995)',\n 633: 'Denise Calls Up (1995)',\n 634: 'Theodore Rex (1995)',\n 635: 'Family Thing, A (1996)',\n 636: 'Frisk (1995)',\n 637: 'Sgt. Bilko (1996)',\n 638: 'Jack and Sarah (1995)',\n 639: 'Girl 6 (1996)',\n 640: 'Diabolique (1996)',\n 641: 'Little Indian, Big City (Un indien dans la ville) (1994)',\n 642: 'Roula (1995)',\n 643: 'Peanuts - Die Bank zahlt alles (1996)',\n 644: 'Happy Weekend (1996)',\n 645: 'Nelly & Monsieur Arnaud (1995)',\n 647: 'Courage Under Fire (1996)',\n 648: 'Mission: Impossible (1996)',\n 649: 'Cold Fever (Á köldum klaka) (1995)',\n 650: 'Moll Flanders (1996)',\n 651: 'Superweib, Das (1996)',\n 652: '301, 302 (301/302) (1995)',\n 653: 'Dragonheart (1996)',\n 654: 'And Nobody Weeps for Me (Und keiner weint mir nach) (1996)',\n 655: "My Mother's Courage (Mutters Courage) (1995)",\n 656: 'Eddie (1996)',\n 657: 'Yankee Zulu (1994)',\n 658: "Billy's Holiday (1995)",\n 659: 'Purple Noon (Plein soleil) (1960)',\n 660: 'August (1996)',\n 661: 'James and the Giant Peach (1996)',\n 662: 'Fear (1996)',\n 663: 'Kids in the Hall: Brain Candy (1996)',\n 664: 'Faithful (1996)',\n 665: 'Underground (1995)',\n 666: 'All Things Fair (Lust och fägring stor) (1995)',\n 667: 'Bloodsport 2 (a.k.a. Bloodsport II: The Next Kumite) (1996)',\n 668: 'Song of the Little Road (Pather Panchali) (1955)',\n 670: 'World of Apu, The (Apur Sansar) (1959)',\n 671: 'Mystery Science Theater 3000: The Movie (1996)',\n 672: 'Tarantella (1995)',\n 673: 'Space Jam (1996)',\n 674: 'Barbarella (1968)',\n 675: 'Hostile Intentions (1994)',\n 676: 'They Bite (1996)',\n 678: 'Some Folks Call It a Sling Blade (1993)',\n 679: 'Run of the Country, The (1995)',\n 680: 'Alphaville (Alphaville, une étrange aventure de Lemmy Caution) (1965)',\n 681: 'Coup de torchon (Clean Slate) (1981)',\n 682: 'Tigrero: A Film That Was Never Made (1994)',\n 683: "Eye of Vichy, The (Oeil de Vichy, L') (1993)",\n 684: 'Windows (1980)',\n 685: "It's My Party (1996)",\n 687: 'Country Life (1994)',\n 688: 'Operation Dumbo Drop (1995)',\n 690: 'Promise, The (Versprechen, Das) (1995)',\n 691: 'Mrs. Winterbourne (1996)',\n 692: 'Solo (1996)',\n 693: 'Under the Domim Tree (Etz Hadomim Tafus) (1994)',\n 694: 'Substitute, The (1996)',\n 695: 'True Crime (1996)',\n 696: 'Butterfly Kiss (1995)',\n 697: 'Feeling Minnesota (1996)',\n 698: 'Delta of Venus (1995)',\n 699: 'To Cross the Rubicon (1991)',\n 700: 'Angus (1995)',\n 701: 'Daens (1992)',\n 702: 'Faces (1968)',\n 703: 'Boys (1996)',\n 704: 'Quest, The (1996)',\n 705: 'Cosi (1996)',\n 706: 'Sunset Park (1996)',\n 707: 'Mulholland Falls (1996)',\n 708: 'Truth About Cats & Dogs, The (1996)',\n 709: 'Oliver & Company (1988)',\n 710: 'Celtic Pride (1996)',\n 711: 'Flipper (1996)',\n 712: 'Captives (1994)',\n 713: 'Of Love and Shadows (1994)',\n 714: 'Dead Man (1995)',\n 715: 'Horseman on the Roof, The (Hussard sur le toit, Le) (1995)',\n 716: 'Switchblade Sisters (1975)',\n 717: 'Mouth to Mouth (Boca a boca) (1995)',\n 718: 'Visitors, The (Visiteurs, Les) (1993)',\n 719: 'Multiplicity (1996)',\n 720: 'Wallace & Gromit: The Best of Aardman Animation (1996)',\n 721: 'Halfmoon (Paul Bowles - Halbmond) (1995)',\n 722: 'Haunted World of Edward D. Wood Jr., The (1996)',\n 723: 'Two Friends (1986)',\n 724: 'Craft, The (1996)',\n 725: 'Great White Hype, The (1996)',\n 726: 'Last Dance (1996)',\n 727: 'War Stories (1995)',\n 728: 'Cold Comfort Farm (1995)',\n 729: 'Institute Benjamenta, or This Dream People Call Human Life (1995)',\n 730: 'Low Life (1994)',\n 731: "Heaven's Prisoners (1996)",\n 732: 'Original Gangstas (1996)',\n 733: 'Rock, The (1996)',\n 734: 'Getting Away With Murder (1996)',\n 735: 'Cemetery Man (Dellamorte Dellamore) (1994)',\n 736: 'Twister (1996)',\n 737: 'Barb Wire (1996)',\n 738: 'Garçu, Le (1995)',\n 739: 'Honey Moon (Honigmond) (1996)',\n 741: 'Ghost in the Shell (Kôkaku kidôtai) (1995)',\n 742: 'Thinner (1996)',\n 743: 'Spy Hard (1996)',\n 744: 'Brothers in Trouble (1995)',\n 745: 'Wallace & Gromit: A Close Shave (1995)',\n 746: 'Force of Evil (1948)',\n 747: 'Stupids, The (1996)',\n 748: 'Arrival, The (1996)',\n 749: 'Man from Down Under, The (1943)',\n 750: 'Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb (1964)',\n 751: 'Careful (1992)',\n 752: 'Vermont Is For Lovers (1992)',\n 753: 'Month by the Lake, A (1995)',\n 754: 'Gold Diggers: The Secret of Bear Mountain (1995)',\n 755: 'Kim (1950)',\n 756: 'Carmen Miranda: Bananas Is My Business (1994)',\n 757: 'Ashes of Time (Dung che sai duk) (1994)',\n 758: 'Jar, The (Khomreh) (1992)',\n 759: 'Maya Lin: A Strong Clear Vision (1994)',\n 760: 'Stalingrad (1993)',\n 761: 'Phantom, The (1996)',\n 762: 'Striptease (1996)',\n 763: 'Last of the High Kings, The (a.k.a. Summer Fling) (1996)',\n 764: 'Heavy (1995)',\n 765: 'Jack (1996)',\n 766: 'I Shot Andy Warhol (1996)',\n 767: 'Grass Harp, The (1995)',\n 768: "Someone Else's America (1995)",\n 769: 'Marlene Dietrich: Shadow and Light (1996)',\n 770: 'Costa Brava (1946)',\n 771: 'Life Is Rosy (a.k.a. Life Is Beautiful) (Vie est belle, La) (1987)',\n 772: 'Quartier Mozart (1992)',\n 773: 'Touki Bouki (1973)',\n 774: "Wend Kuuni (a.k.a. God's Gift) (1982)",\n 775: 'Spirits of the Dead (1968)',\n 776: 'Babyfever (1994)',\n 777: "Pharaoh's Army (1995)",\n 778: 'Trainspotting (1996)',\n 779: "'Til There Was You (1997)",\n 780: 'Independence Day (a.k.a. ID4) (1996)',\n 781: 'Stealing Beauty (1996)',\n 782: 'Fan, The (1996)',\n 783: 'Hunchback of Notre Dame, The (1996)',\n 784: 'Cable Guy, The (1996)',\n 785: 'Kingpin (1996)',\n 786: 'Eraser (1996)',\n 787: 'Gate of Heavenly Peace, The (1995)',\n 788: 'Nutty Professor, The (1996)',\n 789: 'I, the Worst of All (Yo, la peor de todas) (1990)',\n 790: 'Unforgettable Summer, An (Un été inoubliable) (1994)',\n 791: 'Last Klezmer: Leopold Kozlowski, His Life and Music, The (1994)',\n 792: 'Hungarian Fairy Tale, A (Hol volt, hol nem volt) (1987)',\n 793: "My Life and Times With Antonin Artaud (En compagnie d'Antonin Artaud) (1993)",\n 794: 'Midnight Dancers (Sibak) (1994)',\n 795: 'Somebody to Love (1994)',\n 796: 'Very Natural Thing, A (1974)',\n 797: 'Old Lady Who Walked in the Sea, The (Vieille qui marchait dans la mer, La) (1991)',\n 798: 'Daylight (1996)',\n 799: 'Frighteners, The (1996)',\n 800: 'Lone Star (1996)',\n 801: 'Harriet the Spy (1996)',\n 802: 'Phenomenon (1996)',\n 803: 'Walking and Talking (1996)',\n 804: "She's the One (1996)",\n 805: 'Time to Kill, A (1996)',\n 806: 'American Buffalo (1996)',\n 807: 'Rendezvous in Paris (Rendez-vous de Paris, Les) (1995)',\n 808: 'Alaska (1996)',\n 809: 'Fled (1996)',\n 810: 'Kazaam (1996)',\n 812: 'Magic Hunter (Büvös vadász) (1994)',\n 813: 'Larger Than Life (1996)',\n 814: 'Boy Called Hate, A (1995)',\n 815: 'Power 98 (1996)',\n 816: 'Two Deaths (1995)',\n 818: 'Very Brady Sequel, A (1996)',\n 819: 'Stefano Quantestorie (1993)',\n 820: 'Death in the Garden (Mort en ce jardin, La) (1956)',\n 821: 'Crude Oasis, The (1995)',\n 822: 'Hedd Wyn (1992)',\n 823: 'Collector, The (La collectionneuse) (1967)',\n 824: 'Kaspar Hauser (1993)',\n 825: 'Regular Guys (Echte Kerle) (1996)',\n 826: 'Women Robbers (Diebinnen) (1995)',\n 827: 'Convent, The (O Convento) (1995)',\n 828: 'Adventures of Pinocchio, The (1996)',\n 829: "Joe's Apartment (1996)",\n 830: 'First Wives Club, The (1996)',\n 831: 'Stonewall (1995)',\n 832: 'Ransom (1996)',\n 833: 'High School High (1996)',\n 834: 'Phat Beach (1996)',\n 835: 'Foxfire (1996)',\n 836: 'Chain Reaction (1996)',\n 837: 'Matilda (1996)',\n 838: 'Emma (1996)',\n 839: 'Crow: City of Angels, The (1996)',\n 840: 'House Arrest (1996)',\n 841: 'Eyes Without a Face (Yeux sans visage, Les) (1959)',\n 842: 'Tales from the Crypt Presents: Bordello of Blood (1996)',\n 843: 'Lotto Land (1995)',\n 844: 'Story of Xinghua, The (Xinghua san yue tian) (1994)',\n 845: 'Day the Sun Turned Cold, The (Tianguo niezi) (1994)',\n 846: 'Flirt (1995)',\n 847: 'Big Squeeze, The (1996)',\n 848: 'Spitfire Grill, The (1996)',\n 849: 'Escape from L.A. (1996)',\n 850: 'Cyclo (Xich lo) (1995)',\n 851: 'Basquiat (1996)',\n 852: 'Tin Cup (1996)',\n 853: 'Dingo (1991)',\n 854: 'Ballad of Narayama, The (Narayama Bushiko) (1958)',\n 855: 'Every Other Weekend (Un week-end sur deux) (1990)',\n 856: 'Mille bolle blu (1993)',\n 857: 'Crows and Sparrows (Wuya yu maque) (1949)',\n 858: 'Godfather, The (1972)',\n 859: 'Hippie Revolution, The (1996)',\n 860: 'Maybe, Maybe Not (Bewegte Mann, Der) (1994)',\n 861: 'Supercop (Police Story 3: Supercop) (Jing cha gu shi III: Chao ji jing cha) (1992)',\n 862: 'Manny & Lo (1996)',\n 864: 'Wife, The (1995)',\n 865: 'Small Faces (1996)',\n 866: 'Bound (1996)',\n 867: 'Carpool (1996)',\n 868: 'Death in Brunswick (1991)',\n 869: 'Kansas City (1996)',\n 870: "Gone Fishin' (1997)",\n 871: "Lover's Knot (1996)",\n 872: "Vive L'Amour (Ai qing wan sui) (1994)",\n 873: 'Shadow of Angels (Schatten der Engel) (1976)',\n 874: 'Killer: A Journal of Murder (1995)',\n 875: 'Nothing to Lose (1994)',\n 876: 'Supercop 2 (Project S) (Chao ji ji hua) (1993)',\n 877: 'Girls Town (1996)',\n 878: 'Bye-Bye (1995)',\n 879: 'Relic, The (1997)',\n 880: 'Island of Dr. Moreau, The (1996)',\n 881: 'First Kid (1996)',\n 882: 'Trigger Effect, The (1996)',\n 884: 'Sweet Nothing (1996)',\n 885: 'Bogus (1996)',\n 886: 'Bulletproof (1996)',\n 887: 'Talk of Angels (1998)',\n 889: '1-900 (06) (1994)',\n 890: 'Baton Rouge (Bâton rouge) (1988)',\n 891: 'Halloween: The Curse of Michael Myers (Halloween 6: The Curse of Michael Myers) (1995)',\n 892: 'Twelfth Night (1996)',\n 893: 'Mother Night (1996)',\n 894: 'Liebelei (1933)',\n 895: 'Venice/Venice (1992)',\n 896: 'Wild Reeds (Les roseaux sauvages) (1994)',\n 897: 'For Whom the Bell Tolls (1943)',\n 898: 'Philadelphia Story, The (1940)',\n 899: "Singin' in the Rain (1952)",\n 900: 'American in Paris, An (1951)',\n 901: 'Funny Face (1957)',\n 902: "Breakfast at Tiffany's (1961)",\n 903: 'Vertigo (1958)',\n 904: 'Rear Window (1954)',\n 905: 'It Happened One Night (1934)',\n 906: 'Gaslight (1944)',\n 907: 'Gay Divorcee, The (1934)',\n 908: 'North by Northwest (1959)',\n 909: 'Apartment, The (1960)',\n 910: 'Some Like It Hot (1959)',\n 911: 'Charade (1963)',\n 912: 'Casablanca (1942)',\n 913: 'Maltese Falcon, The (1941)',\n 914: 'My Fair Lady (1964)',\n 915: 'Sabrina (1954)',\n 916: 'Roman Holiday (1953)',\n 917: 'Little Princess, The (1939)',\n 918: 'Meet Me in St. Louis (1944)',\n 919: 'Wizard of Oz, The (1939)',\n 920: 'Gone with the Wind (1939)',\n 921: 'My Favorite Year (1982)',\n 922: 'Sunset Blvd. (a.k.a. Sunset Boulevard) (1950)',\n 923: 'Citizen Kane (1941)',\n 924: '2001: A Space Odyssey (1968)',\n 925: 'Golden Earrings (1947)',\n 926: 'All About Eve (1950)',\n 927: 'Women, The (1939)',\n 928: 'Rebecca (1940)',\n 929: 'Foreign Correspondent (1940)',\n 930: 'Notorious (1946)',\n 931: 'Spellbound (1945)',\n 932: 'Affair to Remember, An (1957)',\n 933: 'To Catch a Thief (1955)',\n 934: 'Father of the Bride (1950)',\n 935: 'Band Wagon, The (1953)',\n 936: 'Ninotchka (1939)',\n 937: 'Love in the Afternoon (1957)',\n 938: 'Gigi (1958)',\n 939: 'Reluctant Debutante, The (1958)',\n 940: 'Adventures of Robin Hood, The (1938)',\n 941: 'Mark of Zorro, The (1940)',\n 942: 'Laura (1944)',\n 943: 'Ghost and Mrs. Muir, The (1947)',\n 944: 'Lost Horizon (1937)',\n 945: 'Top Hat (1935)',\n 946: 'To Be or Not to Be (1942)',\n 947: 'My Man Godfrey (1936)',\n 948: 'Giant (1956)',\n 949: 'East of Eden (1955)',\n 950: 'Thin Man, The (1934)',\n 951: 'His Girl Friday (1940)',\n 952: 'Around the World in 80 Days (1956)',\n 953: "It's a Wonderful Life (1946)",\n 954: 'Mr. Smith Goes to Washington (1939)',\n 955: 'Bringing Up Baby (1938)',\n 956: 'Penny Serenade (1941)',\n 957: 'Scarlet Letter, The (1926)',\n 958: 'Lady of Burlesque (1943)',\n 959: 'Of Human Bondage (1934)',\n 960: 'Angel on My Shoulder (1946)',\n 961: 'Little Lord Fauntleroy (1936)',\n 962: 'They Made Me a Criminal (1939)',\n 963: 'Inspector General, The (1949)',\n 964: 'Angel and the Badman (1947)',\n 965: '39 Steps, The (1935)',\n 966: 'A Walk in the Sun (1945)',\n 967: 'Outlaw, The (1943)',\n 968: 'Night of the Living Dead (1968)',\n 969: 'African Queen, The (1951)',\n 970: 'Beat the Devil (1953)',\n 971: 'Cat on a Hot Tin Roof (1958)',\n 972: 'Last Time I Saw Paris, The (1954)',\n 973: 'Meet John Doe (1941)',\n 974: 'Algiers (1938)',\n 975: 'Something to Sing About (1937)',\n 976: 'Farewell to Arms, A (1932)',\n 977: 'Moonlight Murder (1936)',\n 979: 'Nothing Personal (1995)',\n 980: 'Yes, Madam (a.k.a. Police Assassins) (a.k.a. In the Line of Duty 2) (Huang gu shi jie) (1985)',\n 981: 'Dangerous Ground (1997)',\n 982: 'Picnic (1955)',\n 983: 'Madagascar Skin (1995)',\n 984: 'Pompatus of Love, The (1996)',\n 985: 'Small Wonders (1995)',\n 986: 'Fly Away Home (1996)',\n 987: 'Bliss (1997)',\n 988: 'Grace of My Heart (1996)',\n 989: 'Brother of Sleep (Schlafes Bruder) (1995)',\n 990: 'Maximum Risk (1996)',\n 991: 'Michael Collins (1996)',\n 992: "Rich Man's Wife, The (1996)",\n 993: 'Infinity (1996)',\n 994: 'Big Night (1996)',\n 996: 'Last Man Standing (1996)',\n 997: 'Caught (1996)',\n 998: 'Set It Off (1996)',\n 999: '2 Days in the Valley (1996)',\n 1000: 'Curdled (1996)',\n 1001: "Associate, The (Associé, L') (1979)",\n 1002: "Ed's Next Move (1996)",\n 1003: 'Extreme Measures (1996)',\n 1004: 'Glimmer Man, The (1996)',\n 1005: 'D3: The Mighty Ducks (1996)',\n 1006: 'Chamber, The (1996)',\n 1007: 'Apple Dumpling Gang, The (1975)',\n 1008: 'Davy Crockett, King of the Wild Frontier (1955)',\n 1009: 'Escape to Witch Mountain (1975)',\n 1010: 'Love Bug, The (1969)',\n 1011: 'Herbie Rides Again (1974)',\n 1012: 'Old Yeller (1957)',\n 1013: 'Parent Trap, The (1961)',\n 1014: 'Pollyanna (1960)',\n 1015: 'Homeward Bound: The Incredible Journey (1993)',\n 1016: 'Shaggy Dog, The (1959)',\n 1017: 'Swiss Family Robinson (1960)',\n 1018: 'That Darn Cat! (1965)',\n 1019: '20,000 Leagues Under the Sea (1954)',\n 1020: 'Cool Runnings (1993)',\n 1021: 'Angels in the Outfield (1994)',\n 1022: 'Cinderella (1950)',\n ...}
"]}}],"execution_count":0}],"metadata":{"application/vnd.databricks.v1+notebook":{"notebookName":"2.b. Modeling- Collaborative or User-ItemSimilarity","dashboards":[],"notebookMetadata":{"pythonIndentUnit":2},"language":"python","widgets":{},"notebookOrigID":1153725985288476}},"nbformat":4,"nbformat_minor":0}
diff --git a/Notebooks/Recommendation Engine/2.c. Modelling- ALS (Collaborative).ipynb b/Notebooks/Recommendation Engine/2.c. Modelling- ALS (Collaborative).ipynb
new file mode 100644
index 0000000..7a03f5d
--- /dev/null
+++ b/Notebooks/Recommendation Engine/2.c. Modelling- ALS (Collaborative).ipynb
@@ -0,0 +1 @@
+{"cells":[{"cell_type":"markdown","source":["## ALGO DEEP DIVE:\nAlternating Least Square is a matrix factorisation algorithm implemented in Apache Spark ML and built for large-scale collaborative filtering problems."],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"b613a5ea-a8d8-4b15-85c0-7ca5eb901048"}}},{"cell_type":"code","source":["%pip install recommenders\n%pip install datetime"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"9318270a-f427-41d8-b199-f575aa123819"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Python interpreter will be restarted.\nCollecting recommenders\n Using cached recommenders-1.1.0-py3-none-manylinux1_x86_64.whl (335 kB)\nCollecting memory-profiler<1,>=0.54.0\n Using cached memory_profiler-0.60.0-py3-none-any.whl\nCollecting cornac<2,>=1.1.2\n Using cached cornac-1.14.2-cp38-cp38-manylinux1_x86_64.whl (14.4 MB)\nRequirement already satisfied: transformers<5,>=2.5.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.15.0)\nRequirement already satisfied: tqdm<5,>=4.31.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.59.0)\nRequirement already satisfied: seaborn<1,>=0.8.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.11.1)\nRequirement already satisfied: jinja2<3.1,>=2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.11.2)\nCollecting category-encoders<2,>=1.3.0\n Using cached category_encoders-1.3.0-py2.py3-none-any.whl (61 kB)\nRequirement already satisfied: pyyaml<6,>=5.4.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (5.4.1)\nRequirement already satisfied: pandas<2,>1.0.3 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.1.5)\nCollecting bottleneck<2,>=1.2.1\n Using cached Bottleneck-1.3.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl (331 kB)\nRequirement already satisfied: requests<3,>=2.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.25.1)\nRequirement already satisfied: matplotlib<4,>=2.2.2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.4.2)\nRequirement already satisfied: nltk<4,>=3.4 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.6.1)\nRequirement already satisfied: scipy<2,>=1.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.5.2)\nCollecting scikit-surprise>=1.0.6\n Using cached scikit_surprise-1.1.1-cp38-cp38-linux_x86_64.whl\nRequirement already satisfied: lightgbm>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.2.1)\nCollecting retrying>=1.3.3\n Using cached retrying-1.3.3-py3-none-any.whl\nRequirement already satisfied: numba<1,>=0.38.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.53.1)\nCollecting lightfm<2,>=1.15\n Using cached lightfm-1.16-cp38-cp38-linux_x86_64.whl\nCollecting pandera[strategies]>=0.6.5\n Using cached pandera-0.10.1-py3-none-any.whl (197 kB)\nRequirement already satisfied: numpy>=1.19 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.19.5)\nRequirement already satisfied: scikit-learn<1.0.3,>=0.22.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.22.2.post1)\nRequirement already satisfied: statsmodels>=0.6.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.11.1)\nRequirement already satisfied: patsy>=0.4.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.5.1)\nCollecting powerlaw\n Using cached powerlaw-1.5-py3-none-any.whl (24 kB)\nRequirement already satisfied: MarkupSafe>=0.23 in /databricks/python3/lib/python3.8/site-packages (from jinja2<3.1,>=2->recommenders) (2.0.1)\nRequirement already satisfied: wheel in /databricks/python3/lib/python3.8/site-packages (from lightgbm>=2.2.1->recommenders) (0.36.2)\nRequirement already satisfied: kiwisolver>=1.0.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (1.3.1)\nRequirement already satisfied: cycler>=0.10 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (0.10.0)\nRequirement already satisfied: pillow>=6.2.0 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (8.2.0)\nRequirement already satisfied: pyparsing>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.4.7)\nRequirement already satisfied: python-dateutil>=2.7 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.8.1)\nRequirement already satisfied: six in /databricks/python3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib<4,>=2.2.2->recommenders) (1.15.0)\nRequirement already satisfied: psutil in /databricks/python3/lib/python3.8/site-packages (from memory-profiler<1,>=0.54.0->recommenders) (5.8.0)\nRequirement already satisfied: regex in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (2021.4.4)\nRequirement already satisfied: click in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (7.1.2)\nRequirement already satisfied: joblib in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (0.14.1)\nRequirement already satisfied: llvmlite<0.37,>=0.36.0rc1 in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (0.36.0)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (49.6.0)\nRequirement already satisfied: pytz>=2017.2 in /databricks/python3/lib/python3.8/site-packages (from pandas<2,>1.0.3->recommenders) (2020.5)\nCollecting typing-inspect>=0.6.0\n Using cached typing_inspect-0.7.1-py3-none-any.whl (8.4 kB)\nRequirement already satisfied: wrapt in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.12.1)\nCollecting pandas<2,>1.0.3\n Using cached pandas-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB)\nRequirement already satisfied: pyarrow in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (3.0.0)\nRequirement already satisfied: packaging>=20.0 in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (21.3)\nRequirement already satisfied: pydantic in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.8.2)\nCollecting hypothesis>=5.41.1\n Using cached hypothesis-6.41.0-py3-none-any.whl (380 kB)\nRequirement already satisfied: sortedcontainers<3.0.0,>=2.1.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (2.4.0)\nRequirement already satisfied: attrs>=19.2.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (20.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2020.12.5)\nRequirement already satisfied: chardet<5,>=3.0.2 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (4.0.0)\nRequirement already satisfied: urllib3<1.27,>=1.21.1 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (1.25.11)\nRequirement already satisfied: idna<3,>=2.5 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2.10)\nRequirement already satisfied: sacremoses in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.0.46)\nRequirement already satisfied: filelock in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (3.0.12)\nRequirement already satisfied: tokenizers<0.11,>=0.10.1 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.10.3)\nRequirement already satisfied: huggingface-hub<1.0,>=0.1.0 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.1.2)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /databricks/python3/lib/python3.8/site-packages (from huggingface-hub<1.0,>=0.1.0->transformers<5,>=2.5.0->recommenders) (4.1.1)\nCollecting mypy-extensions>=0.3.0\n Using cached mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)\nCollecting mpmath\n Using cached mpmath-1.2.1-py3-none-any.whl (532 kB)\nInstalling collected packages: mypy-extensions, typing-inspect, pandas, mpmath, powerlaw, pandera, hypothesis, scikit-surprise, retrying, memory-profiler, lightfm, cornac, category-encoders, bottleneck, recommenders\n Attempting uninstall: pandas\n Found existing installation: pandas 1.1.5\n Not uninstalling pandas at /databricks/python3/lib/python3.8/site-packages, outside environment /local_disk0/.ephemeral_nfs/envs/pythonEnv-b5f13af0-4ffb-476f-81cb-7da613fdff26\n Can't uninstall 'pandas'. No files were found to uninstall.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\npandas-profiling 3.1.0 requires joblib~=1.0.1, but you have joblib 0.14.1 which is incompatible.\nazureml-training-tabular 1.40.0 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nazureml-train-automl-runtime 1.40.0.post1 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nazureml-automl-runtime 1.40.0 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nSuccessfully installed bottleneck-1.3.4 category-encoders-1.3.0 cornac-1.14.2 hypothesis-6.41.0 lightfm-1.16 memory-profiler-0.60.0 mpmath-1.2.1 mypy-extensions-0.4.3 pandas-1.4.2 pandera-0.10.1 powerlaw-1.5 recommenders-1.1.0 retrying-1.3.3 scikit-surprise-1.1.1 typing-inspect-0.7.1\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nCollecting datetime\n Using cached DateTime-4.4-py2.py3-none-any.whl (51 kB)\nCollecting zope.interface\n Using cached zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl (259 kB)\nRequirement already satisfied: pytz in /databricks/python3/lib/python3.8/site-packages (from datetime) (2020.5)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from zope.interface->datetime) (49.6.0)\nInstalling collected packages: zope.interface, datetime\nSuccessfully installed datetime-4.4 zope.interface-5.4.0\nPython interpreter will be restarted.\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nPython interpreter will be restarted.\nCollecting recommenders\n Using cached recommenders-1.1.0-py3-none-manylinux1_x86_64.whl (335 kB)\nCollecting memory-profiler<1,>=0.54.0\n Using cached memory_profiler-0.60.0-py3-none-any.whl\nCollecting cornac<2,>=1.1.2\n Using cached cornac-1.14.2-cp38-cp38-manylinux1_x86_64.whl (14.4 MB)\nRequirement already satisfied: transformers<5,>=2.5.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.15.0)\nRequirement already satisfied: tqdm<5,>=4.31.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.59.0)\nRequirement already satisfied: seaborn<1,>=0.8.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.11.1)\nRequirement already satisfied: jinja2<3.1,>=2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.11.2)\nCollecting category-encoders<2,>=1.3.0\n Using cached category_encoders-1.3.0-py2.py3-none-any.whl (61 kB)\nRequirement already satisfied: pyyaml<6,>=5.4.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (5.4.1)\nRequirement already satisfied: pandas<2,>1.0.3 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.1.5)\nCollecting bottleneck<2,>=1.2.1\n Using cached Bottleneck-1.3.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl (331 kB)\nRequirement already satisfied: requests<3,>=2.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.25.1)\nRequirement already satisfied: matplotlib<4,>=2.2.2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.4.2)\nRequirement already satisfied: nltk<4,>=3.4 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.6.1)\nRequirement already satisfied: scipy<2,>=1.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.5.2)\nCollecting scikit-surprise>=1.0.6\n Using cached scikit_surprise-1.1.1-cp38-cp38-linux_x86_64.whl\nRequirement already satisfied: lightgbm>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.2.1)\nCollecting retrying>=1.3.3\n Using cached retrying-1.3.3-py3-none-any.whl\nRequirement already satisfied: numba<1,>=0.38.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.53.1)\nCollecting lightfm<2,>=1.15\n Using cached lightfm-1.16-cp38-cp38-linux_x86_64.whl\nCollecting pandera[strategies]>=0.6.5\n Using cached pandera-0.10.1-py3-none-any.whl (197 kB)\nRequirement already satisfied: numpy>=1.19 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.19.5)\nRequirement already satisfied: scikit-learn<1.0.3,>=0.22.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.22.2.post1)\nRequirement already satisfied: statsmodels>=0.6.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.11.1)\nRequirement already satisfied: patsy>=0.4.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.5.1)\nCollecting powerlaw\n Using cached powerlaw-1.5-py3-none-any.whl (24 kB)\nRequirement already satisfied: MarkupSafe>=0.23 in /databricks/python3/lib/python3.8/site-packages (from jinja2<3.1,>=2->recommenders) (2.0.1)\nRequirement already satisfied: wheel in /databricks/python3/lib/python3.8/site-packages (from lightgbm>=2.2.1->recommenders) (0.36.2)\nRequirement already satisfied: kiwisolver>=1.0.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (1.3.1)\nRequirement already satisfied: cycler>=0.10 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (0.10.0)\nRequirement already satisfied: pillow>=6.2.0 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (8.2.0)\nRequirement already satisfied: pyparsing>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.4.7)\nRequirement already satisfied: python-dateutil>=2.7 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.8.1)\nRequirement already satisfied: six in /databricks/python3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib<4,>=2.2.2->recommenders) (1.15.0)\nRequirement already satisfied: psutil in /databricks/python3/lib/python3.8/site-packages (from memory-profiler<1,>=0.54.0->recommenders) (5.8.0)\nRequirement already satisfied: regex in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (2021.4.4)\nRequirement already satisfied: click in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (7.1.2)\nRequirement already satisfied: joblib in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (0.14.1)\nRequirement already satisfied: llvmlite<0.37,>=0.36.0rc1 in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (0.36.0)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (49.6.0)\nRequirement already satisfied: pytz>=2017.2 in /databricks/python3/lib/python3.8/site-packages (from pandas<2,>1.0.3->recommenders) (2020.5)\nCollecting typing-inspect>=0.6.0\n Using cached typing_inspect-0.7.1-py3-none-any.whl (8.4 kB)\nRequirement already satisfied: wrapt in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.12.1)\nCollecting pandas<2,>1.0.3\n Using cached pandas-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB)\nRequirement already satisfied: pyarrow in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (3.0.0)\nRequirement already satisfied: packaging>=20.0 in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (21.3)\nRequirement already satisfied: pydantic in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.8.2)\nCollecting hypothesis>=5.41.1\n Using cached hypothesis-6.41.0-py3-none-any.whl (380 kB)\nRequirement already satisfied: sortedcontainers<3.0.0,>=2.1.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (2.4.0)\nRequirement already satisfied: attrs>=19.2.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (20.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2020.12.5)\nRequirement already satisfied: chardet<5,>=3.0.2 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (4.0.0)\nRequirement already satisfied: urllib3<1.27,>=1.21.1 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (1.25.11)\nRequirement already satisfied: idna<3,>=2.5 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2.10)\nRequirement already satisfied: sacremoses in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.0.46)\nRequirement already satisfied: filelock in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (3.0.12)\nRequirement already satisfied: tokenizers<0.11,>=0.10.1 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.10.3)\nRequirement already satisfied: huggingface-hub<1.0,>=0.1.0 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.1.2)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /databricks/python3/lib/python3.8/site-packages (from huggingface-hub<1.0,>=0.1.0->transformers<5,>=2.5.0->recommenders) (4.1.1)\nCollecting mypy-extensions>=0.3.0\n Using cached mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)\nCollecting mpmath\n Using cached mpmath-1.2.1-py3-none-any.whl (532 kB)\nInstalling collected packages: mypy-extensions, typing-inspect, pandas, mpmath, powerlaw, pandera, hypothesis, scikit-surprise, retrying, memory-profiler, lightfm, cornac, category-encoders, bottleneck, recommenders\n Attempting uninstall: pandas\n Found existing installation: pandas 1.1.5\n Not uninstalling pandas at /databricks/python3/lib/python3.8/site-packages, outside environment /local_disk0/.ephemeral_nfs/envs/pythonEnv-b5f13af0-4ffb-476f-81cb-7da613fdff26\n Can't uninstall 'pandas'. No files were found to uninstall.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\npandas-profiling 3.1.0 requires joblib~=1.0.1, but you have joblib 0.14.1 which is incompatible.\nazureml-training-tabular 1.40.0 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nazureml-train-automl-runtime 1.40.0.post1 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nazureml-automl-runtime 1.40.0 requires pandas==1.1.5, but you have pandas 1.4.2 which is incompatible.\nSuccessfully installed bottleneck-1.3.4 category-encoders-1.3.0 cornac-1.14.2 hypothesis-6.41.0 lightfm-1.16 memory-profiler-0.60.0 mpmath-1.2.1 mypy-extensions-0.4.3 pandas-1.4.2 pandera-0.10.1 powerlaw-1.5 recommenders-1.1.0 retrying-1.3.3 scikit-surprise-1.1.1 typing-inspect-0.7.1\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nCollecting datetime\n Using cached DateTime-4.4-py2.py3-none-any.whl (51 kB)\nCollecting zope.interface\n Using cached zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl (259 kB)\nRequirement already satisfied: pytz in /databricks/python3/lib/python3.8/site-packages (from datetime) (2020.5)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from zope.interface->datetime) (49.6.0)\nInstalling collected packages: zope.interface, datetime\nSuccessfully installed datetime-4.4 zope.interface-5.4.0\nPython interpreter will be restarted.\n
"]}}],"execution_count":0},{"cell_type":"code","source":["# set the environment path to find Recommenders\nimport sys\nimport pyspark\nfrom pyspark.ml.recommendation import ALS\nimport pyspark.sql.functions as F\nfrom pyspark.sql import SparkSession\nfrom pyspark.sql.types import StructType, StructField\nfrom pyspark.sql.types import StringType, FloatType, IntegerType, LongType\nimport warnings\nwarnings.simplefilter(action='ignore', category=FutureWarning)\n\nfrom recommenders.utils.timer import Timer\nfrom recommenders.datasets import movielens\nfrom recommenders.utils.notebook_utils import is_jupyter\nfrom recommenders.datasets.spark_splitters import spark_random_split\nfrom recommenders.evaluation.spark_evaluation import SparkRatingEvaluation, SparkRankingEvaluation\nfrom recommenders.utils.spark_utils import start_or_get_spark\n\nprint(\"System version: {}\".format(sys.version))\nprint(\"Spark version: {}\".format(pyspark.__version__))"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"8e522d98-39f5-432f-9075-3d6cc2037393"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"System version: 3.8.10 (default, Nov 26 2021, 20:14:08) \n[GCC 9.3.0]\nSpark version: 3.2.1\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nSystem version: 3.8.10 (default, Nov 26 2021, 20:14:08) \n[GCC 9.3.0]\nSpark version: 3.2.1\n
"]}}],"execution_count":0},{"cell_type":"code","source":["df = spark.read.format(\"csv\").options(header='true', delimiter = ',').load(\"abfss://.../mldata/MoviesDataRecommendation/ratings.csv\")\ndf.show()\n#import pandas as pd\n#data=pd.read_csv(\"/dbfs/FileStore/df_ratings.csv\", header='infer')\n## Convert Pandas dataframe to spark DataFrame\n#df = spark.createDataFrame(data)\n\n\n# top k items to recommend\nTOP_K = 10 \nCOL_USER = \"userId\"\nCOL_ITEM = \"movieId\"\nCOL_RATING = \"rating\"\nCOL_PREDICTION = \"rating\"\nCOL_TIMESTAMP = \"timestamp\""],"metadata":{"application/vnd.databricks.v1+cell":{"title":"1. Read Data","showTitle":true,"inputWidgets":{},"nuid":"8f9aff3a-257e-4a10-afdd-1e93de0f087f"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"+------+-------+------+----------+\n|userId|movieId|rating| timestamp|\n+------+-------+------+----------+\n| 1| 296| 5.0|1147880044|\n| 1| 306| 3.5|1147868817|\n| 1| 307| 5.0|1147868828|\n| 1| 665| 5.0|1147878820|\n| 1| 899| 3.5|1147868510|\n| 1| 1088| 4.0|1147868495|\n| 1| 1175| 3.5|1147868826|\n| 1| 1217| 3.5|1147878326|\n| 1| 1237| 5.0|1147868839|\n| 1| 1250| 4.0|1147868414|\n| 1| 1260| 3.5|1147877857|\n| 1| 1653| 4.0|1147868097|\n| 1| 2011| 2.5|1147868079|\n| 1| 2012| 2.5|1147868068|\n| 1| 2068| 2.5|1147869044|\n| 1| 2161| 3.5|1147868609|\n| 1| 2351| 4.5|1147877957|\n| 1| 2573| 4.0|1147878923|\n| 1| 2632| 5.0|1147878248|\n| 1| 2692| 5.0|1147869100|\n+------+-------+------+----------+\nonly showing top 20 rows\n\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n+------+-------+------+----------+\nuserId|movieId|rating| timestamp|\n+------+-------+------+----------+\n 1| 296| 5.0|1147880044|\n 1| 306| 3.5|1147868817|\n 1| 307| 5.0|1147868828|\n 1| 665| 5.0|1147878820|\n 1| 899| 3.5|1147868510|\n 1| 1088| 4.0|1147868495|\n 1| 1175| 3.5|1147868826|\n 1| 1217| 3.5|1147878326|\n 1| 1237| 5.0|1147868839|\n 1| 1250| 4.0|1147868414|\n 1| 1260| 3.5|1147877857|\n 1| 1653| 4.0|1147868097|\n 1| 2011| 2.5|1147868079|\n 1| 2012| 2.5|1147868068|\n 1| 2068| 2.5|1147869044|\n 1| 2161| 3.5|1147868609|\n 1| 2351| 4.5|1147877957|\n 1| 2573| 4.0|1147878923|\n 1| 2632| 5.0|1147878248|\n 1| 2692| 5.0|1147869100|\n+------+-------+------+----------+\nonly showing top 20 rows\n\n
"]}}],"execution_count":0},{"cell_type":"code","source":["# BinaryType: binary\n# BooleanType: boolean\n# ByteType: tinyint\n# DateType: date\n# DecimalType: decimal(10,0)\n# DoubleType: double\n# FloatType: float\n# IntegerType: int\n# LongType: bigint\n# ShortType: smallint\n# StringType: string\n# TimestampType: timestamp\nfrom pyspark.sql.types import IntegerType\nfrom pyspark.sql.types import DoubleType\nfrom pyspark.sql.types import TimestampType\ndf = df.withColumn(\"userId\", df[\"userId\"].cast(\"int\"))\ndf = df.withColumn(\"movieId\", df[\"movieId\"].cast(\"int\"))\ndf = df.withColumn(\"rating\", df[\"rating\"].cast(\"double\"))\ndf = df.withColumn(\"timestamp\", df[\"timestamp\"].cast(\"timestamp\"))"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"e190e8a8-6736-44f2-98d7-0d0ff8291154"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n"]}}],"execution_count":0},{"cell_type":"code","source":["''' 1.Random split\nRandom split simply takes in a data set and outputs the splits of the data, given the split ratios.\n'''\ntrain, test = spark_random_split(df, ratio=0.70, seed=123)\nprint(\"Size of Train: \",train.cache().count())\nprint(\"Size of Validate: \",test.cache().count())"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"2. Split Data","showTitle":true,"inputWidgets":{},"nuid":"0c3a05ef-bb42-4133-9dee-41e59ead4f65"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Size of Train: 17502121\nSize of Validate: 7497974\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nSize of Train: 17502121\nSize of Validate: 7497974\n
"]}}],"execution_count":0},{"cell_type":"code","source":["#Modelling\n'''\nParameters:\n- numBlocks is the number of blocks the users and items will be partitioned into in order to parallelize computation (defaults to 10).\n- rank is the number of latent factors in the model (defaults to 10).\n- maxIter is the maximum number of iterations to run (defaults to 10).\n- regParam specifies the regularization parameter in ALS (defaults to 1.0).\n- implicitPrefs specifies whether to use the explicit feedback ALS variant or one adapted for implicit feedback data (defaults to false which means using explicit feedback).\n- alpha is a parameter applicable to the implicit feedback variant of ALS that governs the baseline confidence in preference observations (defaults to 1.0).\n- nonnegative specifies whether or not to use nonnegative constraints for least squares (defaults to false).\n'''\n\nheader = {\n \"userCol\": COL_USER,\n \"itemCol\": COL_ITEM,\n \"ratingCol\": COL_RATING,\n}\n\n\nals = ALS(\n rank=10,\n maxIter=15,\n implicitPrefs=False,\n regParam=0.05,\n coldStartStrategy='drop',\n nonnegative=False,\n seed=42,\n **header\n)\nmodel = als.fit(train)\n\n\n#Scoring\n#In the movie recommendation use case, recommending movies that have been rated by the users do not make sense. Therefore, the rated movies are removed from the recommended items.In order to achieve this, we recommend all movies to all users, and then remove the user-movie pairs that exist in the training dataset.\n\n# Get the cross join of all user-item pairs and score them.\nusers = train.select(COL_USER).distinct()\nitems = train.select(COL_ITEM).distinct()\nuser_item = users.crossJoin(items)\ndfs_pred = model.transform(user_item) #scoring using the model trained\n\n# Remove seen items.\nspark = start_or_get_spark(\"ALS PySpark\", memory=\"16g\")\nspark.conf.set(\"spark.sql.analyzer.failAmbiguousSelfJoin\", \"false\")\ndfs_pred_exclude_train = dfs_pred.alias(\"pred\").join(\n train.alias(\"train\"),\n (dfs_pred[COL_USER] == train[COL_USER]) & (dfs_pred[COL_ITEM] == train[COL_ITEM]),\n how='outer'\n)\n\ntop_all = dfs_pred_exclude_train.filter(dfs_pred_exclude_train[f\"train.{COL_RATING}\"].isNull()) \\\n .select('pred.' + COL_USER, 'pred.' + COL_ITEM, 'pred.' + \"prediction\")\n\ntop_all.cache().count()\ntop_all.show()"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"3. Train the ALS model on the training data, and get the top-k recommendations for our testing data","showTitle":true,"inputWidgets":{},"nuid":"5be06ffc-e30c-459b-aacf-2334e5581359"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"+------+-------+----------+\n|userId|movieId|prediction|\n+------+-------+----------+\n| 1| 587| 2.6998122|\n| 1| 869| 2.9099126|\n| 1| 1208| 4.0218315|\n| 1| 1348| 3.5810237|\n| 1| 1357| 3.883794|\n| 1| 1677| 2.7238045|\n| 1| 1702| 1.7985499|\n| 1| 1720| 1.4157087|\n| 1| 1892| 3.0486994|\n| 1| 2086| 2.6992016|\n| 1| 2202| 3.520183|\n| 1| 2324| 4.223861|\n| 1| 2483| 3.3862746|\n| 1| 2545| 3.8411288|\n| 1| 2667| 1.291569|\n| 1| 2870| 3.2438471|\n| 1| 3304| 3.8208761|\n| 1| 3452| 2.5336146|\n| 1| 3468| 3.8727543|\n| 1| 3477| 3.4407997|\n+------+-------+----------+\nonly showing top 20 rows\n\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n+------+-------+----------+\nuserId|movieId|prediction|\n+------+-------+----------+\n 1| 587| 2.6998122|\n 1| 869| 2.9099126|\n 1| 1208| 4.0218315|\n 1| 1348| 3.5810237|\n 1| 1357| 3.883794|\n 1| 1677| 2.7238045|\n 1| 1702| 1.7985499|\n 1| 1720| 1.4157087|\n 1| 1892| 3.0486994|\n 1| 2086| 2.6992016|\n 1| 2202| 3.520183|\n 1| 2324| 4.223861|\n 1| 2483| 3.3862746|\n 1| 2545| 3.8411288|\n 1| 2667| 1.291569|\n 1| 2870| 3.2438471|\n 1| 3304| 3.8208761|\n 1| 3452| 2.5336146|\n 1| 3468| 3.8727543|\n 1| 3477| 3.4407997|\n+------+-------+----------+\nonly showing top 20 rows\n\n
"]}}],"execution_count":0},{"cell_type":"code","source":["#train.where((train.userId==1) & (train.movieId==1348)).show()\n#These are already avaialble in data as rated, so excluded from the top_all. Only predicted values of rating for user/movies not avaialble in training set"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"a5c91e5a-9639-4a31-a6e0-55dc2c4829b4"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"+------+-------+------+---------+\n|userId|movieId|rating|timestamp|\n+------+-------+------+---------+\n| 1| 296| 5.0| null|\n| 1| 306| 3.5| null|\n| 1| 307| 5.0| null|\n| 1| 665| 5.0| null|\n| 1| 899| 3.5| null|\n| 1| 1088| 4.0| null|\n| 1| 1175| 3.5| null|\n| 1| 1217| 3.5| null|\n| 1| 1237| 5.0| null|\n| 1| 1250| 4.0| null|\n| 1| 1260| 3.5| null|\n| 1| 1653| 4.0| null|\n| 1| 2011| 2.5| null|\n| 1| 2012| 2.5| null|\n| 1| 2068| 2.5| null|\n| 1| 2161| 3.5| null|\n| 1| 2351| 4.5| null|\n| 1| 2573| 4.0| null|\n| 1| 2632| 5.0| null|\n| 1| 2692| 5.0| null|\n+------+-------+------+---------+\nonly showing top 20 rows\n\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n+------+-------+------+---------+\nuserId|movieId|rating|timestamp|\n+------+-------+------+---------+\n 1| 296| 5.0| null|\n 1| 306| 3.5| null|\n 1| 307| 5.0| null|\n 1| 665| 5.0| null|\n 1| 899| 3.5| null|\n 1| 1088| 4.0| null|\n 1| 1175| 3.5| null|\n 1| 1217| 3.5| null|\n 1| 1237| 5.0| null|\n 1| 1250| 4.0| null|\n 1| 1260| 3.5| null|\n 1| 1653| 4.0| null|\n 1| 2011| 2.5| null|\n 1| 2012| 2.5| null|\n 1| 2068| 2.5| null|\n 1| 2161| 3.5| null|\n 1| 2351| 4.5| null|\n 1| 2573| 4.0| null|\n 1| 2632| 5.0| null|\n 1| 2692| 5.0| null|\n+------+-------+------+---------+\nonly showing top 20 rows\n\n
"]}}],"execution_count":0},{"cell_type":"code","source":["rank_eval = SparkRankingEvaluation(test, top_all, k = TOP_K, col_user=COL_USER, col_item=COL_ITEM, \n col_rating=COL_RATING, col_prediction=\"prediction\", \n relevancy_method=\"top_k\")\nprint(\"Model:\\tALS\",\n \"Top K:\\t%d\" % rank_eval.k,\n \"MAP:\\t%f\" % rank_eval.map_at_k(),\n \"NDCG:\\t%f\" % rank_eval.ndcg_at_k(),\n \"Precision@K:\\t%f\" % rank_eval.precision_at_k(),\n \"Recall@K:\\t%f\" % rank_eval.recall_at_k(), sep='\\n')"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"4.a. Evaluate how well ALS performs","showTitle":true,"inputWidgets":{},"nuid":"7e9b89fd-11fa-4865-ada3-bf9acf4d954c"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Model:\tALS\nTop K:\t10\nMAP:\t0.000000\nNDCG:\t0.000024\nPrecision@K:\t0.000022\nRecall@K:\t0.000002\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nModel:\tALS\nTop K:\t10\nMAP:\t0.000000\nNDCG:\t0.000024\nPrecision@K:\t0.000022\nRecall@K:\t0.000002\n
"]}}],"execution_count":0},{"cell_type":"code","source":["# Generate predicted ratings.\n\n#prediction v/s original rating in test dataframe\nprediction = model.transform(test)\nprediction.cache().show()\n\nrating_eval = SparkRatingEvaluation(test, prediction, col_user=COL_USER, col_item=COL_ITEM, \n col_rating=COL_RATING, col_prediction=\"prediction\")\n\nprint(\"Model:\\tALS rating prediction\",\n \"RMSE:\\t%f\" % rating_eval.rmse(),\n \"MAE:\\t%f\" % rating_eval.mae(),\n \"Explained variance:\\t%f\" % rating_eval.exp_var(),\n \"R squared:\\t%f\" % rating_eval.rsquared(), sep='\\n')\n\n"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"4.b. Evaluate 'rating' predictions ","showTitle":true,"inputWidgets":{},"nuid":"6ed8a502-54dd-455b-a5f1-097edeab0aff"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"+------+-------+------+---------+----------+\n|userId|movieId|rating|timestamp|prediction|\n+------+-------+------+---------+----------+\n| 3411| 148| 3.0| null| 3.1010756|\n| 31376| 148| 2.0| null| 2.487941|\n|138552| 148| 4.0| null| 3.3528645|\n| 73925| 148| 2.5| null| 2.8853617|\n| 18628| 148| 2.0| null| 2.5358372|\n| 91345| 148| 3.0| null| 2.5081975|\n|136364| 148| 4.0| null| 3.1493373|\n|110365| 148| 4.0| null| 2.788095|\n|153108| 148| 1.0| null| 2.5116093|\n|122236| 148| 2.5| null| 2.4000401|\n|140907| 148| 4.0| null| 2.5808144|\n|153916| 148| 3.0| null| 2.9606023|\n| 25467| 148| 3.0| null| 2.400282|\n| 32268| 148| 4.0| null| 2.9746733|\n| 38679| 148| 3.0| null| 2.53785|\n| 99684| 148| 3.0| null| 2.9070284|\n|108767| 148| 3.0| null| 2.6903741|\n|157307| 148| 3.0| null| 2.7582307|\n| 66358| 148| 3.5| null| 2.92726|\n| 81091| 148| 1.0| null| 2.54278|\n+------+-------+------+---------+----------+\nonly showing top 20 rows\n\nModel:\tALS rating prediction\nRMSE:\t0.791485\nMAE:\t0.606727\nExplained variance:\t0.450670\nR squared:\t0.443385\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n+------+-------+------+---------+----------+\nuserId|movieId|rating|timestamp|prediction|\n+------+-------+------+---------+----------+\n 3411| 148| 3.0| null| 3.1010756|\n 31376| 148| 2.0| null| 2.487941|\n138552| 148| 4.0| null| 3.3528645|\n 73925| 148| 2.5| null| 2.8853617|\n 18628| 148| 2.0| null| 2.5358372|\n 91345| 148| 3.0| null| 2.5081975|\n136364| 148| 4.0| null| 3.1493373|\n110365| 148| 4.0| null| 2.788095|\n153108| 148| 1.0| null| 2.5116093|\n122236| 148| 2.5| null| 2.4000401|\n140907| 148| 4.0| null| 2.5808144|\n153916| 148| 3.0| null| 2.9606023|\n 25467| 148| 3.0| null| 2.400282|\n 32268| 148| 4.0| null| 2.9746733|\n 38679| 148| 3.0| null| 2.53785|\n 99684| 148| 3.0| null| 2.9070284|\n108767| 148| 3.0| null| 2.6903741|\n157307| 148| 3.0| null| 2.7582307|\n 66358| 148| 3.5| null| 2.92726|\n 81091| 148| 1.0| null| 2.54278|\n+------+-------+------+---------+----------+\nonly showing top 20 rows\n\nModel:\tALS rating prediction\nRMSE:\t0.791485\nMAE:\t0.606727\nExplained variance:\t0.450670\nR squared:\t0.443385\n
"]}}],"execution_count":0}],"metadata":{"application/vnd.databricks.v1+notebook":{"notebookName":"2.c. Modelling- ALS (Collaborative)","dashboards":[],"notebookMetadata":{"pythonIndentUnit":2},"language":"python","widgets":{"EnvType":{"nuid":"7bf6016b-8f96-4f96-a009-93a650467879","currentValue":"DEV","widgetInfo":{"widgetType":"text","name":"EnvType","defaultValue":"DEV","label":null,"options":{"widgetType":"text","validationRegex":null}}}},"notebookOrigID":1153725985288640}},"nbformat":4,"nbformat_minor":0}
diff --git a/Notebooks/Recommendation Engine/2.d. Modelling- SAR (Content).ipynb b/Notebooks/Recommendation Engine/2.d. Modelling- SAR (Content).ipynb
new file mode 100644
index 0000000..dedf16c
--- /dev/null
+++ b/Notebooks/Recommendation Engine/2.d. Modelling- SAR (Content).ipynb
@@ -0,0 +1 @@
+{"cells":[{"cell_type":"markdown","source":["## ALGO DEEP DIVE:\nSimple Algorithm for Recommendation (SAR) algorithm using a Python single-node implementation.\nSAR is a fast, scalable, adaptive algorithm for personalized recommendations based on user transaction history. It is powered by understanding the similarity between items, and recommending similar items to those a user has an existing affinity for.\n\n
At a very high level, two intermediate matrices are created and used to generate a set of recommendation scores:\n
A)An item similarity matrix estimates item-item relationships.\n
B)An affinity matrix estimates user-item relationships.\n
C)Recommendation scores are then created by computing the matrix multiplication.\n\n
**Advantages of SAR:**\n
-High accuracy for an easy to train and deploy algorithm\n
-Fast training, only requiring simple counting to construct matrices used at prediction time.\n
-Fast scoring, only involving multiplication of the similarity matrix with an affinity vector\n
**Notes to use SAR properly:**\n
Since it does not use item or user features, it can be at a disadvantage against algorithms that do.\n
It's memory-hungry, requiring the creation of an sparse square matrix (where is the number of items). This can also be a problem for many matrix factorization algorithms.\n\n\n
**1)Compute item co-occurrence and item similarity**\n
SAR defines similarity based on item-to-item co-occurrence data. Co-occurrence is defined as the number of times two items appear together for a given user. We can represent the co-occurrence of all items as a mXm matrix C, where c_ij is the number of times item i occurred with item j, and m is the total number of items.\n\n
Once we have a co-occurrence matrix, an item similarity matrix can be obtained by rescaling the co-occurrences according to a given metric. Options for the metric include Jaccard, lift, and counts (meaning no rescaling).\n\n
If c_ii and c_jj are the ith and jth diagonal elements of C, the rescaling options are:\n
**-Jaccard**: s_ij = c_ij/ (c_ii + c_jj - c_ij)\n
**-lift**: s_ij = c_ij/ (c_ii * c_jj)\n
**-counts**: s_ij = c_ij\n\nIn general, using counts as a similarity metric favours predictability, meaning that the most popular items will be recommended most of the time. lift by contrast favours discoverability/serendipity: an item that is less popular overall but highly favoured by a small subset of users is more likely to be recommended. Jaccard is a compromise between the two.\n\n
**2)Compute user affinity scores**\n
The affinity matrix in SAR captures the strength of the relationship between each individual user and the items that user has already interacted with. SAR incorporates two factors that can impact users' affinities:\n\n
-It can consider information about the ***type*** of user-item interaction through differential weighting of different events (e.g. it may weigh events in which a user rated a particular item more heavily than events in which a user viewed the item).\n
-It can consider information about ***when*** a user-item event occurred (e.g. it may discount the value of events that take place in the distant past.\n\nFormula for getting affinity score for each user-item pair is-\n
***a_{ij}=sum_k w_k * (0.5)^{{t_0-t_k}/{T}}***\n
where a_ij is the affinity score, w_k is the interaction weight, t_0 is a reference time, t_k is the timestamp for the k-th interaction, and T is a hyperparameter that controls the speed of\n\n
**3)Remove seen item***\n
Optionally we remove items which have already been seen in the training set, i.e. don't recommend items which have been previously bought by the user again.\n\n
**4)Top-k item calculation***\nThe personalized recommendations for a set of users can then be obtained by multiplying the affinity matrix (A) by the similarity matrix (S). The result is a recommendation score matrix, where each row corresponds to a user, each column corresponds to an item, and each entry corresponds to a user / item pair. Higher scores correspond to more strongly recommended items."],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"b613a5ea-a8d8-4b15-85c0-7ca5eb901048"}}},{"cell_type":"code","source":["%pip install recommenders\n%pip install datetime"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"9318270a-f427-41d8-b199-f575aa123819"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Python interpreter will be restarted.\nRequirement already satisfied: recommenders in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (1.1.0)\nRequirement already satisfied: memory-profiler<1,>=0.54.0 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (0.60.0)\nRequirement already satisfied: cornac<2,>=1.1.2 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.14.2)\nRequirement already satisfied: transformers<5,>=2.5.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.15.0)\nRequirement already satisfied: tqdm<5,>=4.31.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.59.0)\nRequirement already satisfied: seaborn<1,>=0.8.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.11.1)\nRequirement already satisfied: jinja2<3.1,>=2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.11.2)\nRequirement already satisfied: category-encoders<2,>=1.3.0 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.3.0)\nRequirement already satisfied: pyyaml<6,>=5.4.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (5.4.1)\nRequirement already satisfied: pandas<2,>1.0.3 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.4.2)\nRequirement already satisfied: bottleneck<2,>=1.2.1 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.3.4)\nRequirement already satisfied: requests<3,>=2.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.25.1)\nRequirement already satisfied: matplotlib<4,>=2.2.2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.4.2)\nRequirement already satisfied: nltk<4,>=3.4 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.6.1)\nRequirement already satisfied: scipy<2,>=1.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.5.2)\nRequirement already satisfied: scikit-surprise>=1.0.6 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.1.1)\nRequirement already satisfied: lightgbm>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.2.1)\nRequirement already satisfied: retrying>=1.3.3 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.3.3)\nRequirement already satisfied: numba<1,>=0.38.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.53.1)\nRequirement already satisfied: lightfm<2,>=1.15 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.16)\nRequirement already satisfied: pandera[strategies]>=0.6.5 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (0.10.1)\nRequirement already satisfied: numpy>=1.19 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.19.5)\nRequirement already satisfied: scikit-learn<1.0.3,>=0.22.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.22.2.post1)\nRequirement already satisfied: statsmodels>=0.6.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.11.1)\nRequirement already satisfied: patsy>=0.4.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.5.1)\nRequirement already satisfied: powerlaw in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from cornac<2,>=1.1.2->recommenders) (1.5)\nRequirement already satisfied: MarkupSafe>=0.23 in /databricks/python3/lib/python3.8/site-packages (from jinja2<3.1,>=2->recommenders) (2.0.1)\nRequirement already satisfied: wheel in /databricks/python3/lib/python3.8/site-packages (from lightgbm>=2.2.1->recommenders) (0.36.2)\nRequirement already satisfied: kiwisolver>=1.0.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (1.3.1)\nRequirement already satisfied: cycler>=0.10 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (0.10.0)\nRequirement already satisfied: pillow>=6.2.0 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (8.2.0)\nRequirement already satisfied: pyparsing>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.4.7)\nRequirement already satisfied: python-dateutil>=2.7 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.8.1)\nRequirement already satisfied: six in /databricks/python3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib<4,>=2.2.2->recommenders) (1.15.0)\nRequirement already satisfied: psutil in /databricks/python3/lib/python3.8/site-packages (from memory-profiler<1,>=0.54.0->recommenders) (5.8.0)\nRequirement already satisfied: regex in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (2021.4.4)\nRequirement already satisfied: click in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (7.1.2)\nRequirement already satisfied: joblib in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (0.14.1)\nRequirement already satisfied: llvmlite<0.37,>=0.36.0rc1 in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (0.36.0)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (49.6.0)\nRequirement already satisfied: pytz>=2020.1 in /databricks/python3/lib/python3.8/site-packages (from pandas<2,>1.0.3->recommenders) (2020.5)\nRequirement already satisfied: typing-inspect>=0.6.0 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (0.7.1)\nRequirement already satisfied: wrapt in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.12.1)\nRequirement already satisfied: pyarrow in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (3.0.0)\nRequirement already satisfied: packaging>=20.0 in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (21.3)\nRequirement already satisfied: pydantic in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.8.2)\nRequirement already satisfied: hypothesis>=5.41.1 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (6.41.0)\nRequirement already satisfied: sortedcontainers<3.0.0,>=2.1.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (2.4.0)\nRequirement already satisfied: attrs>=19.2.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (20.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2020.12.5)\nRequirement already satisfied: chardet<5,>=3.0.2 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (4.0.0)\nRequirement already satisfied: urllib3<1.27,>=1.21.1 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (1.25.11)\nRequirement already satisfied: idna<3,>=2.5 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2.10)\nRequirement already satisfied: sacremoses in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.0.46)\nRequirement already satisfied: filelock in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (3.0.12)\nRequirement already satisfied: tokenizers<0.11,>=0.10.1 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.10.3)\nRequirement already satisfied: huggingface-hub<1.0,>=0.1.0 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.1.2)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /databricks/python3/lib/python3.8/site-packages (from huggingface-hub<1.0,>=0.1.0->transformers<5,>=2.5.0->recommenders) (4.1.1)\nRequirement already satisfied: mypy-extensions>=0.3.0 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from typing-inspect>=0.6.0->pandera[strategies]>=0.6.5->recommenders) (0.4.3)\nRequirement already satisfied: mpmath in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from powerlaw->cornac<2,>=1.1.2->recommenders) (1.2.1)\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nRequirement already satisfied: datetime in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (4.4)\nRequirement already satisfied: zope.interface in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from datetime) (5.4.0)\nRequirement already satisfied: pytz in /databricks/python3/lib/python3.8/site-packages (from datetime) (2020.5)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from zope.interface->datetime) (49.6.0)\nPython interpreter will be restarted.\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nPython interpreter will be restarted.\nRequirement already satisfied: recommenders in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (1.1.0)\nRequirement already satisfied: memory-profiler<1,>=0.54.0 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (0.60.0)\nRequirement already satisfied: cornac<2,>=1.1.2 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.14.2)\nRequirement already satisfied: transformers<5,>=2.5.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.15.0)\nRequirement already satisfied: tqdm<5,>=4.31.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (4.59.0)\nRequirement already satisfied: seaborn<1,>=0.8.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.11.1)\nRequirement already satisfied: jinja2<3.1,>=2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.11.2)\nRequirement already satisfied: category-encoders<2,>=1.3.0 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.3.0)\nRequirement already satisfied: pyyaml<6,>=5.4.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (5.4.1)\nRequirement already satisfied: pandas<2,>1.0.3 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.4.2)\nRequirement already satisfied: bottleneck<2,>=1.2.1 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.3.4)\nRequirement already satisfied: requests<3,>=2.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (2.25.1)\nRequirement already satisfied: matplotlib<4,>=2.2.2 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.4.2)\nRequirement already satisfied: nltk<4,>=3.4 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.6.1)\nRequirement already satisfied: scipy<2,>=1.0.0 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.5.2)\nRequirement already satisfied: scikit-surprise>=1.0.6 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.1.1)\nRequirement already satisfied: lightgbm>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (3.2.1)\nRequirement already satisfied: retrying>=1.3.3 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.3.3)\nRequirement already satisfied: numba<1,>=0.38.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.53.1)\nRequirement already satisfied: lightfm<2,>=1.15 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (1.16)\nRequirement already satisfied: pandera[strategies]>=0.6.5 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from recommenders) (0.10.1)\nRequirement already satisfied: numpy>=1.19 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (1.19.5)\nRequirement already satisfied: scikit-learn<1.0.3,>=0.22.1 in /databricks/python3/lib/python3.8/site-packages (from recommenders) (0.22.2.post1)\nRequirement already satisfied: statsmodels>=0.6.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.11.1)\nRequirement already satisfied: patsy>=0.4.1 in /databricks/python3/lib/python3.8/site-packages (from category-encoders<2,>=1.3.0->recommenders) (0.5.1)\nRequirement already satisfied: powerlaw in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from cornac<2,>=1.1.2->recommenders) (1.5)\nRequirement already satisfied: MarkupSafe>=0.23 in /databricks/python3/lib/python3.8/site-packages (from jinja2<3.1,>=2->recommenders) (2.0.1)\nRequirement already satisfied: wheel in /databricks/python3/lib/python3.8/site-packages (from lightgbm>=2.2.1->recommenders) (0.36.2)\nRequirement already satisfied: kiwisolver>=1.0.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (1.3.1)\nRequirement already satisfied: cycler>=0.10 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (0.10.0)\nRequirement already satisfied: pillow>=6.2.0 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (8.2.0)\nRequirement already satisfied: pyparsing>=2.2.1 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.4.7)\nRequirement already satisfied: python-dateutil>=2.7 in /databricks/python3/lib/python3.8/site-packages (from matplotlib<4,>=2.2.2->recommenders) (2.8.1)\nRequirement already satisfied: six in /databricks/python3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib<4,>=2.2.2->recommenders) (1.15.0)\nRequirement already satisfied: psutil in /databricks/python3/lib/python3.8/site-packages (from memory-profiler<1,>=0.54.0->recommenders) (5.8.0)\nRequirement already satisfied: regex in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (2021.4.4)\nRequirement already satisfied: click in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (7.1.2)\nRequirement already satisfied: joblib in /databricks/python3/lib/python3.8/site-packages (from nltk<4,>=3.4->recommenders) (0.14.1)\nRequirement already satisfied: llvmlite<0.37,>=0.36.0rc1 in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (0.36.0)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from numba<1,>=0.38.1->recommenders) (49.6.0)\nRequirement already satisfied: pytz>=2020.1 in /databricks/python3/lib/python3.8/site-packages (from pandas<2,>1.0.3->recommenders) (2020.5)\nRequirement already satisfied: typing-inspect>=0.6.0 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (0.7.1)\nRequirement already satisfied: wrapt in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.12.1)\nRequirement already satisfied: pyarrow in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (3.0.0)\nRequirement already satisfied: packaging>=20.0 in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (21.3)\nRequirement already satisfied: pydantic in /databricks/python3/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (1.8.2)\nRequirement already satisfied: hypothesis>=5.41.1 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from pandera[strategies]>=0.6.5->recommenders) (6.41.0)\nRequirement already satisfied: sortedcontainers<3.0.0,>=2.1.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (2.4.0)\nRequirement already satisfied: attrs>=19.2.0 in /databricks/python3/lib/python3.8/site-packages (from hypothesis>=5.41.1->pandera[strategies]>=0.6.5->recommenders) (20.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2020.12.5)\nRequirement already satisfied: chardet<5,>=3.0.2 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (4.0.0)\nRequirement already satisfied: urllib3<1.27,>=1.21.1 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (1.25.11)\nRequirement already satisfied: idna<3,>=2.5 in /databricks/python3/lib/python3.8/site-packages (from requests<3,>=2.0.0->recommenders) (2.10)\nRequirement already satisfied: sacremoses in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.0.46)\nRequirement already satisfied: filelock in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (3.0.12)\nRequirement already satisfied: tokenizers<0.11,>=0.10.1 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.10.3)\nRequirement already satisfied: huggingface-hub<1.0,>=0.1.0 in /databricks/python3/lib/python3.8/site-packages (from transformers<5,>=2.5.0->recommenders) (0.1.2)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /databricks/python3/lib/python3.8/site-packages (from huggingface-hub<1.0,>=0.1.0->transformers<5,>=2.5.0->recommenders) (4.1.1)\nRequirement already satisfied: mypy-extensions>=0.3.0 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from typing-inspect>=0.6.0->pandera[strategies]>=0.6.5->recommenders) (0.4.3)\nRequirement already satisfied: mpmath in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from powerlaw->cornac<2,>=1.1.2->recommenders) (1.2.1)\nPython interpreter will be restarted.\nPython interpreter will be restarted.\nRequirement already satisfied: datetime in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (4.4)\nRequirement already satisfied: zope.interface in /local_disk0/.ephemeral_nfs/envs/pythonEnv-69fba55c-12a3-4874-8dff-8ef66f2999be/lib/python3.8/site-packages (from datetime) (5.4.0)\nRequirement already satisfied: pytz in /databricks/python3/lib/python3.8/site-packages (from datetime) (2020.5)\nRequirement already satisfied: setuptools in /databricks/python3/lib/python3.8/site-packages (from zope.interface->datetime) (49.6.0)\nPython interpreter will be restarted.\n
"]}}],"execution_count":0},{"cell_type":"code","source":["# set the environment path to find Recommenders\nimport logging\nimport numpy as np\nimport pandas as pd\n#import scrapbook as sb\nfrom sklearn.preprocessing import minmax_scale\n\nfrom recommenders.utils.python_utils import binarize\nfrom recommenders.utils.timer import Timer\nfrom recommenders.datasets import movielens\nfrom recommenders.datasets.python_splitters import python_stratified_split\nfrom recommenders.evaluation.python_evaluation import (\n map_at_k,\n ndcg_at_k,\n precision_at_k,\n recall_at_k,\n rmse,\n mae,\n logloss,\n rsquared,\n exp_var\n)\nfrom recommenders.models.sar import SAR\nimport sys\n\nprint(\"System version: {}\".format(sys.version))\nprint(\"Pandas version: {}\".format(pd.__version__))"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"8e522d98-39f5-432f-9075-3d6cc2037393"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"/databricks/python/lib/python3.8/site-packages/dask/dataframe/utils.py:367: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n _numeric_index_types = (pd.Int64Index, pd.Float64Index, pd.UInt64Index)\n/databricks/python/lib/python3.8/site-packages/dask/dataframe/utils.py:367: FutureWarning: pandas.Float64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n _numeric_index_types = (pd.Int64Index, pd.Float64Index, pd.UInt64Index)\n/databricks/python/lib/python3.8/site-packages/dask/dataframe/utils.py:367: FutureWarning: pandas.UInt64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n _numeric_index_types = (pd.Int64Index, pd.Float64Index, pd.UInt64Index)\nSystem version: 3.8.10 (default, Nov 26 2021, 20:14:08) \n[GCC 9.3.0]\nPandas version: 1.4.2\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n/databricks/python/lib/python3.8/site-packages/dask/dataframe/utils.py:367: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n _numeric_index_types = (pd.Int64Index, pd.Float64Index, pd.UInt64Index)\n/databricks/python/lib/python3.8/site-packages/dask/dataframe/utils.py:367: FutureWarning: pandas.Float64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n _numeric_index_types = (pd.Int64Index, pd.Float64Index, pd.UInt64Index)\n/databricks/python/lib/python3.8/site-packages/dask/dataframe/utils.py:367: FutureWarning: pandas.UInt64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n _numeric_index_types = (pd.Int64Index, pd.Float64Index, pd.UInt64Index)\nSystem version: 3.8.10 (default, Nov 26 2021, 20:14:08) \n[GCC 9.3.0]\nPandas version: 1.4.2\n
"]}}],"execution_count":0},{"cell_type":"code","source":["df1 = spark.read.format(\"csv\").options(header='true', delimiter = ',').load(\".../mldata/MoviesDataRecommendation/ratings.csv\")\ndf_ratings = df1.toPandas()\n\n#Datatype conversion\ndf_ratings.userId = df_ratings['userId'].astype('int')\ndf_ratings.movieId = df_ratings['movieId'].astype('int')\ndf_ratings.rating = df_ratings['rating'].astype('float')\ndf_ratings.timestamp = df_ratings['timestamp'].astype('int')\nprint(df_ratings.dtypes)\n\n\n\n# top k items to recommend\nTOP_K = 10 \nCOL_USER = \"userId\"\nCOL_ITEM = \"movieId\"\nCOL_RATING = \"rating\"\nCOL_PREDICTION = \"rating\"\nCOL_TIMESTAMP = \"timestamp\""],"metadata":{"application/vnd.databricks.v1+cell":{"title":"1. Read Data","showTitle":true,"inputWidgets":{},"nuid":"2168f3a2-c4fe-4deb-8257-4c6562888853"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"userId int64\nmovieId int64\nrating float64\ntimestamp int64\ndtype: object\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nuserId int64\nmovieId int64\nrating float64\ntimestamp int64\ndtype: object\n
"]}}],"execution_count":0},{"cell_type":"code","source":["df_ratings = df_ratings.head(100000)\n#Memory intensive so lower the count"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"f1bfabb1-1d22-4761-a09c-a9c2286bc605"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n"]}}],"execution_count":0},{"cell_type":"code","source":["''' Because SAR generates recommendations based on user preferences, all users that are in the test set must also exist in the training set. For this case, we can use the provided python_stratified_split function which holds out a percentage (in this case 30%) of items from each user, but ensures all users are in both train and test datasets.\n'''\ndf=df_ratings.copy()\ntrain, test = python_stratified_split(\n df, filter_by=\"user\", min_rating=10, ratio=0.7,\n col_user=COL_USER, col_item=COL_ITEM\n)\nprint(\"Size of Train: \",train.shape[0])\nprint(\"Size of Test: \",test.shape[0])"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"2. Split Data","showTitle":true,"inputWidgets":{},"nuid":"0c3a05ef-bb42-4133-9dee-41e59ead4f65"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Size of Train: 69992\nSize of Test: 30008\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nSize of Train: 69992\nSize of Test: 30008\n
"]}}],"execution_count":0},{"cell_type":"code","source":["#Modelling\n'''\nParameters:\n-col_user (str): user column name\n-col_item (str): item column name\n-col_rating (str): rating column name\n-col_timestamp (str): timestamp column name\n-col_prediction (str): prediction column name\n-similarity_type (str): ['cooccurrence', 'jaccard', 'lift'] option for computing item-item similarity\n-time_decay_coefficient (float): number of days till ratings are decayed by 1/2\n-time_now (int | None): current time for time decay calculation\n-timedecay_formula (bool): flag to apply time decay\n-threshold (int): item-item co-occurrences below this threshold will be removed\n-normalize (bool): option for normalizing predictions to scale of original ratings\n'''\n#Training\nheader = {\n \"col_user\": \"userId\",\n \"col_item\": \"movieId\",\n \"col_rating\": \"rating\",\n \"col_timestamp\": \"timestamp\",\n \"col_prediction\": \"prediction\",\n}\nmodel = SAR(\n col_user=\"userId\",\n col_item=\"movieId\",\n col_rating=\"rating\",\n col_timestamp=\"timestamp\",\n similarity_type=\"jaccard\", \n time_decay_coefficient=30, \n timedecay_formula=True,\n normalize=True\n)\nmodel.fit(train)\n\n#Scoring, remove already rated/seen movie or item\ntop_k = model.recommend_k_items(test, remove_seen=True) \ntop_k['prediction']= round(top_k['prediction'],2)\nprint(top_k[top_k['prediction']>0])"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"3. Train the SAR model on the training data, and get the top-k recommendations for our testing data","showTitle":true,"inputWidgets":{},"nuid":"5be06ffc-e30c-459b-aacf-2334e5581359"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":" userId movieId prediction\n0 1 102666 0.92\n1 1 146028 0.92\n2 1 107412 0.92\n3 1 26184 0.92\n4 1 172077 0.92\n... ... ... ...\n7565 757 1387 2.96\n7566 757 1206 2.96\n7567 757 1265 2.95\n7568 757 1222 2.91\n7569 757 2406 2.86\n\n[7570 rows x 3 columns]\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n userId movieId prediction\n0 1 102666 0.92\n1 1 146028 0.92\n2 1 107412 0.92\n3 1 26184 0.92\n4 1 172077 0.92\n... ... ... ...\n7565 757 1387 2.96\n7566 757 1206 2.96\n7567 757 1265 2.95\n7568 757 1222 2.91\n7569 757 2406 2.86\n\n[7570 rows x 3 columns]\n
"]}}],"execution_count":0},{"cell_type":"code","source":["# all ranking metrics have the same arguments\neval_map = map_at_k(test, top_k, col_user='userId', col_item='movieId', col_rating='rating', k=TOP_K)\neval_ndcg = ndcg_at_k(test, top_k, col_user='userId', col_item='movieId', col_rating='rating', k=TOP_K)\neval_precision = precision_at_k(test, top_k, col_user='userId', col_item='movieId', col_rating='rating', k=TOP_K)\neval_recall = recall_at_k(test, top_k, col_user='userId', col_item='movieId', col_rating='rating', k=TOP_K)\neval_rmse = rmse(test, top_k, col_user='userId', col_item='movieId', col_rating='rating')\neval_mae = mae(test, top_k, col_user='userId', col_item='movieId', col_rating='rating')\neval_rsquared = rsquared(test, top_k, col_user='userId', col_item='movieId', col_rating='rating')\neval_exp_var = exp_var(test, top_k, col_user='userId', col_item='movieId', col_rating='rating')\n\nprint(f\"Model:\",\n f\"Top K:\\t\\t {TOP_K}\",\n f\"MAP:\\t\\t {eval_map:f}\",\n f\"NDCG:\\t\\t {eval_ndcg:f}\",\n f\"Precision:\\t {eval_precision:f}\",\n f\"Recall:\\t {eval_recall:f}\", \n f\"RMSE:\\t {eval_rmse:f}\", \n f\"rsquared:\\t {eval_rsquared:f}\", \n f\"exp_variance:\\t {eval_exp_var:f}\",sep='\\n')"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"4.Evaluate the results","showTitle":true,"inputWidgets":{},"nuid":"7e9b89fd-11fa-4865-ada3-bf9acf4d954c"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Model:\nTop K:\t\t 10\nMAP:\t\t 0.071858\nNDCG:\t\t 0.253356\nPrecision:\t 0.229062\nRecall:\t 0.117728\nRMSE:\t 1.492350\nrsquared:\t -1.530726\nexp_variance:\t -0.129740\n
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nModel:\nTop K:\t\t 10\nMAP:\t\t 0.071858\nNDCG:\t\t 0.253356\nPrecision:\t 0.229062\nRecall:\t 0.117728\nRMSE:\t 1.492350\nrsquared:\t -1.530726\nexp_variance:\t -0.129740\n
"]}}],"execution_count":0},{"cell_type":"code","source":["#prediction v/s original rating in test dataframe\ntop_k.merge(test, on=['userId','movieId'], how='inner')\n"],"metadata":{"application/vnd.databricks.v1+cell":{"title":"","showTitle":false,"inputWidgets":{},"nuid":"f766e6e1-e440-4553-997e-3e7d99c97215"}},"outputs":[{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"Out[23]:
","removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"html","arguments":{}}},"output_type":"display_data","data":{"text/html":["\nOut[23]:
"]}},{"output_type":"display_data","metadata":{"application/vnd.databricks.v1+output":{"datasetInfos":[],"data":"\n\n
\n \n \n | \n userId | \n movieId | \n prediction | \n rating | \n timestamp | \n
\n \n \n \n 0 | \n 2 | \n 1198 | \n 3.08 | \n 4.0 | \n 1141417032 | \n
\n \n 1 | \n 2 | \n 1580 | \n 3.05 | \n 4.5 | \n 1141417059 | \n
\n \n 2 | \n 2 | \n 2028 | \n 2.98 | \n 4.0 | \n 1141415840 | \n
\n \n 3 | \n 3 | \n 69526 | \n 1.86 | \n 4.0 | \n 1439473894 | \n
\n \n 4 | \n 4 | \n 94864 | \n 2.59 | \n 0.5 | \n 1573939936 | \n
\n \n ... | \n ... | \n ... | \n ... | \n ... | \n ... | \n
\n \n 1729 | \n 757 | \n 1917 | \n 2.99 | \n 1.0 | \n 1184013974 | \n
\n \n 1730 | \n 757 | \n 1387 | \n 2.96 | \n 4.0 | \n 1184014485 | \n
\n \n 1731 | \n 757 | \n 1206 | \n 2.96 | \n 4.0 | \n 1184015591 | \n
\n \n 1732 | \n 757 | \n 1265 | \n 2.95 | \n 4.0 | \n 1184014201 | \n
\n \n 1733 | \n 757 | \n 1222 | \n 2.91 | \n 3.5 | \n 1184016799 | \n
\n \n
\n
1734 rows × 5 columns
\n
","textData":null,"removedWidgets":[],"addedWidgets":{},"metadata":{},"type":"htmlSandbox","arguments":{}}},"output_type":"display_data","data":{"text/html":["\n\n
\n \n \n | \n userId | \n movieId | \n prediction | \n rating | \n timestamp | \n
\n \n \n \n 0 | \n 2 | \n 1198 | \n 3.08 | \n 4.0 | \n 1141417032 | \n
\n \n 1 | \n 2 | \n 1580 | \n 3.05 | \n 4.5 | \n 1141417059 | \n
\n \n 2 | \n 2 | \n 2028 | \n 2.98 | \n 4.0 | \n 1141415840 | \n
\n \n 3 | \n 3 | \n 69526 | \n 1.86 | \n 4.0 | \n 1439473894 | \n
\n \n 4 | \n 4 | \n 94864 | \n 2.59 | \n 0.5 | \n 1573939936 | \n
\n \n ... | \n ... | \n ... | \n ... | \n ... | \n ... | \n
\n \n 1729 | \n 757 | \n 1917 | \n 2.99 | \n 1.0 | \n 1184013974 | \n
\n \n 1730 | \n 757 | \n 1387 | \n 2.96 | \n 4.0 | \n 1184014485 | \n
\n \n 1731 | \n 757 | \n 1206 | \n 2.96 | \n 4.0 | \n 1184015591 | \n
\n \n 1732 | \n 757 | \n 1265 | \n 2.95 | \n 4.0 | \n 1184014201 | \n
\n \n 1733 | \n 757 | \n 1222 | \n 2.91 | \n 3.5 | \n 1184016799 | \n
\n \n
\n
1734 rows × 5 columns
\n
"]}}],"execution_count":0}],"metadata":{"application/vnd.databricks.v1+notebook":{"notebookName":"2.d. Modelling- SAR (Content)","dashboards":[],"notebookMetadata":{"pythonIndentUnit":2},"language":"python","widgets":{"EnvType":{"nuid":"7bf6016b-8f96-4f96-a009-93a650467879","currentValue":"DEV","widgetInfo":{"widgetType":"text","name":"EnvType","defaultValue":"DEV","label":null,"options":{"widgetType":"text","validationRegex":null}}}},"notebookOrigID":1153725985288621}},"nbformat":4,"nbformat_minor":0}