GithubHelp home page GithubHelp logo

sisinflab / elliot Goto Github PK

View Code? Open in Web Editor NEW
270.0 13.0 50.0 80.24 MB

Comprehensive and Rigorous Framework for Reproducible Recommender Systems Evaluation

License: Apache License 2.0

Python 100.00%
recommender-system machine-learning collaborative-filtering content-based-recommendation bprmf matrix-factorization vae svdpp funksvd slim

elliot's People

Contributors

benjamin-loison avatar danielemalitesta avatar deklanw avatar merrafelice avatar nikost avatar sciueferrara avatar scne avatar tommasodinoia avatar vitowalteranelli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elliot's Issues

Do NGCF and LightGCN predict rating?

I am using this framework in my research, specifically to compare with other frameworks. It's unclear to me whether LightGCN and NGCF can be used to do explicit rating prediction, or only implicit. When I use a dataset with explicit ratings, there is a predicted score in the resulting recommendations, but it looks numerically meaningless.

Question

Hi,

Before going more in detail into the implementation of Elliot, I would like to know whether Elliot will be the right package for my experiments.

Basically, I am interested in context-aware recommender system (CARS) algorithms i.e., FM, FFM.
When looking here I found some CARS algorithms but I don't see in the parameter how to add the side information (either user auxilliary information or item auxilliary information). (1) Would that mean that I only need to mention the extra side information in the YAML file only? Or does it mean that there are only specific algorithms implemented in Elliot that do take into account side information? If so could you list them please?

(2) Do you have somewhere an example of code running CARS algorithm and is it possible to reproduce your results?

Thank you in advance.

Looking forward to hearing back from you.
Best,
-- Manel.

[Feature Request] Early stopping?

Not seeing an option for early stopping based on validation metric performance. Running neural models with fixed numbers of epochs is either time-consuming (treating epoch number as a hyperparameter) or risks under/overfitting (fixing the epochs).

Setup doesn't work with latest pip

    Running command python setup.py egg_info
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/deklan/code/forks/elliot/setup.py", line 30, in <module>
        install_reqs = parse_requirements('requirements.txt')
    TypeError: parse_requirements() missing 1 required positional argument: 'session'

Pip version

pip 21.0.1

[PyTorch]+[More Models]

Hi there,

These days, I use your comprehensive and rigorous recommendation framework. It is awesome and useful! Thanks for your excellent open-source work!

Elliot is a comprehensive recommendation framework that analyzes the recommendation problem from the researcher's perspective. And I sincerely want to share my own advice to improve it better.

  1. PyTorch is more friendly for academic research. If Elliot can be based on PyTorch, it will be cooler.

  2. Adding more Artificial Neural Network-based methods, e.g. GRU4Rec, SASRec, Caser, BERT4Rec, it will facilitate us to compare these baselines to propose new models.

Best regards,
John

Filenaming problem in Windows 10

Hello,

Following the instructions provided in the documentation, I have succesfully installed the Elliot library using Conda v.4.8.2. and Python 3.7.10 on a Windows 10 system.

However, I have found some problems at the moment of executing some experiments on the framework. The library seems to work finely when I use an algorithm without hyperparameters (as it happens, for instance, with the MostPop algorithm). However, due to how the weight files are named, it does not allow me to execute algorithms with hyperparameters, such as UserKNN or ItemKNN.

At the moment, the project tries to create a directory or a file (I think is the first one), named algorithm_hyper1:val1_hyper2:val2_..._hyperN:valN where hyperX is the name of the X-th hyperparameter, valX is the value of such hyperparameter and N is the final number of hyperparameters.

However, Windows does not allow colons in the names of files/folders, so it stops, and returns an OSError as the one I show below:
imagen

Can anything be done to solve this?

To reproduce
I share the configuration file that I used:
imagen

Thanks in advance.

Simple metrics are producing different values for the same recommendations

Describe the bug
Simple metrics ItemCoverage, UserCoverage, NumRetrieved are producing different values for the same recs/ folder between the procedure of calculating the model and evaluating it and the procedure of loading the model and evaluating it.

