Cornac is python recommender system library for easy, effective and efficient experiments. Cornac is simple and handy. It is designed from the ground-up to faithfully reflect the standard steps taken by researchers to implement and evaluate personalized recommendation models.
Website | Documentation | Preferred.AI
Currently, we are supporting Python 3 (version 3.6 is recommended). There are several ways to install Cornac:
- From PyPI (you may need a C++ compiler):
pip3 install cornac
- From Anaconda:
conda install cornac -c qttruong -c pytorch
- From the GitHub source (for latest updates):
pip3 install cython
git clone https://github.com/PreferredAI/cornac.git
cd cornac
python3 setup.py install
Note:
Some installed dependencies are CPU versions. If you want to utilize your GPU, you might consider:
- TensorFlow installation instructions.
- PyTorch installation instructions.
- cuDNN (for Nvidia GPUs).
Flow of an Experiment in Cornac
This example will show you how to run your very first experiment.
- Load the MovieLens 100K dataset (will be automatically downloaded if not cached).
from cornac.datasets import MovieLens100K
ml_100k = MovieLens100K.load_data()
- Instantiate an evaluation method. Here we split the data based on ratio.
from cornac.eval_methods import RatioSplit
ratio_split = RatioSplit(data=ml_100k, test_size=0.2, rating_threshold=4.0, exclude_unknowns=False)
- Instantiate models that we want to evaluate. Here we use
Probabilistic Matrix Factorization (PMF)
as an example.
import cornac
pmf = cornac.models.PMF(k=10, max_iter=100, learning_rate=0.001, lamda=0.001)
- Instantiate evaluation metrics.
mae = cornac.metrics.MAE()
rmse = cornac.metrics.RMSE()
rec_20 = cornac.metrics.Recall(k=20)
pre_20 = cornac.metrics.Precision(k=20)
- Instantiate and then run an experiment.
exp = cornac.Experiment(eval_method=ratio_split,
models=[pmf],
metrics=[mae, rmse, rec_20, pre_20],
user_based=True)
exp.run()
Output:
MAE RMSE Recall@20 Precision@20
PMF 0.760277 0.919413 0.081803 0.0462
For more details, please take a look at our examples.