Skip to main content

Versatile end-to-end recommender system.

Project description

LibRecommender

Build CI Codecov pypi Downloads Codacy Badge Code style: black Ruff Documentation Status python versions License

Overview

LibRecommender is an easy-to-use recommender system focused on end-to-end recommendation process. It contains a training(libreco) and serving(libserving) module to let users quickly train and deploy different kinds of recommendation models.

The main features are:

  • Implements a number of popular recommendation algorithms such as FM, DIN, LightGCN etc. See full algorithm list.
  • A hybrid recommender system, which allows user to use either collaborative-filtering or content-based features. New features can be added on the fly.
  • Low memory usage, automatically converts categorical and multi-value categorical features to sparse representation.
  • Supports training for both explicit and implicit datasets, as well as negative sampling on implicit data.
  • Provides end-to-end workflow, i.e. data handling / preprocessing -> model training -> evaluate -> save/load -> serving.
  • Supports cold-start prediction and recommendation.
  • Supports dynamic feature and sequence recommendation.
  • Provides unified and friendly API for all algorithms.
  • Easy to retrain model with new users/items from new data.

Usage

pure collaborative-filtering example :

import numpy as np
import pandas as pd
from libreco.data import random_split, DatasetPure
from libreco.algorithms import LightGCN  # pure data, algorithm LightGCN
from libreco.evaluation import evaluate

data = pd.read_csv("examples/sample_data/sample_movielens_rating.dat", sep="::",
                   names=["user", "item", "label", "time"])

# split whole data into three folds for training, evaluating and testing
train_data, eval_data, test_data = random_split(data, multi_ratios=[0.8, 0.1, 0.1])

train_data, data_info = DatasetPure.build_trainset(train_data)
eval_data = DatasetPure.build_evalset(eval_data)
test_data = DatasetPure.build_testset(test_data)
print(data_info)  # n_users: 5894, n_items: 3253, data sparsity: 0.4172 %

lightgcn = LightGCN(
    task="ranking",
    data_info=data_info,
    loss_type="bpr",
    embed_size=16,
    n_epochs=3,
    lr=1e-3,
    batch_size=2048,
    num_neg=1,
    device="cuda",
)
# monitor metrics on eval data during training
lightgcn.fit(
    train_data,
    neg_sampling=True,
    verbose=2,
    eval_data=eval_data,
    metrics=["loss", "roc_auc", "precision", "recall", "ndcg"],
)

# do final evaluation on test data
evaluate(
    model=lightgcn,
    data=test_data,
    neg_sampling=True,
    metrics=["loss", "roc_auc", "precision", "recall", "ndcg"],
)

# predict preference of user 2211 to item 110
lightgcn.predict(user=2211, item=110)
# recommend 7 items for user 2211
lightgcn.recommend_user(user=2211, n_rec=7)

# cold-start prediction
lightgcn.predict(user="ccc", item="not item", cold_start="average")
# cold-start recommendation
lightgcn.recommend_user(user="are we good?", n_rec=7, cold_start="popular")

include features example :

import numpy as np
import pandas as pd
from libreco.data import split_by_ratio_chrono, DatasetFeat
from libreco.algorithms import YouTubeRanking  # feat data, algorithm YouTubeRanking

data = pd.read_csv("examples/sample_data/sample_movielens_merged.csv", sep=",", header=0)
# split into train and test data based on time
train_data, test_data = split_by_ratio_chrono(data, test_size=0.2)

# specify complete columns information
sparse_col = ["sex", "occupation", "genre1", "genre2", "genre3"]
dense_col = ["age"]
user_col = ["sex", "age", "occupation"]
item_col = ["genre1", "genre2", "genre3"]

train_data, data_info = DatasetFeat.build_trainset(
    train_data, user_col, item_col, sparse_col, dense_col
)
test_data = DatasetFeat.build_testset(test_data)
print(data_info)  # n_users: 5962, n_items: 3226, data sparsity: 0.4185 %

ytb_ranking = YouTubeRanking(
    task="ranking",
    data_info=data_info,
    embed_size=16,
    n_epochs=3,
    lr=1e-4,
    batch_size=512,
    use_bn=True,
    hidden_units=(128, 64, 32),
)
ytb_ranking.fit(
    train_data,
    neg_sampling=True,
    verbose=2,
    shuffle=True,
    eval_data=test_data,
    metrics=["loss", "roc_auc", "precision", "recall", "map", "ndcg"],
)

