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

Overview

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
You might also like...
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

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

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

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.

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

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

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

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

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

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

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.

CollabFuzz: A Framework for Collaborative Fuzzing

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

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

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

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

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

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

This is a product / project developed by a team of Five Members including Mithilesh Ghadge for the Engineering Clinics at Vellore Institute Of Technology

UltrasonicSensorGlasses-for-blind-people This is a product / project developed by a team of Five Members including Mithilesh Ghadge for the Engineerin

The Gecko SDK (GSDK) combines all Silicon Labs 32-bit IoT product software development kits (SDKs) based on Gecko Platform into a single, integrated SDK.

Silicon Labs Gecko SDK (GSDK) The Gecko SDK (GSDK) combines Silicon Labs wireless software development kits (SDKs) and Gecko Platform into a single, i

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

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.

    opened by Ruide 3
  • 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)
                                          ~~       ^~
    
    opened by syzer 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.

    opened by piyushrungta25 0
  • 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

    opened by LGTM-badger 0
Owner
Ghassen Hamrouni
Software engineer passionate about algorithms, Computer Vision, Machine learning, computational geometry and Comp Sci.
Ghassen Hamrouni
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

Liu Liu 6.9k Oct 1, 2022
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.

NetEase Youdao 177 Sep 25, 2022
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

The Fido Project 412 Sep 19, 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

Facebook Research 4.5k Oct 5, 2022
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,

Chih-Jen Lin 4.2k Oct 2, 2022
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

mlpack 4.1k Oct 1, 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

OpenCV 63.9k Sep 26, 2022
oneAPI Data Analytics Library (oneDAL)

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

oneAPI-SRC 520 Sep 26, 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

Sergey Zyrianov 875 Sep 6, 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

VLFeat.org 1.5k Sep 29, 2022