Giter Site home page Giter Site logo

find-similar-artists's Introduction

Поиск похожих артистов на данного

Установка и запуск

Клонирование репозитория

Клонируйте репозиторий в удобную папку и перейдите в нее:

git clone https://github.com/ddzina/find-similar-artists.git

Создайте окружение anaconda или venv:

Anaconda environment

Создайте и активируйте виртуальное окружение:

conda create -n name
conda activate name

Установите pip:

conda install pip

Venv

Создайте и активируйте виртуальное окружение:

python -m venv name
source name/bin/activate (Linux)
venv\Scripts\activate.bat (Windows)

Установите зависимости:

pip install -r requirements.txt

Запуск

Запустите приложение:

python main.py

Описание проделанной работы:

Для определения похожих артистов был использован метод коллаборативной фильтрации.

  • Сначала формируется словарь из пользователей и значений scrobbles для каждого артиста.
  • Scrobbles интерпретируются как мера интереса к артисту: больше - лучше.
  • Получив на вход имя артиста, ищем "самого преданного" фаната - пользователя с наибольшим scrobbles для данного артиста.
  • Затем находим схожих пользователей, используя меру близости - косинусное расстояние между векторами scrobbles.
  • Умножаем значение scrobbles на меру для каждого пользователя, чтобы более похожие пользователи сильнее влияли на результат.
  • Далее для всех артистов считаем сумму данных произведений (откалиброванных мер) и делим на сумму мер для выбранных пользователей, тем самым нормируя значения коэффицентов релевантости для артистов.
  • Сортируем артистов по убыванию данного коэффицента и получаем наиболее похожих артистов на введенного. Profit!

Описание файлов в проекте

  • collaboration.ipynb - "черновик", файл, в котором писался и тестировался код
  • funcs.py - файл с основными функциями, реализующими всю логику
  • main.py - исполняемый файл

Пример работы программы

https://drive.google.com/file/d/17o4n46WMeFN5y6myjgm8G2Fb-KmV2xYa/view?usp=share_link

Мысли и идеи по решению подобных задач

  • Для решения подобной задачи можно было хранить данные в виде разреженной матрицы и выполнять операции над ее столбцами и строками
  • Можно кластеризовать схожих пользователей и строить рекомендации для кластеров, я не строил кластеры, а решил пойти от рекомендаций для самого преданного фаната
  • Можно использовать другие меры сходства, например, корелляцию

find-similar-artists's People

Contributors

ddzina avatar

Watchers

 avatar

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.