A C library for product recommendations/suggestions using collaborative filtering (CF)

Recommender Build Status

GitHub stars GitHub license Language grade: C/C++

A C library for product recommendations/suggestions using collaborative filtering (CF).

Recommender analyzes the feedback of some users (implicit and explicit) and their preferences for some items. It learns patterns and predicts the most suitable products for a particular user.

Features

  • Collaborative Filtering
  • User and Item based recommenders
  • No external dependencies
  • Fast running time ~ 81 seconds for 10 million ratings (on MovieLens Data Sets)
  • Memory footprint under 160 MB for 10 million ratings

Webpage

http://ghamrouni.github.com/Recommender/

Building

To compile Recommender:

make

The compilation will produce libRecommender.a

To compile an example:

gcc test/test.c src/libRecommender.a -lm -o test/t1 -I src/

Alternatively you can use clang

clang test/test.c src/libRecommender.a -lm -o test/t1 -I src/

Keywords

Collaborative filtering, recommender system

References

  1. http://en.wikipedia.org/wiki/Recommendation_system
  2. http://public.research.att.com/~volinsky/netflix/kdd08koren.pdf
  3. http://research.yahoo.com/files/ieeecomputer.pdf
Owner
Ghassen Hamrouni
Software engineer passionate about algorithms, Computer Vision, Machine learning, computational geometry and Comp Sci.
Ghassen Hamrouni
Similar Resources

Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library,  for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

eXtreme Gradient Boosting Community | Documentation | Resources | Contributors | Release Notes XGBoost is an optimized distributed gradient boosting l

Dec 30, 2022

FoLiA library for C++

Libfolia: FoLiA Library for C++ Libfolia (c) CLS/ILK 2010 - 2021 Centre for Language Studies, Radboud University Nijmegen Induction of Linguistic Know

Dec 31, 2021

MITIE: library and tools for information extraction

MITIE: MIT Information Extraction This project provides free (even for commercial use) state-of-the-art information extraction tools. The current rele

Dec 29, 2022

Flashlight is a C++ standalone library for machine learning

Flashlight is a C++ standalone library for machine learning

Flashlight is a fast, flexible machine learning library written entirely in C++ from the Facebook AI Research Speech team and the creators of Torch and Deep Speech.

Jan 8, 2023

An optimized neural network operator library for chips base on Xuantie CPU.

简介 CSI-NN2 是 T-HEAD 提供的一组针对无剑 SoC 平台的神经网络库 API。抽象了各种常用的网络层的接口,并且提供一系列已优化的二进制库。 CSI-NN2 的特性: 开源 c 代码版本的参考实现。 提供玄铁 CPU 的汇编优化实现。

Jan 5, 2023

C++ NN 🧠 A simple Neural Network library written in C++

C++ NN 🧠 A simple Neural Network library written in C++ Installation 🚀

Dec 13, 2022

ML++ - A library created to revitalize C++ as a machine learning front end

ML++ - A library created to revitalize C++ as a machine learning front end

ML++ Machine learning is a vast and exiciting discipline, garnering attention from specialists of many fields. Unfortunately, for C++ programmers and

Dec 31, 2022

A C library for product recommendations/suggestions using collaborative filtering (CF)

