Написать систему для рекомендации фильмов, используя коллаборативную фильтрацию.
Система рекомендации фильмовЗадание: Написать систему для рекомендации фильмов, используя коллаборативную фильтрацию.
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)
Результат выполнения кодаФильмы, рекомендованные пользователю:
Этот код реализует базовую систему рекомендации фильмов на основе коллаборативной фильтрации, используя косинусное сходство между пользователями для предсказания интересов пользователя. | |
|
| |
| Просмотров: 205 | |
| Всего комментариев: 0 | |