To Reproduce
Steps to reproduce the behavior:

  1. Run a model e.g. itemKNN which will produce the recommendations in the results/recs/ dir
  2. Keep evaluation of the running model
  3. Load the results/recs/ dir as a RecommendationFolder
  4. Run evaluation only
  5. Compare the two evaluations

In both cases, the input dataset has a strategy: fixed. The train.tsv and test.tsv files have previously been produced from a random 0.2 splitting procedure and used as they are for both cases.

System details (please complete the following information):

  • OS: Debian
  • Python Version 3.8
  • Version of the Libraries installed with conda elliot_env as described in doc

Evaluration Module: Diversity - Gini Index

Describe the bug
According to the algorithm, as it is designed in Elliot, Gini Index can take values > 1, however, according to the bibliography, this is not possible. Could you explain further how is that possible in your algorithm?

No such file or directory: 'D:\\develop\\elliot\\data\\movielens_1m\\dataset.tsv'

Version Number: 0.3.1
2022-10-14 15:42:23.398801: I Start experiment
Traceback (most recent call last):
2022-10-14 15:42:23.415288: I There will be the splitting
File ".\start_experiments.py", line 8, in
run_experiment(f"config_files/{args.config}.yml")
File "D:\develop\elliot\elliot\run.py", line 60, in run_experiment
dataloader = dataloader_class(config=base.base_namespace)
File "D:\develop\elliot\elliot\dataset\dataset.py", line 95, in init
self.dataframe = pd.read_csv(path_dataset, sep="\t", header=None, names=self.column_names)
File "D:\Users\Anaconda3\envs\elliot_env\lib\site-packages\pandas\io\parsers.py", line 688, in read_csv
return _read(filepath_or_buffer, kwds)
File "D:\Users\Anaconda3\envs\elliot_env\lib\site-packages\pandas\io\parsers.py", line 454, in _read
parser = TextFileReader(fp_or_buf, **kwds)
File "D:\Users\Anaconda3\envs\elliot_env\lib\site-packages\pandas\io\parsers.py", line 948, in init
self._make_engine(self.engine)
File "D:\Users\Anaconda3\envs\elliot_env\lib\site-packages\pandas\io\parsers.py", line 1180, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "D:\Users\Anaconda3\envs\elliot_env\lib\site-packages\pandas\io\parsers.py", line 2010, in init
self._reader = parsers.TextReader(src, **kwds)
File "pandas_libs\parsers.pyx", line 382, in pandas._libs.parsers.TextReader.cinit
File "pandas_libs\parsers.pyx", line 674, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: [Errno 2] No such file or directory: 'D:\develop\elliot\data\movielens_1m\dataset.tsv'

Suggestion: SIGIR 2021 E-Commerce Workshop Data Challenge

Hi! I just discovered this project from links in a discussion area from another project. Having a look through here, I appreciate your features in the area of splitting, unique metrics, and stats tests!

I learned the other day that the SIGIR 2021 Conference has an e-commerce workshop data challenge, called In-session prediction for purchase intent and recommendations. They just opened it up for participation.

https://sigir-ecom.github.io/data-task.html

After looking at elliot's input structure, it seems like it wouldn't be too far off to connect elliot to the data challenge to get some elliot benchmarks out. Though, I didn't dig into the available models enough to know how they map to in-session datasets.

Unfortunately I am unable to give it a go due to other professional commitments. But I figured I'd share it here as well as an opportunity to grow awareness around elliot, in the event others are interested.

Dict Comprehension speeds up data preparation

Describe the bug
I have been using datasets to make experiments with elliot where userId and itemId are strings. In these cases I have noticed speed improvement if I use dict comprehension instead of loops for the preparation of the dataset.

To Reproduce
Link for the commit on local branch. I could create a pull request if you think that it would be an improvement on your side as well.

import pandas as pd
import time

data = pd.read_csv('data/cat_dbpedia_movielens_1m/dataset.tsv',sep='\t',header=None)
data.columns = ['userId','itemId','rating','timestamp']
#change type of column 
data.userId = data.userId.astype(str)

##Loop 1 vs dict comprehension
t0 = time.time()
users = list(data['userId'].unique())
ratings = {}
for u in users:
    sel_ = data[data['userId'] == u]
    ratings[u] = dict(zip(sel_['itemId'], sel_['rating']))