Recommender A C library for product recommendations/suggestions using collaborative filtering (CF). Recommender analyzes the feedback of some users (i

Dec 29, 2022

Collaborative Collection of C++ Best Practices.

Collaborative Collection of C++ Best Practices. This online resource is part of Jason Turner's collection of C++ Best Practices resources.

Jan 2, 2023

CollabFuzz: A Framework for Collaborative Fuzzing

Collaborative Fuzzing Design In this cooperative framework, the fuzzers collaborate using a centralized scheduler.

Nov 9, 2022

Collaborative and comprehensive testing for libft project

first Draft Collaborate on libft tests, everything here is open to suggestions This is hopefully a way to both practice git collaboration and creat a

Nov 24, 2021

Xerus - A general purpose library for numerical calculations with higher order tensors, Tensor-Train Decompositions / Matrix Product States and other Tensor Networks

About The xerus library is a general purpose library for numerical calculations with higher order tensors, Tensor-Train Decompositions / Matrix Produc

Apr 20, 2021

Invariant-ekf - C++ library to implement invariant extended Kalman filtering for aided inertial navigation.

Invariant-ekf - C++ library to implement invariant extended Kalman filtering for aided inertial navigation.

inekf This repository contains a C++ library that implements an invariant extended Kalman filter (InEKF) for 3D aided inertial navigation. This filter

Dec 24, 2022

DirectX 11 library that provides convenient access to compute-based triangle filtering (CTF)

AMD GeometryFX The GeometryFX library provides convenient access to compute-based triangle filtering (CTF), which improves triangle throughput by filt

Dec 15, 2022

DirectX 11 and 12 library that provides a scalable and GCN-optimized solution for deferred shadow filtering

AMD ShadowFX The ShadowFX library provides a scalable and GCN-optimized solution for deferred shadow filtering. Currently the library supports uniform

Dec 9, 2022

Security product hook detection

HookDump EDR function hook dumping Please refer to the Zeroperil blog post for more information https://zeroperil.co.uk/hookdump/ Building source In o

Dec 28, 2022

AgileX Product Gazebo Simulate

AgileX Product Gazebo Simulate Install the Gazebo software Gazebo is a simulator. Gazebo simulates multiple robots in a 3D environment, with extensive

Dec 9, 2022

Source code to the 1980s Amiga product, version dated 1992

HyperCacheAmiga Source code to the 1980s Amiga product, version dated 1992 A fellow named Matthew Kott reached out and asked me to release the source

Nov 19, 2022
Comments
  • The usage of srand is incorrect

    The usage of srand is incorrect

    the generate_random_matrix is using srand(0) to generate random number everytime.

    srand(0) sets the seed of the random number generator to 0. Calling it again with the same parameter sets the seed to 0 again, and will cause the random generator to create the same output.

    e.g. srand(0); for(int i = 0; i<5; i++) printf(" %d ", rand());
    return 0;

    prints 1804289383 846930886 1681692777 1714636915 1957747793 all the time (should use something like srand(time(0)))

    So the matrix is not generated randomly as it should be.

  • make failed

    make failed

    error: format specifies type 'unsigned int *' but the argument has
          type 'size_t *' (aka 'unsigned long *') [-Werror,-Wformat]
                    if (fscanf (file, "%u %u", &i, &j) != 2)
                                          ~~       ^~
    
  • Invalid arguments in test.c

    Invalid arguments in test.c

    Function call in test.c

    estimate_rating_from_factors(0, 0, learned, model)

    gives the following error

    test.c: In function ‘main’: test.c:80:4: error: incompatible type for argument 2 of ‘estimate_rating_from_factors’ estimate_rating_from_factors(0, 0, learned, model));

    Function prototype from recommender.h

    double estimate_rating_from_factors(rating_estimator_parameters_t* estim_param, struct learning_model model);

    Comment from above prototype has 4 arguments while you have only defined 2.

  • Migrate LGTM.com installation from OAuth to GitHub App

    Migrate LGTM.com installation from OAuth to GitHub App

    Hi There,

    This project is still using an old implementation of LGTM's automated code review, which has now been disabled. To continue using automated code review, and receive checks on your Pull Requests, please install the GitHub App on this repository.

    Thanks, The LGTM Team

C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library

Build Status Travis CI VM: Linux x64: Raspberry Pi 3: Jetson TX2: Backstory I set to build ccv with a minimalism inspiration. That was back in 2010, o

Jan 6, 2023
Edge ML Library - High-performance Compute Library for On-device Machine Learning Inference
 Edge ML Library - High-performance Compute Library for On-device Machine Learning Inference

Edge ML Library (EMLL) offers optimized basic routines like general matrix multiplications (GEMM) and quantizations, to speed up machine learning (ML) inference on ARM-based devices. EMLL supports fp32, fp16 and int8 data types. EMLL accelerates on-device NMT, ASR and OCR engines of Youdao, Inc.

Jan 7, 2023
A lightweight C++ machine learning library for embedded electronics and robotics.

Fido Fido is an lightweight, highly modular C++ machine learning library for embedded electronics and robotics. Fido is especially suited for robotic

Dec 17, 2022
A C++ standalone library for machine learning

Flashlight: Fast, Flexible Machine Learning in C++ Quickstart | Installation | Documentation Flashlight is a fast, flexible machine learning library w

Jan 8, 2023
libsvm websitelibsvm - A simple, easy-to-use, efficient library for Support Vector Machines. [BSD-3-Clause] website

Libsvm is a simple, easy-to-use, and efficient software for SVM classification and regression. It solves C-SVM classification, nu-SVM classification,

Jan 2, 2023
mlpack: a scalable C++ machine learning library --
mlpack: a scalable C++ machine learning library --

a fast, flexible machine learning library Home | Documentation | Doxygen | Community | Help | IRC Chat Download: current stable version (3.4.2) mlpack

Dec 30, 2022
Open Source Computer Vision Library

OpenCV: Open Source Computer Vision Library Resources Homepage: https://opencv.org Courses: https://opencv.org/courses Docs: https://docs.opencv.org/m

Jan 1, 2023
oneAPI Data Analytics Library (oneDAL)
oneAPI Data Analytics Library (oneDAL)

Intel® oneAPI Data Analytics Library Installation | Documentation | Support | Examples | Samples | How to Contribute Intel® oneAPI Data Analytics Libr

Dec 30, 2022
RNNLIB is a recurrent neural network library for sequence learning problems. Forked from Alex Graves work http://sourceforge.net/projects/rnnl/

Origin The original RNNLIB is hosted at http://sourceforge.net/projects/rnnl while this "fork" is created to repeat results for the online handwriting

Dec 26, 2022
An open library of computer vision algorithms

VLFeat -- Vision Lab Features Library Version 0.9.21 The VLFeat open source library implements popular computer vision algorithms specialising in imag

Dec 29, 2022