From 04724b84939abcf78cb93674d9d5641a6e5d0c0b Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 11 Sep 2024 08:50:56 +0000 Subject: [PATCH] Update documentation --- _modules/recommenders/datasets/mind.html | 31 ++++++++++++------ .../models/deeprec/DataModel/ImplicitCF.html | 2 ++ build/lib/recommenders/datasets/mind.py | 31 ++++++++++++------ .../models/deeprec/DataModel/ImplicitCF.py | 2 ++ docs/_build/html/.doctrees/environment.pickle | Bin 1435501 -> 1435960 bytes .../_modules/recommenders/datasets/mind.html | 31 ++++++++++++------ .../models/deeprec/DataModel/ImplicitCF.html | 2 ++ recommenders.egg-info/PKG-INFO | 16 ++++----- recommenders.egg-info/requires.txt | 16 ++++----- 9 files changed, 85 insertions(+), 46 deletions(-) diff --git a/_modules/recommenders/datasets/mind.html b/_modules/recommenders/datasets/mind.html index 26aae0885..aac39e812 100644 --- a/_modules/recommenders/datasets/mind.html +++ b/_modules/recommenders/datasets/mind.html @@ -348,26 +348,37 @@

Source code for recommenders.datasets.mind

 )
 
 
-URL_MIND_LARGE_TRAIN = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_train.zip"
+URL_MIND_DEMO_TRAIN = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_train.zip"
 )
-URL_MIND_LARGE_VALID = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_dev.zip"
+URL_MIND_DEMO_VALID = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_dev.zip"
+)
+URL_MIND_DEMO_UTILS = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_utils.zip"
 )
+
 URL_MIND_SMALL_TRAIN = (
     "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_train.zip"
 )
 URL_MIND_SMALL_VALID = (
     "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_dev.zip"
 )
-URL_MIND_DEMO_TRAIN = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_train.zip"
+URL_MIND_SMALL_UTILS = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_utils.zip"
 )
-URL_MIND_DEMO_VALID = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_dev.zip"
+
+URL_MIND_LARGE_TRAIN = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_train.zip"
 )
