Итак, один из самых ожидаемых блогов наконец-то здесь. Сегодня мы будем создавать систему рекомендаций фильмов, которая будет давать очень хорошие результаты при очень меньшем количестве строк кода. Так что без каких-либо дополнительных должностей.
Прочитайте полную статью с исходным кодом здесь —https://machinelearningprojects.net/movie-recommendation-system-1st-way/
Давай сделаем это…
Шаг 1 — Импорт пакетов, необходимых для системы рекомендаций фильмов.
import pandas as pd
Шаг 2 — Чтение входных данных.
df1 = pd.read_csv('u.data',sep='\t') df1.columns = ['user_id','item_id','rating','timestamp'] df1.head()
Шаг 3 — Чтение названий фильмов.
df2 = pd.read_csv(‘Movie_Id_Titles’) df2.head()
Шаг 4 — Объединение данных фильмов и названий фильмов.
df = pd.merge(df1,df2,on=’item_id’) df.head()
Мы объединяем оба фрейма данных в «item_id», который присутствует в обоих фреймах данных.
Шаг 5 — Сгруппируйте одинаковые записи фильмов.
rating_and_no_of_rating = pd.DataFrame(df.groupby(‘title’)[‘rating’].mean().sort_values(ascending=False)) rating_and_no_of_rating
- Здесь мы группируем фильмы и берем среднее значение всех оценок, присвоенных им, а затем сортируем их по среднему рейтингу.
- Вы можете видеть, что в результате ниже отображается дерьмовый фильм Они создали преступника, который мог получить оценку только от одного человека, и это тоже 5 звезд. Вот почему его среднее также равно 5.
Шаг 6 — Добавление столбца №. рейтингов.
rating_and_no_of_rating[‘no_of_ratings’] = df.groupby(‘title’)[‘rating’].count() rating_and_no_of_rating
- Добавление столбца нет. рейтингов.
- Мы вычисляем нет. рейтингов с помощью метода подсчета фрейма данных.
Шаг 7 — Сортировка по номеру. рейтингов.
rating_and_no_of_rating = rating_and_no_of_rating.sort_values(‘no_of_ratings’,ascending=False) rating_and_no_of_rating.head()
- Просто отсортируйте по номеру. рейтингов.
- И теперь мы видим некоторые реальные результаты.
- Очень известный фильм «Звездные войны» получил в среднем 4,35 балла от 583 пользователей.
Шаг 8 — Создание сводной таблицы.
pt = df.pivot_table(index=’user_id’,columns=’title’,values=’rating’) pt.head()
- Создание сводной таблицы.
- В этой сводной таблице пользователи перемещаются по строкам, а фильмы — по столбцам.
- Нэн представляет, что этот пользователь не дал никакой оценки этому фильму.
Шаг 9 — Проверка названий фильмов.
rating_and_no_of_rating.index
- Просто распечатайте все названия фильмов, которые у нас есть.
Шаг 10 — Живой прогноз.
test_movie = input('Enter movie name --> ') movie_vector = pt[test_movie].dropna() similar_movies = pt.corrwith(movie_vector) corr_df = pd.DataFrame(similar_movies,columns=['Correlation']) corr_df = corr_df.join(rating_and_no_of_rating['no_of_ratings']) corr_df = corr_df[corr_df['no_of_ratings']>100].sort_values('Correlation',ascending=False).dropna() corr_df.head(10)
- Во время тестирования я добавил «Звездные войны (1977)» в качестве тестового фильма.
- Выберите его вектор из сводной таблицы выше.
- Используйте этот вектор и сопоставьте его с другими фильмами, используя corrwith(), и он даст свою корреляцию с другими фильмами на основе пользовательских оценок и сохранит ее в Similar_movies.
- После этого создайте фрейм данных, как показано ниже, и снова объедините в нем no_of_ratings, чтобы взять не менее 100 оценок в качестве порога.
- Отсортируйте результаты на основе корреляций, и BOOM вот результаты.
- Мы видим результаты, все эти фильмы так или иначе связаны со «Звездными войнами».
- «Империя наносит ответный удар», «Возвращение джедая» — оба связаны со «Звездными войнами».
Дайте мне знать, если есть какие-либо вопросы относительно системы рекомендаций фильмов, связавшись со мной по электронной почте или LinkedIn.
Чтобы узнать больше о машинном обучении, глубоком обучении, компьютерном зрении, НЛП и проектах Flask, посетите мой блог.
Для дальнейшего объяснения кода и исходного кода посетите здесь —
Итак, это все для этого блога, ребята, спасибо за то, что прочитали его, и я надеюсь, что вы возьмете что-то с собой после прочтения этого и до следующего раза 👋…