# predict preference of user 2211 to item 110
ytb_ranking.predict(user=2211, item=110)
# recommend 7 items for user 2211
ytb_ranking.recommend_user(user=2211, n_rec=7)

# cold-start prediction
ytb_ranking.predict(user="ccc", item="not item", cold_start="average")
# cold-start recommendation
ytb_ranking.recommend_user(user="are we good?", n_rec=7, cold_start="popular")

Data Format

JUST normal data format, each line represents a sample. One thing is important, the model assumes that user, item, and label column index are 0, 1, and 2, respectively. You may wish to change the column order if that's not the case. Take for Example, the movielens-1m dataset:

1::1193::5::978300760
1::661::3::978302109
1::914::3::978301968
1::3408::4::978300275

Besides, if you want to use some other meta features (e.g., age, sex, category etc.), you need to tell the model which columns are [sparse_col, dense_col, user_col, item_col], which means all features must be in a same table. See above YouTubeRanking for example.

Also note that your data should not contain missing values.

Documentation

The tutorials and API documentation are hosted on librecommender.readthedocs.io.

The example scripts are under examples/ folder.

Installation & Dependencies

From pypi :  

$ pip install -U LibRecommender

Build from source:

$ git clone https://github.com/massquantity/LibRecommender.git
$ cd LibRecommender
$ pip install .

Basic Dependencies for libreco:

  • Python >= 3.6
  • TensorFlow >= 1.15, < 2.16
  • PyTorch >= 1.10
  • Numpy >= 1.19.5
  • Pandas >= 1.0.0
  • Scipy >= 1.2.1, < 1.13.0
  • scikit-learn >= 0.20.0
  • gensim >= 4.0.0
  • tqdm
  • nmslib (optional, used in approximate similarity searching. See Embedding)
  • DGL (optional, used in GraphSage and PinSage. See Implementation Details)
  • Cython >= 0.29.0, < 3 (optional, for building from source)

If you are using Python 3.6, you also need to install dataclasses, which was first introduced in Python 3.7.

LibRecommender has been tested under TensorFlow 1.15, 2.6, 2.10 and 2.12. If you encounter any problem during running, feel free to open an issue.

Tensorflow 2.16 starts using Keras 3.0, so tf1 syntax is no longer supported. Now the supported version is 1.15 - 2.15.

Known issue:

  • Sometimes one may encounter errors like ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject. In this case try upgrading numpy, and version 1.22.0 or higher is probably a safe option.
  • When saving a TensorFlow model for serving, you might encounter the error message: Fatal Python error: Segmentation fault (core dumped). This issue is most likely related to the protobuf library, so you should follow the official recommended version based on your local tensorflow version. In general, it's advisable to use protobuf < 4.24.0.

The table below shows some compatible version combinations:

Python Numpy TensorFlow OS
3.6 1.19.5 1.15, 2.5 linux, windows, macos
3.7 1.20.3, 1.21.6 1.15, 2.6, 2.10 linux, windows, macos
3.8 1.22.4, 1.23.4 2.6, 2.10, 2.12 linux, windows, macos
3.9 1.22.4, 1.23.4 2.6, 2.10, 2.12 linux, windows, macos
3.10 1.22.4, 1.23.4, 1.24.2 2.10, 2.12 linux, windows, macos
3.11 1.23.4, 1.24.2 2.12 linux, windows, macos

Optional Dependencies for libserving:

Docker

One can also use the library in a docker container without installing dependencies, see Docker.

References