t1 = time.time()
print(t1-t0) #356.07s

t0 = time.time()
ratings = {k: f.groupby('itemId')['rating'].apply(float).to_dict() for k, f in data.groupby('userId')}
t1 = time.time()
print(t1-t0) #29.83

##Loop 2 vs dict comprehension
dataframe = data 
#users are not included in the time loop since they are provided as parameter in the method
users = list(data['userId'].unique())
t0 = time.time()
ratings = {}
for u in users:
    sel_ = dataframe[dataframe['userId'] == u]
    ratings[u] = dict(zip(sel_['itemId'], sel_['rating']))
t1 = time.time()
print(t1-t0) #371.22

t0 = time.time()
ratings = {k: f.groupby('itemId')['rating'].apply(float).to_dict() for k, f in dataframe.groupby('userId') if k in users}
t1 = time.time()
print(t1-t0) #32.44s

Expected behavior
I would expect the time required for data preparation to be on the same level regardless of the type of userId/itemId.

Screenshots

System details (please complete the following information):

  • OS: Ubuntu 20.04
  • Python: 3.8.10

Additional context

Sample Scripts Don't Run

I've tried installing the sir_elliot branch as well as the master branch of elliot but none of the existing sample scripts seem to work. I mostly got errors claiming there are no files or directories found. Please advise on how I should proceed or whether there are any alternative frameworks I should use as I need this for a project I'm working on.

Issues installing on M1 Mac

Please let me know if this has been already discussed before - I've tried finding any information and failed.
I have attempted to install Elliot according to the instructions in the docs:

git clone https://github.com//sisinflab/elliot.git && cd elliot
virtualenv -p /usr/bin/pyhton3.6 venv # your python location and version
source venv/bin/activate
pip install --upgrade pip
pip install -e . --verbose

I am using a MacBook Pro with M1 Pro chip, 12.0.1 Monterey OS, Python version 3.9 installed with Homebrew.
It looks like there is some issue with Cython and some installation quirk, but I really don't know how to approach solving this. Please let me know if anyone else had such an issue previously.

When I run the last pip install command I get the following terminal output:

Using pip 22.0.4 from /Users/anastasiia/Desktop/elliot/venv/lib/python3.9/site-packages/pip (python 3.9)
Looking in indexes: https://pypi.org/simple, https://anastasiia.klimashevskaia%40tv2.no:****@tv2norge.jfrog.io/tv2norge/api/pypi/ai-python-local/simple
Obtaining file:///Users/anastasiia/Desktop/elliot
  Running command python setup.py egg_info
  running egg_info
  creating /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-pip-egg-info-su39l3jq/elliot.egg-info
  writing /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-pip-egg-info-su39l3jq/elliot.egg-info/PKG-INFO
  writing dependency_links to /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-pip-egg-info-su39l3jq/elliot.egg-info/dependency_links.txt
  writing requirements to /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-pip-egg-info-su39l3jq/elliot.egg-info/requires.txt
  writing top-level names to /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-pip-egg-info-su39l3jq/elliot.egg-info/top_level.txt
  writing manifest file '/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-pip-egg-info-su39l3jq/elliot.egg-info/SOURCES.txt'
  reading manifest file '/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-pip-egg-info-su39l3jq/elliot.egg-info/SOURCES.txt'
  adding license file 'LICENSE'
  writing manifest file '/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-pip-egg-info-su39l3jq/elliot.egg-info/SOURCES.txt'
  Preparing metadata (setup.py) ... done
Collecting hyperopt==0.2.5
  Using cached hyperopt-0.2.5-py2.py3-none-any.whl (965 kB)
