replay-rec 0.19.0rc0__py3-none-any.whl → 0.20.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- replay/__init__.py +6 -2
- replay/data/dataset.py +9 -9
- replay/data/nn/__init__.py +6 -6
- replay/data/nn/sequence_tokenizer.py +44 -38
- replay/data/nn/sequential_dataset.py +13 -8
- replay/data/nn/torch_sequential_dataset.py +14 -13
- replay/data/nn/utils.py +1 -1
- replay/metrics/base_metric.py +1 -1
- replay/metrics/coverage.py +7 -11
- replay/metrics/experiment.py +3 -3
- replay/metrics/offline_metrics.py +2 -2
- replay/models/__init__.py +19 -0
- replay/models/association_rules.py +1 -4
- replay/models/base_neighbour_rec.py +6 -9
- replay/models/base_rec.py +44 -293
- replay/models/cat_pop_rec.py +2 -1
- replay/models/common.py +69 -0
- replay/models/extensions/ann/ann_mixin.py +30 -25
- replay/models/extensions/ann/index_builders/driver_hnswlib_index_builder.py +1 -1
- replay/models/extensions/ann/utils.py +4 -3
- replay/models/knn.py +18 -17
- replay/models/nn/sequential/bert4rec/dataset.py +1 -1
- replay/models/nn/sequential/callbacks/prediction_callbacks.py +2 -2
- replay/models/nn/sequential/compiled/__init__.py +10 -0
- replay/models/nn/sequential/compiled/base_compiled_model.py +3 -1
- replay/models/nn/sequential/compiled/bert4rec_compiled.py +11 -2
- replay/models/nn/sequential/compiled/sasrec_compiled.py +5 -1
- replay/models/nn/sequential/sasrec/dataset.py +1 -1
- replay/models/nn/sequential/sasrec/model.py +1 -1
- replay/models/optimization/__init__.py +14 -0
- replay/models/optimization/optuna_mixin.py +279 -0
- replay/{optimization → models/optimization}/optuna_objective.py +13 -15
- replay/models/slim.py +2 -4
- replay/models/word2vec.py +7 -12
- replay/preprocessing/discretizer.py +1 -2
- replay/preprocessing/history_based_fp.py +1 -1
- replay/preprocessing/label_encoder.py +1 -1
- replay/splitters/cold_user_random_splitter.py +13 -7
- replay/splitters/last_n_splitter.py +17 -10
- replay/utils/__init__.py +6 -2
- replay/utils/common.py +4 -2
- replay/utils/model_handler.py +11 -31
- replay/utils/session_handler.py +2 -2
- replay/utils/spark_utils.py +2 -2
- replay/utils/types.py +28 -18
- replay/utils/warnings.py +26 -0
- {replay_rec-0.19.0rc0.dist-info → replay_rec-0.20.0.dist-info}/METADATA +56 -40
- replay_rec-0.20.0.dist-info/RECORD +139 -0
- {replay_rec-0.19.0rc0.dist-info → replay_rec-0.20.0.dist-info}/WHEEL +1 -1
- replay/experimental/__init__.py +0 -0
- replay/experimental/metrics/__init__.py +0 -62
- replay/experimental/metrics/base_metric.py +0 -602
- replay/experimental/metrics/coverage.py +0 -97
- replay/experimental/metrics/experiment.py +0 -175
- replay/experimental/metrics/hitrate.py +0 -26
- replay/experimental/metrics/map.py +0 -30
- replay/experimental/metrics/mrr.py +0 -18
- replay/experimental/metrics/ncis_precision.py +0 -31
- replay/experimental/metrics/ndcg.py +0 -49
- replay/experimental/metrics/precision.py +0 -22
- replay/experimental/metrics/recall.py +0 -25
- replay/experimental/metrics/rocauc.py +0 -49
- replay/experimental/metrics/surprisal.py +0 -90
- replay/experimental/metrics/unexpectedness.py +0 -76
- replay/experimental/models/__init__.py +0 -13
- replay/experimental/models/admm_slim.py +0 -205
- replay/experimental/models/base_neighbour_rec.py +0 -204
- replay/experimental/models/base_rec.py +0 -1340
- replay/experimental/models/base_torch_rec.py +0 -234
- replay/experimental/models/cql.py +0 -454
- replay/experimental/models/ddpg.py +0 -923
- replay/experimental/models/dt4rec/__init__.py +0 -0
- replay/experimental/models/dt4rec/dt4rec.py +0 -189
- replay/experimental/models/dt4rec/gpt1.py +0 -401
- replay/experimental/models/dt4rec/trainer.py +0 -127
- replay/experimental/models/dt4rec/utils.py +0 -265
- replay/experimental/models/extensions/spark_custom_models/__init__.py +0 -0
- replay/experimental/models/extensions/spark_custom_models/als_extension.py +0 -792
- replay/experimental/models/hierarchical_recommender.py +0 -331
- replay/experimental/models/implicit_wrap.py +0 -131
- replay/experimental/models/lightfm_wrap.py +0 -302
- replay/experimental/models/mult_vae.py +0 -332
- replay/experimental/models/neural_ts.py +0 -986
- replay/experimental/models/neuromf.py +0 -406
- replay/experimental/models/scala_als.py +0 -296
- replay/experimental/models/u_lin_ucb.py +0 -115
- replay/experimental/nn/data/__init__.py +0 -1
- replay/experimental/nn/data/schema_builder.py +0 -102
- replay/experimental/preprocessing/__init__.py +0 -3
- replay/experimental/preprocessing/data_preparator.py +0 -839
- replay/experimental/preprocessing/padder.py +0 -229
- replay/experimental/preprocessing/sequence_generator.py +0 -208
- replay/experimental/scenarios/__init__.py +0 -1
- replay/experimental/scenarios/obp_wrapper/__init__.py +0 -8
- replay/experimental/scenarios/obp_wrapper/obp_optuna_objective.py +0 -74
- replay/experimental/scenarios/obp_wrapper/replay_offline.py +0 -261
- replay/experimental/scenarios/obp_wrapper/utils.py +0 -87
- replay/experimental/scenarios/two_stages/__init__.py +0 -0
- replay/experimental/scenarios/two_stages/reranker.py +0 -117
- replay/experimental/scenarios/two_stages/two_stages_scenario.py +0 -757
- replay/experimental/utils/__init__.py +0 -0
- replay/experimental/utils/logger.py +0 -24
- replay/experimental/utils/model_handler.py +0 -186
- replay/experimental/utils/session_handler.py +0 -44
- replay/optimization/__init__.py +0 -5
- replay_rec-0.19.0rc0.dist-info/RECORD +0 -191
- {replay_rec-0.19.0rc0.dist-info → replay_rec-0.20.0.dist-info/licenses}/LICENSE +0 -0
- {replay_rec-0.19.0rc0.dist-info → replay_rec-0.20.0.dist-info/licenses}/NOTICE +0 -0
|
File without changes
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
def get_logger(
|
|
5
|
-
name,
|
|
6
|
-
level=logging.INFO,
|
|
7
|
-
format_str="%(asctime)s [%(pathname)s:%(lineno)s - %(levelname)s ] %(message)s",
|
|
8
|
-
date_format="%Y-%m-%d %H:%M:%S",
|
|
9
|
-
file=False,
|
|
10
|
-
):
|
|
11
|
-
"""
|
|
12
|
-
Get python logger instance
|
|
13
|
-
"""
|
|
14
|
-
logger = logging.getLogger(name)
|
|
15
|
-
logger.setLevel(level)
|
|
16
|
-
|
|
17
|
-
if not logger.hasHandlers():
|
|
18
|
-
handler = logging.StreamHandler() if not file else logging.FileHandler(name)
|
|
19
|
-
handler.setLevel(level)
|
|
20
|
-
formatter = logging.Formatter(fmt=format_str, datefmt=date_format)
|
|
21
|
-
handler.setFormatter(formatter)
|
|
22
|
-
logger.addHandler(handler)
|
|
23
|
-
|
|
24
|
-
return logger
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from inspect import getfullargspec
|
|
3
|
-
from os.path import join
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Union
|
|
6
|
-
|
|
7
|
-
from replay.experimental.models.base_rec import BaseRecommender
|
|
8
|
-
from replay.experimental.preprocessing import Indexer
|
|
9
|
-
from replay.utils import PYSPARK_AVAILABLE
|
|
10
|
-
from replay.utils.session_handler import State
|
|
11
|
-
from replay.utils.spark_utils import load_pickled_from_parquet, save_picklable_to_parquet
|
|
12
|
-
|
|
13
|
-
if PYSPARK_AVAILABLE:
|
|
14
|
-
import pyspark.sql.types as st
|
|
15
|
-
from pyspark.ml.feature import IndexToString, StringIndexerModel
|
|
16
|
-
from pyspark.sql import SparkSession
|
|
17
|
-
|
|
18
|
-
from replay.utils.model_handler import get_fs
|
|
19
|
-
|
|
20
|
-
def get_list_of_paths(spark: SparkSession, dir_path: str):
|
|
21
|
-
"""
|
|
22
|
-
Returns list of paths to files in the `dir_path`
|
|
23
|
-
|
|
24
|
-
:param spark: spark session
|
|
25
|
-
:param dir_path: path to dir in hdfs or local disk
|
|
26
|
-
:return: list of paths to files
|
|
27
|
-
"""
|
|
28
|
-
fs = get_fs(spark)
|
|
29
|
-
statuses = fs.listStatus(spark._jvm.org.apache.hadoop.fs.Path(dir_path))
|
|
30
|
-
return [str(f.getPath()) for f in statuses]
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def save(model: BaseRecommender, path: Union[str, Path], overwrite: bool = False):
|
|
34
|
-
"""
|
|
35
|
-
Save fitted model to disk as a folder
|
|
36
|
-
|
|
37
|
-
:param model: Trained recommender
|
|
38
|
-
:param path: destination where model files will be stored
|
|
39
|
-
:return:
|
|
40
|
-
"""
|
|
41
|
-
if isinstance(path, Path):
|
|
42
|
-
path = str(path)
|
|
43
|
-
|
|
44
|
-
spark = State().session
|
|
45
|
-
|
|
46
|
-
fs = get_fs(spark)
|
|
47
|
-
if not overwrite:
|
|
48
|
-
is_exists = fs.exists(spark._jvm.org.apache.hadoop.fs.Path(path))
|
|
49
|
-
if is_exists:
|
|
50
|
-
msg = f"Path '{path}' already exists. Mode is 'overwrite = False'."
|
|
51
|
-
raise FileExistsError(msg)
|
|
52
|
-
|
|
53
|
-
fs.mkdirs(spark._jvm.org.apache.hadoop.fs.Path(path))
|
|
54
|
-
model._save_model(join(path, "model"))
|
|
55
|
-
|
|
56
|
-
init_args = model._init_args
|
|
57
|
-
init_args["_model_name"] = str(model)
|
|
58
|
-
sc = spark.sparkContext
|
|
59
|
-
df = spark.read.json(sc.parallelize([json.dumps(init_args)]))
|
|
60
|
-
df.coalesce(1).write.mode("overwrite").option("ignoreNullFields", "false").json(join(path, "init_args.json"))
|
|
61
|
-
|
|
62
|
-
dataframes = model._dataframes
|
|
63
|
-
df_path = join(path, "dataframes")
|
|
64
|
-
for name, df in dataframes.items():
|
|
65
|
-
if df is not None:
|
|
66
|
-
df.write.mode("overwrite").parquet(join(df_path, name))
|
|
67
|
-
|
|
68
|
-
if hasattr(model, "fit_users"):
|
|
69
|
-
model.fit_users.write.mode("overwrite").parquet(join(df_path, "fit_users"))
|
|
70
|
-
if hasattr(model, "fit_items"):
|
|
71
|
-
model.fit_items.write.mode("overwrite").parquet(join(df_path, "fit_items"))
|
|
72
|
-
if hasattr(model, "study"):
|
|
73
|
-
save_picklable_to_parquet(model.study, join(path, "study"))
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def load(path: str, model_type=None) -> BaseRecommender:
|
|
77
|
-
"""
|
|
78
|
-
Load saved model from disk
|
|
79
|
-
|
|
80
|
-
:param path: path to model folder
|
|
81
|
-
:return: Restored trained model
|
|
82
|
-
"""
|
|
83
|
-
spark = State().session
|
|
84
|
-
args = spark.read.json(join(path, "init_args.json")).first().asDict(recursive=True)
|
|
85
|
-
name = args["_model_name"]
|
|
86
|
-
del args["_model_name"]
|
|
87
|
-
|
|
88
|
-
model_class = model_type if model_type is not None else globals()[name]
|
|
89
|
-
if name == "CQL":
|
|
90
|
-
for a in args:
|
|
91
|
-
if isinstance(args[a], dict) and "type" in args[a] and args[a]["type"] == "none":
|
|
92
|
-
args[a]["params"] = {}
|
|
93
|
-
init_args = getfullargspec(model_class.__init__).args
|
|
94
|
-
init_args.remove("self")
|
|
95
|
-
extra_args = set(args) - set(init_args)
|
|
96
|
-
if len(extra_args) > 0:
|
|
97
|
-
extra_args = {key: args[key] for key in args}
|
|
98
|
-
init_args = {key: args[key] for key in init_args}
|
|
99
|
-
else:
|
|
100
|
-
init_args = args
|
|
101
|
-
extra_args = {}
|
|
102
|
-
|
|
103
|
-
model = model_class(**init_args)
|
|
104
|
-
for arg in extra_args:
|
|
105
|
-
model.arg = extra_args[arg]
|
|
106
|
-
|
|
107
|
-
dataframes_paths = get_list_of_paths(spark, join(path, "dataframes"))
|
|
108
|
-
for dataframe_path in dataframes_paths:
|
|
109
|
-
df = spark.read.parquet(dataframe_path)
|
|
110
|
-
attr_name = dataframe_path.split("/")[-1]
|
|
111
|
-
setattr(model, attr_name, df)
|
|
112
|
-
|
|
113
|
-
model._load_model(join(path, "model"))
|
|
114
|
-
fs = get_fs(spark)
|
|
115
|
-
model.study = (
|
|
116
|
-
load_pickled_from_parquet(join(path, "study"))
|
|
117
|
-
if fs.exists(spark._jvm.org.apache.hadoop.fs.Path(join(path, "study")))
|
|
118
|
-
else None
|
|
119
|
-
)
|
|
120
|
-
|
|
121
|
-
return model
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def save_indexer(indexer: Indexer, path: Union[str, Path], overwrite: bool = False):
|
|
125
|
-
"""
|
|
126
|
-
Save fitted indexer to disk as a folder
|
|
127
|
-
|
|
128
|
-
:param indexer: Trained indexer
|
|
129
|
-
:param path: destination where indexer files will be stored
|
|
130
|
-
"""
|
|
131
|
-
if isinstance(path, Path):
|
|
132
|
-
path = str(path)
|
|
133
|
-
|
|
134
|
-
spark = State().session
|
|
135
|
-
|
|
136
|
-
if not overwrite:
|
|
137
|
-
fs = get_fs(spark)
|
|
138
|
-
is_exists = fs.exists(spark._jvm.org.apache.hadoop.fs.Path(path))
|
|
139
|
-
if is_exists:
|
|
140
|
-
msg = f"Path '{path}' already exists. Mode is 'overwrite = False'."
|
|
141
|
-
raise FileExistsError(msg)
|
|
142
|
-
|
|
143
|
-
init_args = indexer._init_args
|
|
144
|
-
init_args["user_type"] = str(indexer.user_type)
|
|
145
|
-
init_args["item_type"] = str(indexer.item_type)
|
|
146
|
-
sc = spark.sparkContext
|
|
147
|
-
df = spark.read.json(sc.parallelize([json.dumps(init_args)]))
|
|
148
|
-
df.coalesce(1).write.mode("overwrite").json(join(path, "init_args.json"))
|
|
149
|
-
|
|
150
|
-
indexer.user_indexer.write().overwrite().save(join(path, "user_indexer"))
|
|
151
|
-
indexer.item_indexer.write().overwrite().save(join(path, "item_indexer"))
|
|
152
|
-
indexer.inv_user_indexer.write().overwrite().save(join(path, "inv_user_indexer"))
|
|
153
|
-
indexer.inv_item_indexer.write().overwrite().save(join(path, "inv_item_indexer"))
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
def load_indexer(path: str) -> Indexer:
|
|
157
|
-
"""
|
|
158
|
-
Load saved indexer from disk
|
|
159
|
-
|
|
160
|
-
:param path: path to folder
|
|
161
|
-
:return: restored Indexer
|
|
162
|
-
"""
|
|
163
|
-
spark = State().session
|
|
164
|
-
args = spark.read.json(join(path, "init_args.json")).first().asDict()
|
|
165
|
-
|
|
166
|
-
user_type = args["user_type"]
|
|
167
|
-
del args["user_type"]
|
|
168
|
-
item_type = args["item_type"]
|
|
169
|
-
del args["item_type"]
|
|
170
|
-
|
|
171
|
-
indexer = Indexer(**args)
|
|
172
|
-
|
|
173
|
-
if user_type.endswith("()"):
|
|
174
|
-
user_type = user_type[:-2]
|
|
175
|
-
item_type = item_type[:-2]
|
|
176
|
-
user_type = getattr(st, user_type)
|
|
177
|
-
item_type = getattr(st, item_type)
|
|
178
|
-
indexer.user_type = user_type()
|
|
179
|
-
indexer.item_type = item_type()
|
|
180
|
-
|
|
181
|
-
indexer.user_indexer = StringIndexerModel.load(join(path, "user_indexer"))
|
|
182
|
-
indexer.item_indexer = StringIndexerModel.load(join(path, "item_indexer"))
|
|
183
|
-
indexer.inv_user_indexer = IndexToString.load(join(path, "inv_user_indexer"))
|
|
184
|
-
indexer.inv_item_indexer = IndexToString.load(join(path, "inv_item_indexer"))
|
|
185
|
-
|
|
186
|
-
return indexer
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
|
-
import torch
|
|
4
|
-
|
|
5
|
-
from replay.utils.session_handler import Borg, get_spark_session, logger_with_settings
|
|
6
|
-
from replay.utils.types import PYSPARK_AVAILABLE, MissingImportType
|
|
7
|
-
|
|
8
|
-
if PYSPARK_AVAILABLE:
|
|
9
|
-
from pyspark.sql import SparkSession
|
|
10
|
-
else:
|
|
11
|
-
SparkSession = MissingImportType
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class State(Borg):
|
|
15
|
-
"""
|
|
16
|
-
All modules look for Spark session via this class. You can put your own session here.
|
|
17
|
-
|
|
18
|
-
Other parameters are stored here too: ``default device`` for ``pytorch`` (CPU/CUDA)
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
def __init__(
|
|
22
|
-
self,
|
|
23
|
-
session: Optional[SparkSession] = None,
|
|
24
|
-
device: Optional[torch.device] = None,
|
|
25
|
-
):
|
|
26
|
-
Borg.__init__(self)
|
|
27
|
-
if not hasattr(self, "logger_set"):
|
|
28
|
-
self.logger = logger_with_settings()
|
|
29
|
-
self.logger_set = True
|
|
30
|
-
|
|
31
|
-
if session is None:
|
|
32
|
-
if not hasattr(self, "session"):
|
|
33
|
-
self.session = get_spark_session()
|
|
34
|
-
else:
|
|
35
|
-
self.session = session
|
|
36
|
-
|
|
37
|
-
if device is None:
|
|
38
|
-
if not hasattr(self, "device"):
|
|
39
|
-
if torch.cuda.is_available():
|
|
40
|
-
self.device = torch.device(f"cuda:{torch.cuda.current_device()}")
|
|
41
|
-
else:
|
|
42
|
-
self.device = torch.device("cpu")
|
|
43
|
-
else:
|
|
44
|
-
self.device = device
|
replay/optimization/__init__.py
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
replay/__init__.py,sha256=U6En2f4FR_XpdIg7fKqAAzDV1HLa70xZvrt6qVQk6-U,55
|
|
2
|
-
replay/data/__init__.py,sha256=g5bKRyF76QL_BqlED-31RnS8pBdcyj9loMsx5vAG_0E,301
|
|
3
|
-
replay/data/dataset.py,sha256=wIIezbAWP7yzYAHei0gD0z45Uk6quaWRKsQo2pcjj8A,30749
|
|
4
|
-
replay/data/dataset_utils/__init__.py,sha256=9wUvG8ZwGUvuzLU4zQI5FDcH0WVVo5YLN2ey3DterP0,55
|
|
5
|
-
replay/data/dataset_utils/dataset_label_encoder.py,sha256=6Pd6LYXLL_9xwvV5hbJvL88Um-KSIeVeYTa3RopuHP0,9807
|
|
6
|
-
replay/data/nn/__init__.py,sha256=WxLsi4rgOuuvGYHN49xBPxP2Srhqf3NYgfBDVH-ZvBo,1122
|
|
7
|
-
replay/data/nn/schema.py,sha256=0I3fdMYuMElcAhVfY44eFDGq1tVYRUMvZBspdVUqyfI,17112
|
|
8
|
-
replay/data/nn/sequence_tokenizer.py,sha256=0IBPkVwxgimLmuSGqQheVyy9dbo5kDvNutoRBRCipEA,37051
|
|
9
|
-
replay/data/nn/sequential_dataset.py,sha256=jCWxC0Pm1eQ5p8Y6_Bmg4fSEvPaecLrqz1iaWzaICdI,11014
|
|
10
|
-
replay/data/nn/torch_sequential_dataset.py,sha256=NCNYLuhiRJj7x0_E6Z2UkF0h2YdumbWzJSG6GCb3muA,11501
|
|
11
|
-
replay/data/nn/utils.py,sha256=fQiEZyc0YuCSDi9Rfp9KRtXGjedH1Lc_4QWd3-rTFjs,3272
|
|
12
|
-
replay/data/schema.py,sha256=iQormeeiLbbxyADdV6Dv_KENe-tIaRiqlhixkQlC2aw,15952
|
|
13
|
-
replay/data/spark_schema.py,sha256=4o0Kn_fjwz2-9dBY3q46F9PL0F3E7jdVpIlX7SG3OZI,1111
|
|
14
|
-
replay/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
replay/experimental/metrics/__init__.py,sha256=bdQogGbEDVAeH7Ejbb6vpw7bP6CYhftTu_DQuoFRuCA,2861
|
|
16
|
-
replay/experimental/metrics/base_metric.py,sha256=mWbkRGdHTF3ZHq9WSqTGGAX2XJtOSzwcefjSu1Mdl0Y,22649
|
|
17
|
-
replay/experimental/metrics/coverage.py,sha256=3kVBAUhIEOuD8aJ6DShH2xh_1F61dcLZb001VCkmeJk,3154
|
|
18
|
-
replay/experimental/metrics/experiment.py,sha256=Bd_XB9zbngcAwf5JLZKVPsFWQoz9pEGlPEUbkiR_MDc,7343
|
|
19
|
-
replay/experimental/metrics/hitrate.py,sha256=TfWJrUyZXabdMr4tn8zqUPGDcYy2yphVCzXmLSHCxY0,675
|
|
20
|
-
replay/experimental/metrics/map.py,sha256=S4dKiMpYR0_pu0bqioGMT0kIC1s2aojFP4rddBqMPtM,921
|
|
21
|
-
replay/experimental/metrics/mrr.py,sha256=q6I1Cndlwr716mMuYtTMu0lN8Rrp9khxhb49OM2IpV8,530
|
|
22
|
-
replay/experimental/metrics/ncis_precision.py,sha256=yrErOhBZvZdNpQPx_AXyktDJatqdWRIHNMyei0QDJtQ,1088
|
|
23
|
-
replay/experimental/metrics/ndcg.py,sha256=q3KTsyZCrfvcpEjEnR_kWVB9ZaTFRxnoNRAr2WD0TrU,1538
|
|
24
|
-
replay/experimental/metrics/precision.py,sha256=U9pD9yRGeT8uH32BTyQ-W5qsAnbFWu-pqy4XfkcXfCM,664
|
|
25
|
-
replay/experimental/metrics/recall.py,sha256=5xRPGxfbVoDFEI5E6dVlZpT4RvnDlWzaktyoqh3a8mc,774
|
|
26
|
-
replay/experimental/metrics/rocauc.py,sha256=yq4vW2_bXO8HCjREBZVrHMKeZ054LYvjJmLJTXWPfQA,1675
|
|
27
|
-
replay/experimental/metrics/surprisal.py,sha256=CK4_zed2bSMDwC7ZBCS8d8RwGEqt8bh3w3fTpjKiK6Y,3052
|
|
28
|
-
replay/experimental/metrics/unexpectedness.py,sha256=JQQXEYHtQM8nqp7X2He4E9ZYwbpdENaK8oQG7sUQT3s,2621
|
|
29
|
-
replay/experimental/models/__init__.py,sha256=7k_KigXnXmdnAnP3uf9DJR_GChG--jGUxPov05UVBgs,791
|
|
30
|
-
replay/experimental/models/admm_slim.py,sha256=Oz-x0aQAnGFN9z7PB7MiKfduBasc4KQrBT0JwtYdwLY,6581
|
|
31
|
-
replay/experimental/models/base_neighbour_rec.py,sha256=pRcffr0cdRNZRVpzWb2Qv-UIsLkhbs7K1GRAmrSqPSM,7506
|
|
32
|
-
replay/experimental/models/base_rec.py,sha256=0u_kAUelLyIO6VSu6Un5zFZpzSjKYR7l384BY_79EWY,52108
|
|
33
|
-
replay/experimental/models/base_torch_rec.py,sha256=oDkCxVFQjIHSWKlCns6mU3ECWbQW3mQZWvBHBxJQdwc,8111
|
|
34
|
-
replay/experimental/models/cql.py,sha256=3IBQEqWfyHmvGxCvWtIbLgjuRWfd_8mySg8bVaI4KHQ,19630
|
|
35
|
-
replay/experimental/models/ddpg.py,sha256=uqWk235-YZ2na-NPN4TxUM9ZhogpLZEjivt1oSC2rtI,32080
|
|
36
|
-
replay/experimental/models/dt4rec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
-
replay/experimental/models/dt4rec/dt4rec.py,sha256=ZIHYonDubStN7Gb703csy86R7Q3_1fZc4zJf98HYFe4,5895
|
|
38
|
-
replay/experimental/models/dt4rec/gpt1.py,sha256=T3buFtYyF6Fh6sW6f9dUZFcFEnQdljItbRa22CiKb0w,14044
|
|
39
|
-
replay/experimental/models/dt4rec/trainer.py,sha256=YeaJ8mnoYZqnPwm1P9qOYb8GzgFC5At-JeSDcvG2V2o,3859
|
|
40
|
-
replay/experimental/models/dt4rec/utils.py,sha256=jbCx2Xc85VtjQx-caYhJFfVuj1Wf866OAiSoZlR4q48,8201
|
|
41
|
-
replay/experimental/models/extensions/spark_custom_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
|
-
replay/experimental/models/extensions/spark_custom_models/als_extension.py,sha256=dKSVCMXWRB7IUnpEK_QNhSEuUSVcG793E8MT_AGXneY,25890
|
|
43
|
-
replay/experimental/models/hierarchical_recommender.py,sha256=BqnEFBppKawt8Xx5lzBWk6qnmdCrZ7c2hpKj3mi1GvU,11441
|
|
44
|
-
replay/experimental/models/implicit_wrap.py,sha256=8F-f-CaStmlNHwphu-yu8o4Aft08NKDD_SqqH0zp1Uo,4655
|
|
45
|
-
replay/experimental/models/lightfm_wrap.py,sha256=8nuTpiBuddKlMFFpbUpRt5k_JiBGRjPpF_hNbKdLP4Q,11327
|
|
46
|
-
replay/experimental/models/mult_vae.py,sha256=BnnlUHPlNuvh7EFA8bjITRW_m8JQANRD6zvsNQ1SUXM,11608
|
|
47
|
-
replay/experimental/models/neural_ts.py,sha256=zviSSY43Pmr4WJXD4I7UobBby5fU1To4SM1Mfz-wae0,42506
|
|
48
|
-
replay/experimental/models/neuromf.py,sha256=Hr9qEKv1shkwAqCVCxfews1Pk3F6yni2WIZUGS2tNCE,14392
|
|
49
|
-
replay/experimental/models/scala_als.py,sha256=-sMZ8P_XbmVi-hApuS46MpaosVIXRED05cgsOI3ojvQ,10975
|
|
50
|
-
replay/experimental/models/u_lin_ucb.py,sha256=-gu6meOYeSwP6N8ILtwasWYj4Mbs6EJEFQXUHE8N_lY,3750
|
|
51
|
-
replay/experimental/nn/data/__init__.py,sha256=5EAF-FNd7xhkUpTq_5MyVcPXBD81mJCwYrcbhdGOWjE,48
|
|
52
|
-
replay/experimental/nn/data/schema_builder.py,sha256=cG1IOXr28QMa39ZuKroC6wyniX-wuyxRgrw1cfhDclE,3313
|
|
53
|
-
replay/experimental/preprocessing/__init__.py,sha256=uMyeyQ_GKqjLhVGwhrEk3NLhhzS0DKi5xGo3VF4WkiA,130
|
|
54
|
-
replay/experimental/preprocessing/data_preparator.py,sha256=SLyk4HWurLmUHuev5L_GmI3oVU-58lCflOExHJ7zCGw,35964
|
|
55
|
-
replay/experimental/preprocessing/padder.py,sha256=ROKnGA0136C9W9Qkky-1V5klcMxvwos5KL4_jMLOgwY,9564
|
|
56
|
-
replay/experimental/preprocessing/sequence_generator.py,sha256=E1_0uZJLv8V_n6YzRlgUWtcrHIdjNwPeBN-BMbz0e-A,9053
|
|
57
|
-
replay/experimental/scenarios/__init__.py,sha256=gWFLCkLyOmOppvbRMK7C3UMlMpcbIgiGVolSH6LPgWA,91
|
|
58
|
-
replay/experimental/scenarios/obp_wrapper/__init__.py,sha256=rsRyfsTnVNp20LkTEugwoBrV9XWbIhR8tOqec_Au6dY,450
|
|
59
|
-
replay/experimental/scenarios/obp_wrapper/obp_optuna_objective.py,sha256=vmLANYB5i1UR3uY7e-T0IBEYwPxOYHtKqhkmUvMUYhU,2548
|
|
60
|
-
replay/experimental/scenarios/obp_wrapper/replay_offline.py,sha256=3NYjmsaQlQrrhSySIAzZmOfzjDepnHXlLWRfUSyCHYg,9634
|
|
61
|
-
replay/experimental/scenarios/obp_wrapper/utils.py,sha256=-ioWTb73NmHWxVxw4BdSolctqeeGIyjKtydwc45nrrk,3271
|
|
62
|
-
replay/experimental/scenarios/two_stages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
-
replay/experimental/scenarios/two_stages/reranker.py,sha256=tJtWhbHRNV4sJZ9RZzqIfylTplKh9QVwTIBhEGGnXq8,4244
|
|
64
|
-
replay/experimental/scenarios/two_stages/two_stages_scenario.py,sha256=frwsST85YGMGEZPf4DZFp3kPKPEcVgaxOCEdtZywpkw,29841
|
|
65
|
-
replay/experimental/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
-
replay/experimental/utils/logger.py,sha256=UwLowaeOG17sDEe32LiZel8MnjSTzeW7J3uLG1iwLuA,639
|
|
67
|
-
replay/experimental/utils/model_handler.py,sha256=Rfj57E1R_XMEEigHNZa9a-rzEsyLWSDsgKfXoRzWWdg,6426
|
|
68
|
-
replay/experimental/utils/session_handler.py,sha256=076TLpTOcnh13BznNTtJW6Zhrqvm9Ee1mlpP5YMD4No,1313
|
|
69
|
-
replay/metrics/__init__.py,sha256=j0PGvUehaPEZMNo9SQwJsnvzrS4bam9eHrRMQFLnMjY,2813
|
|
70
|
-
replay/metrics/base_metric.py,sha256=uleW5vLrdA3iRx72tFyW0cxe6ne_ugQ1XaY_ZTcnAOo,15960
|
|
71
|
-
replay/metrics/categorical_diversity.py,sha256=OYsF-Ng-WrF9CC-sKgQKngrA779NO8MtgRvvAyC8MXM,10781
|
|
72
|
-
replay/metrics/coverage.py,sha256=wE1Y_TgKOzf_9ixeas-vsxANAHeHSGPuGrzKk8DklaY,8843
|
|
73
|
-
replay/metrics/descriptors.py,sha256=BHORyGKfJgPeUjgLO0u2urSTe16UQbb-HHh8soqnwDE,3893
|
|
74
|
-
replay/metrics/experiment.py,sha256=Ab43e-eyoy8RM_OgAcm0toqFNDaWkh5Gbq_XVxbmqB0,8142
|
|
75
|
-
replay/metrics/hitrate.py,sha256=G0_GufGc1RIQ_RntCIvDn0piJIVyT3W35bTN-Un9-Ug,2339
|
|
76
|
-
replay/metrics/map.py,sha256=qUPFkyrvRf7gEyxosBApHOxpAVZJ3Yksqe4vsbzTukE,2597
|
|
77
|
-
replay/metrics/mrr.py,sha256=AkfRdvL21Ri1zE4Cmib2twJaEaeBO5wze87eZ4lkYlc,2188
|
|
78
|
-
replay/metrics/ndcg.py,sha256=wzdFFf9rmG6yH7klK5V9ab1wNdI6CHXezvYasxO9_ZU,3134
|
|
79
|
-
replay/metrics/novelty.py,sha256=4S6PsdOl8lqweBlemWJh2fVqMiN8jfj3cIU-9TxZXLY,5500
|
|
80
|
-
replay/metrics/offline_metrics.py,sha256=LWofpuzvqc92jSnmMWvW-ffTGEgHxAgZO_yuSSVY1gs,20473
|
|
81
|
-
replay/metrics/precision.py,sha256=8hfz9bLZt7wUfyJtJPiIoDEOP_bweZSpCS6Z1Cm9IGE,2281
|
|
82
|
-
replay/metrics/recall.py,sha256=ATN5OIeFKMG7-nqpPCBPLItrUhGRucLCELWnzRyCRoo,2472
|
|
83
|
-
replay/metrics/rocauc.py,sha256=gybFcyIyVDpwoR9K38nOSxlAjIYbFqXUzABuckxqHps,3307
|
|
84
|
-
replay/metrics/surprisal.py,sha256=mcGOQTvlNcGz4vNi-U-qe-CJqlYICKMRny5KtJVMKAc,7538
|
|
85
|
-
replay/metrics/torch_metrics_builder.py,sha256=2gcCcb0A-TVpYcBIYGhXrggyFX-M_T7Q1pQUiMpxEZE,13845
|
|
86
|
-
replay/metrics/unexpectedness.py,sha256=cfDnkpK6nPeawwHDVNQAkUtsW0SvAttI84k4M5ttkyo,6888
|
|
87
|
-
replay/models/__init__.py,sha256=A1xEE3CbCrhCPkh94U_yYs9jzoP8IEyPukKj7DyY7bs,836
|
|
88
|
-
replay/models/als.py,sha256=eGiMok_zu5ZUKXU9i9feCP4RGMqSnlIGHjks6MqKzHw,6227
|
|
89
|
-
replay/models/association_rules.py,sha256=cp4myXvMqro6zLMjJzJMb0DZ5DQFQEZvhqf5OBgBw8Y,14659
|
|
90
|
-
replay/models/base_neighbour_rec.py,sha256=zMORSm4uMQSNj12v0n_6w8fVHgSYjeiqyYE9rrWgSfU,7887
|
|
91
|
-
replay/models/base_rec.py,sha256=W28_8w5QpeNVluSjKI0mKeDljvyac3_-kqDCNidCf1U,66229
|
|
92
|
-
replay/models/cat_pop_rec.py,sha256=tzI1UMlC3kEOrtDZ1UPpCP13tX8CeDJP7PHwQKl9Mmo,11922
|
|
93
|
-
replay/models/cluster.py,sha256=9JcpGnbfgFa4UsyxPAa4WMuJFa3rsuAxiKoy-s_UfyE,4970
|
|
94
|
-
replay/models/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
95
|
-
replay/models/extensions/ann/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
|
-
replay/models/extensions/ann/ann_mixin.py,sha256=30YTIGnRhGJYOnxo2bM6dQFgDq9i5UH4t8Ln8zCW8TM,7288
|
|
97
|
-
replay/models/extensions/ann/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
98
|
-
replay/models/extensions/ann/entities/base_hnsw_param.py,sha256=5GRdcQj4-zhNXfJ7ko2WHGHgRuXCzSHCRcRxljl1V4c,776
|
|
99
|
-
replay/models/extensions/ann/entities/hnswlib_param.py,sha256=j3V4JXM_yfR6s2TjYakIXMg-zS1-MrP6an930DEIWGM,2104
|
|
100
|
-
replay/models/extensions/ann/entities/nmslib_hnsw_param.py,sha256=WeEhRR4jKqgvWK_zDK8fx6kEqc2e_bc0kubvqK3iV8c,2162
|
|
101
|
-
replay/models/extensions/ann/index_builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
102
|
-
replay/models/extensions/ann/index_builders/base_index_builder.py,sha256=Ul25G0FaNLOXUjrDXxZDTg7tLXlv1N6wR8kWjWICtZ0,2110
|
|
103
|
-
replay/models/extensions/ann/index_builders/driver_hnswlib_index_builder.py,sha256=bUoDwelKL9OK4z0IABzDm16t8wQ4QzH3wQ5NP32S_IE,1588
|
|
104
|
-
replay/models/extensions/ann/index_builders/driver_nmslib_index_builder.py,sha256=1NLWyAJGYgp46uUBhUYQyd0stmG6DhLh7U4JEne5TFw,1308
|
|
105
|
-
replay/models/extensions/ann/index_builders/executor_hnswlib_index_builder.py,sha256=_JZfewcLsU3sRR95_FPlgLfn9vez0JXMxer_024UHK4,2449
|
|
106
|
-
replay/models/extensions/ann/index_builders/executor_nmslib_index_builder.py,sha256=_TClG_czFb50dXyUjjXL4HE5j_i4BH011wjzDGba2U8,2591
|
|
107
|
-
replay/models/extensions/ann/index_builders/nmslib_index_builder_mixin.py,sha256=AIkVnobesnTM5lrBSWf9gd0CySwFQ0vH_DjemfLS4Cs,1925
|
|
108
|
-
replay/models/extensions/ann/index_inferers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
|
-
replay/models/extensions/ann/index_inferers/base_inferer.py,sha256=I39aqEc2somfndrCd-KC3XYZnYSrJ2hGpR9y6wO93NA,2524
|
|
110
|
-
replay/models/extensions/ann/index_inferers/hnswlib_filter_index_inferer.py,sha256=JjT4l_XAjzUOsTAE7OS88zAgPd_h_O44oUnn2kVr8E0,2477
|
|
111
|
-
replay/models/extensions/ann/index_inferers/hnswlib_index_inferer.py,sha256=CoY_oMfdcwnh87ceuSpHXu4Czle9xxeMisO8XJUuJLE,1717
|
|
112
|
-
replay/models/extensions/ann/index_inferers/nmslib_filter_index_inferer.py,sha256=tjuqbkztWBU4K6qp5LPFU_GOGJf2f4oXneExtUEVUzw,3128
|
|
113
|
-
replay/models/extensions/ann/index_inferers/nmslib_index_inferer.py,sha256=S5eCBZlTXxEAeX6yeZGC7j56gOcJ7lMNb4Cs_5PEj9E,2203
|
|
114
|
-
replay/models/extensions/ann/index_inferers/utils.py,sha256=6IST2FPSY3nuYu5KqzRpd4FgdaV3GnQRQlxp9LN_yyA,641
|
|
115
|
-
replay/models/extensions/ann/index_stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
|
-
replay/models/extensions/ann/index_stores/base_index_store.py,sha256=u4l2ybAXX92ZMGK7NqqosbKF75QgFqhAMVadd5ePj6Y,910
|
|
117
|
-
replay/models/extensions/ann/index_stores/hdfs_index_store.py,sha256=0zDq9PdDOiD6HvtZlfjTbuJHfeTOWBTQ_HiuqZmoxtA,3090
|
|
118
|
-
replay/models/extensions/ann/index_stores/shared_disk_index_store.py,sha256=thl4T1uYU4Gtk4nBao_qK8CbFBdX1xmXNishxgfCd-I,2030
|
|
119
|
-
replay/models/extensions/ann/index_stores/spark_files_index_store.py,sha256=QP_8mE7EIBbePIe0AB-IWuJLRA5MR3wswCEt8oHzn-0,3617
|
|
120
|
-
replay/models/extensions/ann/index_stores/utils.py,sha256=6r2GP_EFCaCguolW857pb4lRS8rh6_Nv_Edso9_j5no,3756
|
|
121
|
-
replay/models/extensions/ann/utils.py,sha256=qLeT0wHzbzBU5J6SE3xbbT3vYrLrFcEEQNJCtElvP_U,1213
|
|
122
|
-
replay/models/kl_ucb.py,sha256=L6vC2KsTBTTx4ckmGhWybOiLa5Wt54N7cgl7jS2FQRg,6731
|
|
123
|
-
replay/models/knn.py,sha256=ujJRiRJ9Nfs_m7eTvk0fDTYiR95aKnDO4e2Tf2q2AQI,9109
|
|
124
|
-
replay/models/lin_ucb.py,sha256=Je1FfW-bRFSBE45XIXxQvzJr8sZQuMzIkCs-pb_D8po,16922
|
|
125
|
-
replay/models/nn/__init__.py,sha256=AT3o1qXaxUq4_QIGlcGuSs54ZpueOo-SbpZwuGI-6os,41
|
|
126
|
-
replay/models/nn/loss/__init__.py,sha256=s3iO9QTZvLz_ony2b5K0hEmDmitrXQnAe9j6BRxLpR4,53
|
|
127
|
-
replay/models/nn/loss/sce.py,sha256=p6LFtoYSY4j2pQh6Z7i6cEADCmRnvTgnb8EJXseRKKg,5637
|
|
128
|
-
replay/models/nn/optimizer_utils/__init__.py,sha256=8MHln7CW54oACVUFKdZLjAf4bY83GcOMXpmL87gTnhI,178
|
|
129
|
-
replay/models/nn/optimizer_utils/optimizer_factory.py,sha256=EXqS_2ZxT7K_kFzcjgFpNhmzUoSftf_CwZIIHNHZBgU,2842
|
|
130
|
-
replay/models/nn/sequential/__init__.py,sha256=CI2n0cxs_amqJrwBMq6n0Z_uBOu7CGXfagqvE4Jlmjw,128
|
|
131
|
-
replay/models/nn/sequential/bert4rec/__init__.py,sha256=JfZqHOGxcvOkICl5cWmZbZhaKXpkIvua-Wj57VWWEhw,399
|
|
132
|
-
replay/models/nn/sequential/bert4rec/dataset.py,sha256=cJp1fol4FiGSRhyy7RaBh7plMVEFteJ1pCbbGBZyZHI,11014
|
|
133
|
-
replay/models/nn/sequential/bert4rec/lightning.py,sha256=g3LSJiIzTnl9nfCEJKRdP2NhLP25b5AnivfSrOeqceU,26559
|
|
134
|
-
replay/models/nn/sequential/bert4rec/model.py,sha256=WSo0l2TVDqlB3_qOfrDWXS7KNOzHgJ6myPv5vazHTlU,17394
|
|
135
|
-
replay/models/nn/sequential/callbacks/__init__.py,sha256=Q7mSZ_RB6iyD7QZaBL_NJ0uh8cRfgxq7gtPHbkSyhoo,282
|
|
136
|
-
replay/models/nn/sequential/callbacks/prediction_callbacks.py,sha256=iCPO1G09X-22CTrMVx5HYVxrzT1xmtb-6qGczkbYQ58,9317
|
|
137
|
-
replay/models/nn/sequential/callbacks/validation_callback.py,sha256=6TNl3NN9oahK1J7DT44461xqBuUCblCsLzUi2svlhF4,5825
|
|
138
|
-
replay/models/nn/sequential/compiled/__init__.py,sha256=1UrFY_w-rTuQhMokVra5Bl8YYfSVGMuUIycMMeJYGfM,168
|
|
139
|
-
replay/models/nn/sequential/compiled/base_compiled_model.py,sha256=rPQYztpcskHo-jaGlKJukJ7KfI6XvRUnBJuwj5ahxFU,10235
|
|
140
|
-
replay/models/nn/sequential/compiled/bert4rec_compiled.py,sha256=PArIF1l-xVUNhJ55MUGF6srpFdhmZ1Hl33hKwdhefd0,6258
|
|
141
|
-
replay/models/nn/sequential/compiled/sasrec_compiled.py,sha256=Xe3znMMtBVWvZViPwhm94Cd17FKHxsgt9MWLuzXvs_4,5793
|
|
142
|
-
replay/models/nn/sequential/postprocessors/__init__.py,sha256=89LGzkNHukcuC2-rfpiz7vmv1zyk6MNY-8zaXrvtn0M,164
|
|
143
|
-
replay/models/nn/sequential/postprocessors/_base.py,sha256=Z-HuXM4WBQtrq9IeCL00jtdb_UopksInxVVK8lxD_hA,1136
|
|
144
|
-
replay/models/nn/sequential/postprocessors/postprocessors.py,sha256=t96EkNVaG560m5BA5FejJKudpUMcfZWc4KrOD12GME4,7820
|
|
145
|
-
replay/models/nn/sequential/sasrec/__init__.py,sha256=c6130lRpPkcbuGgkM7slagBIgH7Uk5zUtSzFDEwAsik,250
|
|
146
|
-
replay/models/nn/sequential/sasrec/dataset.py,sha256=dbuhoU5mCf2MS01QpTd7ud5dFEqQE24jurwgfC3t3aE,7782
|
|
147
|
-
replay/models/nn/sequential/sasrec/lightning.py,sha256=1FeadX68S-61Zb4OHP4u8CfMdAKAL49P66gjsChJSTY,25073
|
|
148
|
-
replay/models/nn/sequential/sasrec/model.py,sha256=CWlJec2fbz42vnkUQ5AMux31F-JQRw7NiYXnftU35jA,27669
|
|
149
|
-
replay/models/pop_rec.py,sha256=Ju9y2rU2vW_jFU9-W15fbbr5_ZzYGihSjSxsqKsAf0Q,4964
|
|
150
|
-
replay/models/query_pop_rec.py,sha256=UNsHtf3eQpJom73ZmEO5us4guI4SnCLJYTfuUpRgqes,4086
|
|
151
|
-
replay/models/random_rec.py,sha256=9SC012_X3sNzrAjDG1CPGhjisZb6gnv4VCW7yIMSNpk,8066
|
|
152
|
-
replay/models/slim.py,sha256=LHQl91PAsiCA8wLYzyapW1DVmqzGaCwtydBvZKC5yo0,4723
|
|
153
|
-
replay/models/thompson_sampling.py,sha256=gcjlVl1mPiEVt70y8frA762O-eCZzd3SVg1lnDRCEHk,1939
|
|
154
|
-
replay/models/ucb.py,sha256=X98ulD8L3gWR3VA7rbQkXFqQyzWc-Nt12lp_gbLTfLQ,6964
|
|
155
|
-
replay/models/wilson.py,sha256=o7aUWjq3648dAfgGBoWD5Gu-HzdyobPMaH2lzCLijiA,4558
|
|
156
|
-
replay/models/word2vec.py,sha256=MgoRIS5vqW9cH1HKAGa2xsLLnTH6XC1EXk4Dzvn5lXA,9171
|
|
157
|
-
replay/optimization/__init__.py,sha256=az6U10rF7X6rPRUUPwLyiM1WFNJ_6kl0imA5xLVWFLs,120
|
|
158
|
-
replay/optimization/optuna_objective.py,sha256=OUYlC3wQj4GmrSbE_z5IPPS6OEEPUoeRCWFJnIR1Na8,7654
|
|
159
|
-
replay/preprocessing/__init__.py,sha256=c6wFPAc6lATyp0lE-ZDjHMsXyEMPKX7Usuqylv6H5XQ,597
|
|
160
|
-
replay/preprocessing/converter.py,sha256=JQ-4u5x0eXtswl1iH-bZITBXQov1nebnZ6XcvpD8Twk,4417
|
|
161
|
-
replay/preprocessing/discretizer.py,sha256=Z3xnJpAQeXOU49PVpRSVXXbDemlAHEWWwFSNX_VirHA,27047
|
|
162
|
-
replay/preprocessing/filters.py,sha256=o-XWUTv4NsciGLwOoYKjVrGrBuOgxTk0c0aY1_tuzcw,45852
|
|
163
|
-
replay/preprocessing/history_based_fp.py,sha256=Wb2DXHawE2dYghm1ARr05_5opd_TLfthZ7h5e0zbDjY,18726
|
|
164
|
-
replay/preprocessing/label_encoder.py,sha256=uOt7i3tNc3SMjr65tZpvFAJOFD_xiy5rHhd4llwBw2g,41392
|
|
165
|
-
replay/preprocessing/sessionizer.py,sha256=G6i0K3FwqtweRxvcSYraJ-tBWAT2HnV-bWHHlIZJF-s,12217
|
|
166
|
-
replay/scenarios/__init__.py,sha256=XXAKEQPTLlve-0O6NPwFgahFrb4oGcIq3HaYaaGxG2E,94
|
|
167
|
-
replay/scenarios/fallback.py,sha256=EeBmIR-5igzKR2m55bQRFyhxTkpJez6ZkCW449n8hWs,7130
|
|
168
|
-
replay/splitters/__init__.py,sha256=DnqVMelrzLwR8fGQgcWN_8FipGs8T4XGSPOMW-L_x2g,454
|
|
169
|
-
replay/splitters/base_splitter.py,sha256=hj9_GYDWllzv3XnxN6WHu1JKRRVjXo77vZEOLbF9v-s,7761
|
|
170
|
-
replay/splitters/cold_user_random_splitter.py,sha256=ruiMtgpzpsJqZ7oE0oLH-exqcFhRXAUc-y6cE1GqjoE,4155
|
|
171
|
-
replay/splitters/k_folds.py,sha256=WH02_DP18A2ae893ysonmfLPB56_i1ETllTAwaCYekg,6218
|
|
172
|
-
replay/splitters/last_n_splitter.py,sha256=ITq8yzd7PrbAi3yp5XJlBehq0E0boiPyTEn72sXZEOA,15347
|
|
173
|
-
replay/splitters/new_users_splitter.py,sha256=bv_QCPkL7KFxJIovAXQbP3Rlty3My48YNTqrj-2ucFQ,9167
|
|
174
|
-
replay/splitters/random_splitter.py,sha256=mbOcxeF0B9WQ9OSxK8CHkPtO8UzKCZJt3rRyFhn-hyQ,2996
|
|
175
|
-
replay/splitters/ratio_splitter.py,sha256=8zvuCn16Icc4ntQPKXJ5ArAWuJzCZ9NHZtgWctKyBVY,17519
|
|
176
|
-
replay/splitters/time_splitter.py,sha256=tsoK3Qg_pcYHDxBlv2xC8ohAikoIqac3fRGBvCb-QRo,9026
|
|
177
|
-
replay/splitters/two_stage_splitter.py,sha256=U90l1wfJnMAAW1j4YpJSd8zWvWB-LDUKFCifnanXraU,17830
|
|
178
|
-
replay/utils/__init__.py,sha256=NglSepjA-vlwDH2uiIXRQ8EnJLuEQkiOufYlm9yjNiU,277
|
|
179
|
-
replay/utils/common.py,sha256=HI8f42W4pVYjqkjDNv4yjErjXiLWs_exWNcTPPwMyqA,5361
|
|
180
|
-
replay/utils/dataframe_bucketizer.py,sha256=LipmBBQkdkLGroZpbP9i7qvTombLdMxo2dUUys1m5OY,3748
|
|
181
|
-
replay/utils/distributions.py,sha256=UuhaC9HI6HnUXW97fEd-TsyDk4JT8t7k1T_6l5FpOMs,1203
|
|
182
|
-
replay/utils/model_handler.py,sha256=V-mHDh8_UexjVSsMBBRA9yrjS_5MPHwYOwv_UrI-Zfs,6466
|
|
183
|
-
replay/utils/session_handler.py,sha256=BACedTDu-K1ANCB88M8JEBgJ318Hxv-yxaPUNNJKZ9U,5152
|
|
184
|
-
replay/utils/spark_utils.py,sha256=lxzaQGxp3PZdcW-mrj1402x0U8AUQkKimZpWlwhKcJQ,27405
|
|
185
|
-
replay/utils/time.py,sha256=J8asoQBytPcNw-BLGADYIsKeWhIoN1H5hKiX9t2AMqo,9376
|
|
186
|
-
replay/utils/types.py,sha256=RHGkY71JkGUAMCWbHNgB11Z1F64Lqj0xxRr4Z07qxsY,814
|
|
187
|
-
replay_rec-0.19.0rc0.dist-info/LICENSE,sha256=rPmcA7UrHxBChEAAlJyE24qUWKKl9yLQXxFsKeg_LX4,11344
|
|
188
|
-
replay_rec-0.19.0rc0.dist-info/METADATA,sha256=Kic87qPbl1bL_CLFp5EzyKDvE46oqOFS2y1nHZFDnUw,13444
|
|
189
|
-
replay_rec-0.19.0rc0.dist-info/NOTICE,sha256=k0bo4KHiHLRax5K3XKTTrf2Fi8V91mJ-R3FMdh6Reg0,2002
|
|
190
|
-
replay_rec-0.19.0rc0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
191
|
-
replay_rec-0.19.0rc0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|