Algorithm Category1 Backend Sequence2 Graph3 Embedding4 Paper
userCF / itemCF pure Cython, Rust Item-Based Collaborative Filtering
SVD pure TensorFlow1 :heavy_check_mark: Matrix Factorization Techniques
SVD++ pure TensorFlow1 :heavy_check_mark: Factorization Meets the Neighborhood
ALS pure Cython :heavy_check_mark: 1. Matrix Completion via Alternating Least Square(ALS)
2. Collaborative Filtering for Implicit Feedback Datasets
3. Conjugate Gradient for Implicit Feedback
NCF pure TensorFlow1 Neural Collaborative Filtering
BPR pure Cython, TensorFlow1 :heavy_check_mark: Bayesian Personalized Ranking
Wide & Deep feat TensorFlow1 Wide & Deep Learning for Recommender Systems
FM feat TensorFlow1 Factorization Machines
DeepFM feat TensorFlow1 DeepFM
YouTubeRetrieval feat TensorFlow1 :heavy_check_mark: :heavy_check_mark: Deep Neural Networks for YouTube Recommendations
YouTubeRanking feat TensorFlow1 :heavy_check_mark: Deep Neural Networks for YouTube Recommendations
AutoInt feat TensorFlow1 AutoInt
DIN feat TensorFlow1 :heavy_check_mark: Deep Interest Network
Item2Vec pure / :heavy_check_mark: :heavy_check_mark: Item2Vec
RNN4Rec / GRU4Rec pure TensorFlow1 :heavy_check_mark: :heavy_check_mark: Session-based Recommendations with Recurrent Neural Networks
Caser pure TensorFlow1 :heavy_check_mark: :heavy_check_mark: Personalized Top-N Sequential Recommendation via Convolutional
WaveNet pure TensorFlow1 :heavy_check_mark: :heavy_check_mark: WaveNet: A Generative Model for Raw Audio
DeepWalk pure / :heavy_check_mark: :heavy_check_mark: DeepWalk
NGCF pure PyTorch :heavy_check_mark: :heavy_check_mark: Neural Graph Collaborative Filtering
LightGCN pure PyTorch :heavy_check_mark: :heavy_check_mark: LightGCN
GraphSage feat DGL, PyTorch :heavy_check_mark: :heavy_check_mark: Inductive Representation Learning on Large Graphs
PinSage feat DGL, PyTorch :heavy_check_mark: :heavy_check_mark: Graph Convolutional Neural Networks for Web-Scale
TwoTower feat TensorFlow1 :heavy_check_mark: 1. Sampling-Bias-Corrected Neural Modeling for Large Corpus Item
2. Self-supervised Learning for Large-scale Item
Transformer feat TensorFlow1 :heavy_check_mark: 1. BST
2. Transformers4Rec
3. RMSNorm
SIM feat TensorFlow1 :heavy_check_mark: SIM
Swing pure Rust Swing

[1] Category: pure means collaborative-filtering algorithms which only use behavior data, feat means other side-features can be included.

[2] Sequence: Algorithms that leverage user behavior sequence.

[3] Graph: Algorithms that leverage graph information, including Graph Embedding (GE) and Graph Neural Network (GNN) .

[4] Embedding: Algorithms that can generate final user and item embeddings.

Powered by

JetBrains Logo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