Collecting numpy==1.18.0
  Using cached numpy-1.18.0.zip (5.4 MB)
  Running command pip subprocess to install build dependencies
  Looking in indexes: https://pypi.org/simple, https://anastasiia.klimashevskaia%40tv2.no:****@tv2norge.jfrog.io/tv2norge/api/pypi/ai-python-local/simple, https://anastasiia.klimashevskaia%40tv2.no:****@tv2norge.jfrog.io/tv2norge/api/pypi/ai-python-local/simple
  Collecting setuptools
    Using cached setuptools-62.1.0-py3-none-any.whl (1.1 MB)
  Collecting wheel
    Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB)
  Collecting Cython>=0.29.13
    Using cached Cython-0.29.28-py2.py3-none-any.whl (983 kB)
  Installing collected packages: wheel, setuptools, Cython
  Successfully installed Cython-0.29.28 setuptools-62.1.0 wheel-0.37.1
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
  Running from numpy source directory.
  running egg_info
  creating numpy.egg-info
  writing numpy.egg-info/PKG-INFO
  writing dependency_links to numpy.egg-info/dependency_links.txt
  writing entry points to numpy.egg-info/entry_points.txt
  writing top-level names to numpy.egg-info/top_level.txt
  writing manifest file 'numpy.egg-info/SOURCES.txt'
  package init file 'numpy/distutils/mingw/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/include/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/src/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/include/numpy/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/include/numpy/random/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/tests/data/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/src/npysort/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/src/multiarray/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/src/npymath/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/src/common/__init__.py' not found (or not a regular file)
  package init file 'numpy/core/src/umath/__init__.py' not found (or not a regular file)
  package init file 'numpy/linalg/lapack_lite/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/src/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/mixed/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/array_from_pyobj/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/kind/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/common/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/assumed_shape/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/parameter/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/string/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/size/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/tests/src/regression/__init__.py' not found (or not a regular file)
  package init file 'numpy/f2py/src/test/__init__.py' not found (or not a regular file)
  package init file 'numpy/lib/tests/data/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/include/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/_examples/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/src/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/_examples/cffi/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/_examples/cython/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/_examples/numba/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/src/mt19937/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/src/sfc64/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/src/pcg64/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/src/legacy/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/src/philox/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/src/splitmix64/__init__.py' not found (or not a regular file)
  package init file 'numpy/random/src/distributions/__init__.py' not found (or not a regular file)
  package init file 'numpy/_build_utils/src/__init__.py' not found (or not a regular file)
  reading manifest file 'numpy.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  no previously-included directories found matching 'doc/build'
  no previously-included directories found matching 'doc/source/generated'
  no previously-included directories found matching 'benchmarks/env'
  no previously-included directories found matching 'benchmarks/results'
  no previously-included directories found matching 'benchmarks/html'
  no previously-included directories found matching 'benchmarks/numpy'
  warning: no previously-included files matching '*.pyc' found anywhere in distribution
  warning: no previously-included files matching '*.pyo' found anywhere in distribution
  warning: no previously-included files matching '*.pyd' found anywhere in distribution
  warning: no previously-included files matching '*.swp' found anywhere in distribution
  warning: no previously-included files matching '*.bak' found anywhere in distribution
  warning: no previously-included files matching '*~' found anywhere in distribution
  warning: no previously-included files found matching 'LICENSES_bundled.txt'
  adding license file 'LICENSE.txt'
  writing manifest file 'numpy.egg-info/SOURCES.txt'
  Getting requirements to build wheel ... done
  Running command Preparing metadata (pyproject.toml)
  Running from numpy source directory.
  setup.py:425: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates
    run_build = parse_setuppy_commands()
  /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/tools/cythonize.py:75: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    required_version = LooseVersion('0.29.13')
  /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/tools/cythonize.py:77: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    if LooseVersion(cython_version) < required_version:
  Processing numpy/random/_bounded_integers.pxd.in
  Processing numpy/random/_philox.pyx
  Processing numpy/random/_bit_generator.pyx
  Processing numpy/random/_bounded_integers.pyx.in
  Processing numpy/random/_sfc64.pyx
  Processing numpy/random/_mt19937.pyx
  Processing numpy/random/mtrand.pyx
  Processing numpy/random/_generator.pyx
  Processing numpy/random/_pcg64.pyx
  Processing numpy/random/_common.pyx
  Cythonizing sources
  blas_opt_info:
  blas_mkl_info:
  customize UnixCCompiler
    libraries mkl_rt not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  blis_info:
    libraries blis not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  openblas_info:
    libraries openblas not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  atlas_3_10_blas_threads_info:
  Setting PTATLAS=ATLAS
    libraries tatlas not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  atlas_3_10_blas_info:
    libraries satlas not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  atlas_blas_threads_info:
  Setting PTATLAS=ATLAS
    libraries ptf77blas,ptcblas,atlas not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  atlas_blas_info:
    libraries f77blas,cblas,atlas not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  accelerate_info:
    libraries accelerate not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
  Library accelerate was not found. Ignoring
    libraries veclib not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
  Library veclib was not found. Ignoring
    FOUND:
      extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
      extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
      define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

    FOUND:
      extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
      extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
      define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

  /bin/sh: svnversion: command not found
  non-existing path in 'numpy/distutils': 'site.cfg'
  lapack_opt_info:
  lapack_mkl_info:
    libraries mkl_rt not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  openblas_lapack_info:
    libraries openblas not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  openblas_clapack_info:
    libraries openblas,lapack not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  flame_info:
    libraries flame not found in ['/Users/anastasiia/Desktop/elliot/venv/lib', '/usr/local/lib', '/usr/lib']
    NOT AVAILABLE

  atlas_3_10_threads_info:
  Setting PTATLAS=ATLAS
    libraries lapack_atlas not found in /Users/anastasiia/Desktop/elliot/venv/lib
    libraries tatlas,tatlas not found in /Users/anastasiia/Desktop/elliot/venv/lib
    libraries lapack_atlas not found in /usr/local/lib
    libraries tatlas,tatlas not found in /usr/local/lib
    libraries lapack_atlas not found in /usr/lib
    libraries tatlas,tatlas not found in /usr/lib
  <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
    NOT AVAILABLE

  atlas_3_10_info:
    libraries lapack_atlas not found in /Users/anastasiia/Desktop/elliot/venv/lib
    libraries satlas,satlas not found in /Users/anastasiia/Desktop/elliot/venv/lib
    libraries lapack_atlas not found in /usr/local/lib
    libraries satlas,satlas not found in /usr/local/lib
    libraries lapack_atlas not found in /usr/lib
    libraries satlas,satlas not found in /usr/lib
  <class 'numpy.distutils.system_info.atlas_3_10_info'>
    NOT AVAILABLE

  atlas_threads_info:
  Setting PTATLAS=ATLAS
    libraries lapack_atlas not found in /Users/anastasiia/Desktop/elliot/venv/lib
    libraries ptf77blas,ptcblas,atlas not found in /Users/anastasiia/Desktop/elliot/venv/lib
    libraries lapack_atlas not found in /usr/local/lib
    libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
    libraries lapack_atlas not found in /usr/lib
    libraries ptf77blas,ptcblas,atlas not found in /usr/lib
  <class 'numpy.distutils.system_info.atlas_threads_info'>
    NOT AVAILABLE

  atlas_info:
    libraries lapack_atlas not found in /Users/anastasiia/Desktop/elliot/venv/lib
    libraries f77blas,cblas,atlas not found in /Users/anastasiia/Desktop/elliot/venv/lib
    libraries lapack_atlas not found in /usr/local/lib
    libraries f77blas,cblas,atlas not found in /usr/local/lib
    libraries lapack_atlas not found in /usr/lib
    libraries f77blas,cblas,atlas not found in /usr/lib
  <class 'numpy.distutils.system_info.atlas_info'>
    NOT AVAILABLE

    FOUND:
      extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
      extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
      define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

  /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py:275: UserWarning: Unknown distribution option: 'define_macros'
    warnings.warn(msg)
  running dist_info
  running build_src
  build_src
  building py_modules sources
  creating build
  creating build/src.macosx-12-arm64-3.9
  creating build/src.macosx-12-arm64-3.9/numpy
  creating build/src.macosx-12-arm64-3.9/numpy/distutils
  building library "npymath" sources
  Traceback (most recent call last):
    File "/Users/anastasiia/Desktop/elliot/venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
      main()
    File "/Users/anastasiia/Desktop/elliot/venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/Users/anastasiia/Desktop/elliot/venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 164, in prepare_metadata_for_build_wheel
      return hook(metadata_directory, config_settings)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 188, in prepare_metadata_for_build_wheel
      self.run_setup()
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 281, in run_setup
      super(_BuildMetaLegacyBackend,
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 174, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 450, in <module>
      setup_package()
    File "setup.py", line 442, in setup_package
      setup(**metadata)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/core.py", line 171, in setup
      return old_setup(**new_attr)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 87, in setup
      return distutils.core.setup(**attrs)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 148, in setup
      return run_commands(dist)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 163, in run_commands
      dist.run_commands()
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 967, in run_commands
      self.run_command(cmd)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1214, in run_command
      super().run_command(command)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 986, in run_command
      cmd_obj.run()
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/command/dist_info.py", line 35, in run
      egg_info.run()
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/command/egg_info.py", line 26, in run
      self.run_command("build_src")
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1214, in run_command
      super().run_command(command)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 986, in run_command
      cmd_obj.run()
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/command/build_src.py", line 146, in run
      self.build_sources()
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/command/build_src.py", line 157, in build_sources
      self.build_library_sources(*libname_info)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/command/build_src.py", line 290, in build_library_sources
      sources = self.generate_sources(sources, (lib_name, build_info))
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/command/build_src.py", line 380, in generate_sources
      source = func(extension, build_dir)
    File "numpy/core/setup.py", line 656, in get_mathlib_info
      st = config_cmd.try_link('int main(void) { return 0;}')
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-build-env-h1wqgh2x/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/config.py", line 241, in try_link
      self._check_compiler()
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/command/config.py", line 82, in _check_compiler
      self.fcompiler = new_fcompiler(compiler=self.fcompiler,
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/__init__.py", line 884, in new_fcompiler
      compiler = get_default_fcompiler(plat, requiref90=requiref90,
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/__init__.py", line 855, in get_default_fcompiler
      compiler_type =  _find_existing_fcompiler(matching_compiler_types,
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/__init__.py", line 806, in _find_existing_fcompiler
      c.customize(dist)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/__init__.py", line 530, in customize
      linker_so_flags = self.flag_vars.linker_so
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/environment.py", line 40, in __getattr__
      return self._get_var(name, conf_desc)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/environment.py", line 56, in _get_var
      var = self._hook_handler(name, hook)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/__init__.py", line 709, in _environment_hook
      return hook()
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/gnu.py", line 353, in get_flags_linker_so
      flags = GnuFCompiler.get_flags_linker_so(self)
    File "/private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc/numpy/distutils/fcompiler/gnu.py", line 144, in get_flags_linker_so
      os.environ['MACOSX_DEPLOYMENT_TARGET'] = target
    File "/opt/homebrew/Cellar/[email protected]/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 684, in __setitem__
      value = self.encodevalue(value)
    File "/opt/homebrew/Cellar/[email protected]/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 756, in encode
      raise TypeError("str expected, not %s" % type(value).__name__)
  TypeError: str expected, not int
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: /Users/anastasiia/Desktop/elliot/venv/bin/python /Users/anastasiia/Desktop/elliot/venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py prepare_metadata_for_build_wheel /var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/tmp15w8xm0b
  cwd: /private/var/folders/gr/dpwnfzbj45sfzthq83r6cn7m0000gn/T/pip-install-1_bvhw4u/numpy_94acb307542d4878a85f46abd422e4fc
  Preparing metadata (pyproject.toml) ... error
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

The output of my pip freeze:

absl-py==1.0.0
astunparse==1.6.3
cachetools==5.0.0
certifi==2021.10.8
charset-normalizer==2.0.12
flatbuffers==2.0
gast==0.5.3
google-auth==2.6.4
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.44.0
h5py==3.6.0
idna==3.3
importlib-metadata==4.11.3
keras==2.8.0
Keras-Preprocessing==1.1.2
libclang==13.0.0
Markdown==3.3.6
numpy==1.22.3
oauthlib==3.2.0
opt-einsum==3.3.0
protobuf==3.20.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
requests==2.27.1
requests-oauthlib==1.3.1
rsa==4.8
six==1.16.0
tensorboard==2.8.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow-macos==2.8.0
termcolor==1.1.0
tf-estimator-nightly==2.8.0.dev2021122109
typing_extensions==4.1.1
urllib3==1.26.9
Werkzeug==2.1.1
wrapt==1.14.0
zipp==3.8.0

Like I said, I would greatly appreciate any assistance. Thank you!

Issue with installing

Hi! I have issues with installing elliot on my mac.

I run on the terminal the exact instructions, both with conda and virtualenv. Both cases result to the same error with compiling Cython.

Screenshot 2023-09-01 at 16 03 17

  • macOS 12.2.1, M1 chip
  • Python 3.9.12

Do you have any suggestions on how I could resolve this?

Sequential Model

Hi there,

I am reviewing your recommendation library and I am quite interested in that.

I am a PhD student from NUS, Singapore. I would like to know whether your team is still working on this project? I am currently trying to add some more features to this library.

  1. Adding some sequential model for recommendation to make full use of the time-stamp info in the dataset. eg: RNN based models.
  2. Help converting some code from TensorFlow to Pytorch since people around me are more familiar with Pytorch for academic research.

I will be doing this as part of my university project and pls let me know if your team is interested in this idea.

Regards,
Victor

Out of Range Predicted Recommendations

Describe the bug
I'm on a research project about co-training recommender systems. This involves iteratively training one recommender, adding its predicted ratings into the trainset and training another recommender on that enriched trainset. To add the predicted ratings to the trainset, these ratings should be on the same scale as the original ratings, ie 0-5. However, I noticed that the get_recommendations() method returns ratings that are outside the 0-5 range.

For example, when running sample_main.py, which uses ItemKNN on the movielens_1m dataset, the predictions include results that are beyond the normal 0-5 range. They vary anywhere between 0 and 100 and sometimes go beyond 100

My questions would be:

  1. Are those supposed to represent the rating or is it some kind of score?
  2. If they are scores and not ratings, how can they be normalised?

To Reproduce

  1. Save the recommendations from item_knn_similarity.get_user_recs() in a text file
  2. Run sample_main.py
  3. Inspect the ratings of recommendations

Expected behaviour
One would expect that all the predicted recommendations would be between 0 and 5.
They vary anywhere between 0 and 100 and sometimes go beyond 100

Screenshots
image

System details (please complete the following information):

  • OS: [Windows 10]
  • Python Version [3.9.4]
  • Version of the Libraries [0.3.1]

Basic Configuration example has different paths for dataset.tsv

Describe the bug
Running sample basic (https://github.com/sisinflab/elliot/blob/master/sample_basic.py) encounters a problem for file not found. This is because the dataset.tsv is downloaded into data/movilens_1m folder but the configuration file loaded by the same script (https://github.com/sisinflab/elliot/blob/master/config_files/basic_configuration.yml) looks for the dataset in /data/cat_dbpedia_movielens_1m.

To Reproduce
Run sample_basic.py

Expected behavior
dataset.tsv should be downloaded into a folder reachable by the code

Screenshots

System details (please complete the following information):

  • OS: [e.g. iOS]
  • Python Version [e.g. 3.6.9]
  • Version of the Libraries [e.g. 22]

Additional context
Add any other context about the problem here.

FunkSVD finished abruptly

I have tried to run FunkSVD on MovieLens100k but it does finish the execution.

To Reproduce
The screenshots of the running and config files used for reproducing what I did are as follows.

Screen Shot 2021-03-08 at 13 52 27

Screen Shot 2021-03-08 at 13 52 50

Expected behavior
The screenshot of the execution trace is as follows.

Screen Shot 2021-03-08 at 13 57 07

I am Python 3.7 on a MacOS Big Sur version 11.1

Observe Issue related to Elliot's Framework

We are using Elliot Framework to conduct a reproducibility. However, we are facing issues with UserAutoRec, CFGAN, and LightGCN models, which produce very bad results with amazon_music, opinions and movielens_1m datasets. To handle this issue, I change the configuration file multiple times by taking random parameters and default parameters, which are given on the Elliot website for UserAutoRec, CFGAN and LightGCN models. However, I did not observe any improvement. In addition, I also analyze some articles where UserAutoRec, CFGAN, and LightGCN are picked up as baseline models to see how these models perform in other articles with amazon_music, opinions and movielens_1m datasets. Fortunately, I see their good results. I think that there is an error during the embedding of these models into the Elliot Framework,

The obtained results of UserAutoRec, CFGAN and LightGCN with amazon_music, epinions and movielens_1m datasets are given in the tables below. We also attach the used configuration files.
UserAutoRec.txt
LightGCN.txt
CFGAN.txt

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.