-URL_MIND_DEMO_UTILS = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_utils.zip"
+URL_MIND_LARGE_VALID = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_dev.zip"
+)
+URL_MIND_LARGE_TEST = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_test.zip"
+)
+URL_MIND_LARGE_UTILS = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_utils.zip"
 )
 
 URL_MIND = {
diff --git a/_modules/recommenders/models/deeprec/DataModel/ImplicitCF.html b/_modules/recommenders/models/deeprec/DataModel/ImplicitCF.html
index ad6ada541..a1872774b 100644
--- a/_modules/recommenders/models/deeprec/DataModel/ImplicitCF.html
+++ b/_modules/recommenders/models/deeprec/DataModel/ImplicitCF.html
@@ -550,6 +550,8 @@ 

Source code for recommenders.models.deeprec.DataModel.ImplicitCF

""" def sample_neg(x): + if len(x) >= self.n_items: + raise ValueError("A user has voted in every item. Can't find a negative sample.") while True: neg_id = random.randint(0, self.n_items - 1) if neg_id not in x: diff --git a/build/lib/recommenders/datasets/mind.py b/build/lib/recommenders/datasets/mind.py index 23b7a8db2..7295786c2 100644 --- a/build/lib/recommenders/datasets/mind.py +++ b/build/lib/recommenders/datasets/mind.py @@ -17,26 +17,37 @@ ) -URL_MIND_LARGE_TRAIN = ( - "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_train.zip" +URL_MIND_DEMO_TRAIN = ( + "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_train.zip" ) -URL_MIND_LARGE_VALID = ( - "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_dev.zip" +URL_MIND_DEMO_VALID = ( + "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_dev.zip" +) +URL_MIND_DEMO_UTILS = ( + "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_utils.zip" ) + URL_MIND_SMALL_TRAIN = ( "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_train.zip" ) URL_MIND_SMALL_VALID = ( "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_dev.zip" ) -URL_MIND_DEMO_TRAIN = ( - "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_train.zip" +URL_MIND_SMALL_UTILS = ( + "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_utils.zip" ) -URL_MIND_DEMO_VALID = ( - "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_dev.zip" + +URL_MIND_LARGE_TRAIN = ( + "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_train.zip" ) -URL_MIND_DEMO_UTILS = ( - "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_utils.zip" +URL_MIND_LARGE_VALID = ( + "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_dev.zip" +) +URL_MIND_LARGE_TEST = ( + "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_test.zip" +) +URL_MIND_LARGE_UTILS = ( + "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_utils.zip" ) URL_MIND = { diff --git a/build/lib/recommenders/models/deeprec/DataModel/ImplicitCF.py b/build/lib/recommenders/models/deeprec/DataModel/ImplicitCF.py index 3cfbb2821..42bb319c4 100644 --- a/build/lib/recommenders/models/deeprec/DataModel/ImplicitCF.py +++ b/build/lib/recommenders/models/deeprec/DataModel/ImplicitCF.py @@ -206,6 +206,8 @@ def train_loader(self, batch_size): """ def sample_neg(x): + if len(x) >= self.n_items: + raise ValueError("A user has voted in every item. Can't find a negative sample.") while True: neg_id = random.randint(0, self.n_items - 1) if neg_id not in x: diff --git a/docs/_build/html/.doctrees/environment.pickle b/docs/_build/html/.doctrees/environment.pickle index ffaca88bb8329855f83b8f420a468fef2d4a37a3..2869545d59848acb677de5097df56a7b6ec78786 100644 GIT binary patch delta 34179 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 MQL?tQbaJQv2d5%x^8f$< delta 33459 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 UNK6s0KNlA5EM8YqGNtSP1GfpxK>z>% diff --git a/docs/_build/html/_modules/recommenders/datasets/mind.html b/docs/_build/html/_modules/recommenders/datasets/mind.html index 26aae0885..aac39e812 100644 --- a/docs/_build/html/_modules/recommenders/datasets/mind.html +++ b/docs/_build/html/_modules/recommenders/datasets/mind.html @@ -348,26 +348,37 @@

Source code for recommenders.datasets.mind

 )
 
 
-URL_MIND_LARGE_TRAIN = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_train.zip"
+URL_MIND_DEMO_TRAIN = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_train.zip"
 )
-URL_MIND_LARGE_VALID = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_dev.zip"
+URL_MIND_DEMO_VALID = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_dev.zip"
+)
+URL_MIND_DEMO_UTILS = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_utils.zip"
 )
+
 URL_MIND_SMALL_TRAIN = (
     "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_train.zip"
 )
 URL_MIND_SMALL_VALID = (
     "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_dev.zip"
 )
-URL_MIND_DEMO_TRAIN = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_train.zip"
+URL_MIND_SMALL_UTILS = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDsmall_utils.zip"
 )
-URL_MIND_DEMO_VALID = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_dev.zip"
+
+URL_MIND_LARGE_TRAIN = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_train.zip"
 )