librecommender-1.5.2.tar.gz (525.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

librecommender-1.5.2-cp311-cp311-win_amd64.whl (838.0 kB view details)

Uploaded CPython 3.11Windows x86-64

librecommender-1.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

librecommender-1.5.2-cp311-cp311-macosx_11_0_x86_64.whl (863.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

librecommender-1.5.2-cp311-cp311-macosx_11_0_arm64.whl (839.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

librecommender-1.5.2-cp310-cp310-win_amd64.whl (840.2 kB view details)

Uploaded CPython 3.10Windows x86-64

librecommender-1.5.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

librecommender-1.5.2-cp310-cp310-macosx_11_0_x86_64.whl (865.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

librecommender-1.5.2-cp310-cp310-macosx_11_0_arm64.whl (841.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

librecommender-1.5.2-cp39-cp39-win_amd64.whl (843.7 kB view details)

Uploaded CPython 3.9Windows x86-64

librecommender-1.5.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

librecommender-1.5.2-cp39-cp39-macosx_11_0_x86_64.whl (866.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

librecommender-1.5.2-cp39-cp39-macosx_11_0_arm64.whl (843.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

librecommender-1.5.2-cp38-cp38-win_amd64.whl (842.5 kB view details)

Uploaded CPython 3.8Windows x86-64

librecommender-1.5.2-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

librecommender-1.5.2-cp38-cp38-macosx_11_0_x86_64.whl (860.6 kB view details)

Uploaded CPython 3.8macOS 11.0+ x86-64

librecommender-1.5.2-cp38-cp38-macosx_11_0_arm64.whl (838.4 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

LibRecommender-1.5.2-cp37-cp37m-win_amd64.whl (840.1 kB view details)

Uploaded CPython 3.7mWindows x86-64

LibRecommender-1.5.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

LibRecommender-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl (854.8 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

LibRecommender-1.5.2-cp36-cp36m-win_amd64.whl (839.0 kB view details)

Uploaded CPython 3.6mWindows x86-64

LibRecommender-1.5.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

LibRecommender-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl (852.5 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file librecommender-1.5.2.tar.gz.

File metadata

  • Download URL: librecommender-1.5.2.tar.gz
  • Upload date:
  • Size: 525.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.20

File hashes

Hashes for librecommender-1.5.2.tar.gz
Algorithm Hash digest
SHA256 15cf6f30cd7202816f938da076de8df38267fdbdb039da61a2743b053873d74d
MD5 880eecb0ae3248eacb6c05a4c6f3b6ef
BLAKE2b-256 020588abebf878322a0929444e09065e4d36cd1b9ad5da9a8746fb0d2921279c

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eb5376605e443d2a48eb600eb1e4c9888b30f3693675e5017ea4f33cd123604b
MD5 9836e115a2e1026000ba0159a73bfbdf
BLAKE2b-256 1d8560c07ae36bcca4aab5be39612faf7b13bf699fe544cd5a4ae7f50470bae1

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6aa4b341f83c10ea0adc2b0ba08eaf6c9af90308966cb7f334efbe182fa2e707
MD5 b2df033c211a9e74898f5e6c5b0871d4
BLAKE2b-256 4a9cd47605386ea0da2a74b768801bff7ab1a45404669395d77f16e1b6d55e08

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 99d820cd34d1d8a08bea6e3196e0f313ef00f0b1e82678996ecc78d94d591ec2
MD5 1fa25ea65628be3a13fbbce286b7ea37
BLAKE2b-256 6da51f33111f78ec0d1fe6919adcf7b238f42e6c4eb506a7a723b9a82163340d

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae573a32cc0830faef527435d3f299808a400e288fc4fc58e06fd8b2c8359d24
MD5 87a4542e09d61840fbbe672c95a769de
BLAKE2b-256 0e864414c835ffaa6aa9ce42ba89e3ef675ca5a53be65f024ffb13c0d7e1ad18

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8ac6c518be4715b6d7eb1771c8fdcf54264a0e7073799355db63e1b85c173cad
MD5 57dad26af4b67e8d64c68ab14c625c1a
BLAKE2b-256 4d116f83bd4b819d0195727e6d7d87b39e3df11901c7953de218767092243516

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 391ebe16a5e103dab815b7f363c69275f57299bae6da8b1bf09f64d714b1bc22
MD5 839346babe1948ec36a3af5b358917da
BLAKE2b-256 6b7a32842bb1359c445cde02bd0510526f28d403183d51e245904e167c29e3e6

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 848f98e7710757abb071e53b5828635fafb1b6cc592a3c13d588ac98a43bb2bf
MD5 33449dc1bda1648509e647f08128a5ca
BLAKE2b-256 d57d79dc192b3154c49519783e61daf5c570d3d048dfb7284f8495e6312a331c

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da88aa3d81a9fd5d8d819edb34ef2486f0a11ad7529f56a0947c98c82316f146
MD5 d8aad2dd6203fed7ef70c0d46df152d7
BLAKE2b-256 da0ba1a48dfac53d673914b38136dbbc613e74d511ef274d7ecc48c64ce2ae29

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 26fa23b108f19bfcfeada72303abccc1408feb6283ff69d646d2512225cde532
MD5 e77811e88107ef503cb94ece6b7da8dd
BLAKE2b-256 bbaecf6ec4217c63da8059957d03896e4fe0c4eebb2969c2f5fc7beac897550c

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 df160750a52f93a65938796aa92a130352179172974727b71221ea5abba6228e
MD5 99a459f96d51b8383589e8f24f1ee693
BLAKE2b-256 bf7edd5493a5613c576f0eab226deb422cd2524441a93929a8ea6e6899a9c5af

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 84979a8eaa192fc055cd1f869c2cd27a5d549c22cba68bf38807d6bd7389d186
MD5 75409fe3450300c088f5b78cb8023dbc
BLAKE2b-256 fc6b170b57b16ab455a19ad4b886a7e49407c3b40e759be8db180dba7e20358c

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ced522afc00420d077271279f8ae7037999d39ca084e8d0d37dc8bf984abca4
MD5 29c8edd9ddb4310e42ab0b2c9fb16a1d
BLAKE2b-256 528e57e9607fe0bf2c9b6ddaa4c0c12877f22ac53a079820435640175b80826c

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5ebd7d9f86bac8e3044a7e9b7f9e6399e9f6781075a624b280ddfc502f564f84
MD5 905be39600aa113de53193a3886ee0bb
BLAKE2b-256 3c93b6cbdc87d61419fa4fc27eed3c5046004c342b5976405e6352900fa99d32

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 1c6a8f53eaed11593b9e91bd832ff14d2870e59fc0567346ea406885064b3993
MD5 f2e4318089d0df21390622249ab1d73e
BLAKE2b-256 7981723ec5cf100c45cc8f6744cf22f198abe592256713fd110397bfe587d019

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp38-cp38-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 f33f61da4d95399830883354fce7c5325aad22ddd823781c9f0ac8240813d661
MD5 6b347cc3f90ca7c4017dc84e06ace3bf
BLAKE2b-256 9d948841bcd7c8b844c375377d1239ea8f3f040781814d1bbad38675577135c4

See more details on using hashes here.

File details

Details for the file librecommender-1.5.2-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for librecommender-1.5.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc1493520252ca82b6d47011230bf90a32264576d85829208b97ba13fa0b517e
MD5 65f830ed07c4a2a0db362fabb311d019
BLAKE2b-256 cc4e99b1b5fd77338fd544a36e0edf82ca84d14310ceda8e6029ef9dfce3195c

See more details on using hashes here.

File details

Details for the file LibRecommender-1.5.2-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for LibRecommender-1.5.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 9ab9ac716ef0ef1db94e5f21e04dae15a1a0eceef0ddf0d3388a8078d50edafa
MD5 6cd874cd0a4f056b0c667f006d323fa3
BLAKE2b-256 a716aad7daa18d7fb38e63a5994ad41af1352abaa9aa9d7682c37ecd2652cb67

See more details on using hashes here.

File details

Details for the file LibRecommender-1.5.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for LibRecommender-1.5.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6006f533ec27feb8d57a7bfa9fafcd41f0eceb1682e743c2f2f4fa45666a9b3d
MD5 614e9ecdc2f0775cd76c6a5cf3e2823d
BLAKE2b-256 284f3047fe10f587f85ad7beeeb5f6052650e890fef7c95f6c6605185a36bb97

See more details on using hashes here.

File details

Details for the file LibRecommender-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for LibRecommender-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8c1c94ef02cae354bbf4822adc48f47b3ca72b42f713da3f7d580e1be10cde56
MD5 44ad93e73fde01656b1e729a408866fa
BLAKE2b-256 981a0fe93b7c9df14bdb91e3a1e5d42731df5efc8c1033674e246cdc1cc25b96

See more details on using hashes here.

File details

Details for the file LibRecommender-1.5.2-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for LibRecommender-1.5.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 e0ac1da0f07be5c045e11607993854029b3a4da3c8cfe5d22970b0474b44197a
MD5 7c43594585e145ad4aeb62a934efdf85
BLAKE2b-256 ec936d4af27e21570d4061ba4931ca2df8e7a7ec81e6c2d4b9b01520406af42d

See more details on using hashes here.

File details

Details for the file LibRecommender-1.5.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for LibRecommender-1.5.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 43acf62a5f3afa37fbf3a69ec853165aa80c29e953f9563a1a9aafc7dffd781e
MD5 f4991220303776a6b06b9f17d80c50fe
BLAKE2b-256 a2b7cfd6941048c9f7d4177434b1568b08b3c51e0ac27890eace8599cf190e08

See more details on using hashes here.

File details

Details for the file LibRecommender-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for LibRecommender-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cde0e38c96454b5c260c488669c12d7a8915d678f0d5511833ad193a075a9373
MD5 1698d898da41d7017366069e6bd99bed
BLAKE2b-256 5f1d46b14c564a95517fda6eb57e92a44237be86435520f5b9d78a812576a033

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page