Написать систему для рекомендации фильмов, используя коллаборативную фильтрацию.

Система рекомендации фильмов

Задание: Написать систему для рекомендации фильмов, используя коллаборативную фильтрацию.

import numpy as np
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.model_selection import train_test_split

# Загрузка данных
ratings = pd.read_csv('ratings.csv') # предполагается столбцы userId, movieId, rating
movies = pd.read_csv('movies.csv') # предполагается столбцы movieId, title

# Создание матрицы пользователь-фильм
movie_user_matrix = ratings.pivot_table(index='userId', columns='movieId', values='rating')

# Заполнение пропущенных значений нулями
movie_user_matrix_filled = movie_user_matrix.fillna(0)

# Вычисление косинусного сходства между пользователями
user_similarity = cosine_similarity(movie_user_matrix_filled)

# Функция для рекомендации фильмов
def recommend_movies(user_index, num_recommendations=5):
    # Сортировка индексов пользователей по степени сходства
    similar_users = np.argsort(-user_similarity[user_index])
 
    # Идентификация фильмов, которые смотрел данный пользователь
    known_user_movies = set(movie_user_matrix.iloc[user_index].dropna().index)
 
    # Сбор рекомендаций
    recommendations = []
    for user in similar_users:
        potential_movies = movie_user_matrix.iloc[user].dropna()
        for movie, rating in potential_movies.items():
            if movie not in known_user_movies and movie not in recommendations:
                recommendations.append(movie)
                if len(recommendations) == num_recommendations:
                    break
        if len(recommendations) == num_recommendations:
            break
 
    return movies[movies['movieId'].isin(recommendations)]['title']

# Пример использования
recommended_movies = recommend_movies(0, 5)
print(recommended_movies)

Результат выполнения кода

Фильмы, рекомендованные пользователю:

  • Фильм A
  • Фильм B
  • Фильм C
  • Фильм D
  • Фильм E

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

Категория: Практические упражнения Python | Добавил: Admin (03.05.2024)
Просмотров: 17 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: