Recommendation Engine .NET collaborative filtering framework
Real-time product recommendation system

NReco Recommendation System for .NET


  • Pure C# recommendation engine: port of Apache Mahout "Taste" Recommendation/Collaborative filtering Framework with dependencies (about 800kb of code) and unit test (283 original tests are passed). Does not depend on 3rd party libraries or native applications.
  • Mature framework for storage, evaluation, online and offline computation of recommendations
  • Supports all major types of production-ready recommenders: User-based, Item-based, SVD-based
  • Similarity in users or items: Euclidian distance, Surprise and Coincidence (LLR), Tanimoto coefficient, Pearson correlation and others
  • Designed for performance, scalability and flexibility: optimized implementations of in-memory structures and high-precision math functions (inlcuding Mersenne Twister random generator), parallel implementations of SVD-factorizers, computation cache support etc.
  • Open source: NReco.Recommender on GitHub (AGPL license)
  • Supports both full .NET Framework and .NET Core, can be used as REST microservice from any web application
  • MovieLens Example: ASP.NET MVC app for film recommendation by MovieLens dataset
  • Commercial package includes:
    • ADO.NET Data model (for loading preferences data from database) + usage example
    • Evaluator: WinForms utility for evaluating parameters of user-based and item-based recommenders

download and pricing

quick purchase process

  • 1 Choose a package
  • 2 Pay online is a worldwide leader in online payment services
  • 3 Download the package
NReco Recommender is a recommendation system library that takes users' behaviour (usage statistics, preferences, ratings) and from that tries to find items that other users might like. Collaborative filtering algorithms are especially effective for recommending products, music, books, videos etc.

how to use

  1. Add reference to NReco.Recommender.dll assembly
    OR install NReco.Recommender nuget package
  2. Configure recommendation engine:
    var model = new FileDataModel("data.csv");
    var similarity = new LogLikelihoodSimilarity(model);
    var neighborhood = new NearestNUserNeighborhood(3, similarity, model);
    var recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
    var recommendedItems = recommender.Recommend(userId, 5);
  3. What's next?
    • Explore framework API documentation
    • Find most suitable parameters (similarity/neighborhood functions) for concrete dataset with Evaluator utility for getting best recommendation results.
Have a question? Feel free to ask.

try it online

Select your favourite films (recommendations by MovieLens dataset):
Terminator 2: Judgment Day (1991)
Aliens (1986)
Get recommendations

supporting materials

API Documentation
Documentation reference for NReco.Recommender classes, interfaces and methods.
Book: Mahout in Action
Part 1 is about making recommendations: what is collaborative filtering, how to make recommendations with Mahout (applicable to the C# port). PDF version.
Collaborative Filtering Recommender Systems
Survey that covers most aspects of building good recommendation system. Recommendations: Item-to-Item Collaborative Filtering
How uses collaborative filering for personalizing their online store for each customer.

typical usage scenario

  1. Choose what do you want to recommend (this may be anything: products, articles, books, movies, cars, tasks etc)
  2. Collect or infer users preferences from existing data (SQL database, access logs etc)
  3. Evaluate and choose appropriate recommendation algorithm and its parameters; NReco.Recommender includes Evaluator GUI utility that simplifies this process.
  4. Integrate recommendation engine into your application: make automatic predictions about user interests in the real time