Хорошая совместная фильтрация/сопоставление/библиотека рекомендаций для Python/Django?

Я ищу библиотеку, которую я могу использовать для сопоставления моих пользователей с другими моделями Django на основе ответов на вопросы - также моя собственная модель django.

Итак, мне нужно что-то настраиваемое, с хорошей документацией/поддержкой и, надеюсь, не слишком сложно реализовать!

Есть ли у кого-нибудь хорошие рекомендации? Я просмотрел Краб и Джанго-рекомендацию, но ни один из них не очень хорошо документирован.

в основном у меня есть два приложения для опроса, с соответствующими, но не идентичными вопросами и ответами. Например. вопрос в app1 может быть "сколько ночей в неделю вы пьете?" и вопрос в app2 может быть "сколько ночей в неделю вы ожидаете выпить?", с иностранным ключом к первому вопросу в этом случае. Я хочу принять ответы на эти вопросы и использовать их для сопряжения пользователей из каждого набора друг с другом, чтобы дать пользователям рекомендации группы 2 на основе того, что уже используют пользователи из группы 1.

Ответы

Ответ 1

Они освещали эту тему в свободном классе Стэнфорда ML. Проверьте видео в главе XVI на http://www.ml-class.org/course/video/preview_list

Хотя обсуждаемая реализация - Matlab/Octave, ее не составит труда реализовать на Python, еще проще, если вы используете Numpy

Ответ 3

Очень гибкое решение, которое работает на любом языке кодирования (включая Python), это API-рекомендация Abracadabra.

В основном это алгоритмы-рекомендации как служебная библиотека. Настройка очень проста: вам нужно только отправлять HTTP-вызовы (которые вы можете делать с Django) на URL-адрес конечной точки API для обучения вашей модели и получения рекомендаций. Просмотрите документы.

С API-интерфейсом Abracadabra Recommendender при использовании Python сначала добавьте данные в свою модель:

# These code snippets use an open-source library. http://unirest.io/python
response = unirest.post("https://noodlio-abracadabra-recommender-systems-v1.p.mashape.com/add/subjects?recommenderId=rec1&subjectId=See+docs",
  headers={
    "X-Mashape-Key": "<required>",
    "Accept": "application/json",
    "Content-Type": "application/json"
  }
)

Затем вы обучаете модель по рейтингу или любимым предметам (например, фильмы):

# These code snippets use an open-source library. http://unirest.io/python
response = unirest.post("https://noodlio-abracadabra-recommender-systems-v1.p.mashape.com/rate/subject?recommenderId=rec1&subjectId=gameofthrones&subjectWeight=10&userId=user1",
  headers={
    "X-Mashape-Key": "<required>",
    "Accept": "application/json",
    "Content-Type": "application/json"
  }
)

После этого вы получите рекомендации на основе контентной, совместной или гибридной фильтрации следующим образом:

# These code snippets use an open-source library. http://unirest.io/python
response = unirest.post("https://noodlio-abracadabra-recommender-systems-v1.p.mashape.com/recommend?method=content&recommenderId=rec1&userId=user1",
  headers={
    "X-Mashape-Key": "<required>",
    "Accept": "application/json",
    "Content-Type": "application/json"
  }
)

Вы можете просмотреть другой пример на других языках, включая Angular, React, Javascript, NodeJS, Curl, Java, Python, Objective-C, Ruby, .NET... на странице .