-URL_MIND_DEMO_UTILS = (
-    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDdemo_utils.zip"
+URL_MIND_LARGE_VALID = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_dev.zip"
+)
+URL_MIND_LARGE_TEST = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_test.zip"
+)
+URL_MIND_LARGE_UTILS = (
+    "https://recodatasets.z20.web.core.windows.net/newsrec/MINDlarge_utils.zip"
 )
 
 URL_MIND = {
diff --git a/docs/_build/html/_modules/recommenders/models/deeprec/DataModel/ImplicitCF.html b/docs/_build/html/_modules/recommenders/models/deeprec/DataModel/ImplicitCF.html
index ad6ada541..a1872774b 100644
--- a/docs/_build/html/_modules/recommenders/models/deeprec/DataModel/ImplicitCF.html
+++ b/docs/_build/html/_modules/recommenders/models/deeprec/DataModel/ImplicitCF.html
@@ -550,6 +550,8 @@ 

Source code for recommenders.models.deeprec.DataModel.ImplicitCF

""" def sample_neg(x): + if len(x) >= self.n_items: + raise ValueError("A user has voted in every item. Can't find a negative sample.") while True: neg_id = random.randint(0, self.n_items - 1) if neg_id not in x: diff --git a/recommenders.egg-info/PKG-INFO b/recommenders.egg-info/PKG-INFO index 85a9a3703..c70692274 100644 --- a/recommenders.egg-info/PKG-INFO +++ b/recommenders.egg-info/PKG-INFO @@ -58,17 +58,17 @@ Requires-Dist: pytest>=7.2.1; extra == "dev" Requires-Dist: pytest-cov>=4.1.0; extra == "dev" Requires-Dist: pytest-mock>=3.10.0; extra == "dev" Provides-Extra: all -Requires-Dist: pyspark<=4,>=3.3.0; extra == "all" -Requires-Dist: tf-slim>=1.1.0; extra == "all" -Requires-Dist: pyarrow>=10.0.1; extra == "all" -Requires-Dist: pytest-mock>=3.10.0; extra == "all" +Requires-Dist: torch<3,>=2.0.1; extra == "all" Requires-Dist: nvidia-ml-py>=11.525.84; extra == "all" -Requires-Dist: tensorflow!=2.10.0.*,!=2.9.0.*,!=2.9.1,!=2.9.2,<2.16,>=2.8.4; extra == "all" -Requires-Dist: fastai<3,>=2.7.11; extra == "all" -Requires-Dist: pytest-cov>=4.1.0; extra == "all" Requires-Dist: black>=23.3.0; extra == "all" +Requires-Dist: pytest-cov>=4.1.0; extra == "all" +Requires-Dist: tensorflow!=2.10.0.*,!=2.9.0.*,!=2.9.1,!=2.9.2,<2.16,>=2.8.4; extra == "all" +Requires-Dist: pytest-mock>=3.10.0; extra == "all" +Requires-Dist: pyarrow>=10.0.1; extra == "all" +Requires-Dist: tf-slim>=1.1.0; extra == "all" Requires-Dist: pytest>=7.2.1; extra == "all" -Requires-Dist: torch<3,>=2.0.1; extra == "all" +Requires-Dist: fastai<3,>=2.7.11; extra == "all" +Requires-Dist: pyspark<=4,>=3.3.0; extra == "all" Provides-Extra: experimental Requires-Dist: xlearn==0.40a1; extra == "experimental" Requires-Dist: vowpalwabbit<9,>=8.9.0; extra == "experimental" diff --git a/recommenders.egg-info/requires.txt b/recommenders.egg-info/requires.txt index 27c95b28e..0610b2706 100644 --- a/recommenders.egg-info/requires.txt +++ b/recommenders.egg-info/requires.txt @@ -23,17 +23,17 @@ pandera[strategies]<0.18,>=0.6.5 pandera[strategies]>=0.15.0 [all] -pyspark<=4,>=3.3.0 -tf-slim>=1.1.0 -pyarrow>=10.0.1 -pytest-mock>=3.10.0 +torch<3,>=2.0.1 nvidia-ml-py>=11.525.84 -tensorflow!=2.10.0.*,!=2.9.0.*,!=2.9.1,!=2.9.2,<2.16,>=2.8.4 -fastai<3,>=2.7.11 -pytest-cov>=4.1.0 black>=23.3.0 +pytest-cov>=4.1.0 +tensorflow!=2.10.0.*,!=2.9.0.*,!=2.9.1,!=2.9.2,<2.16,>=2.8.4 +pytest-mock>=3.10.0 +pyarrow>=10.0.1 +tf-slim>=1.1.0 pytest>=7.2.1 -torch<3,>=2.0.1 +fastai<3,>=2.7.11 +pyspark<=4,>=3.3.0 [dev] black>=23.3.0