В этом блоге мы увидим еще один способ реализации системы рекомендаций фильмов. Этот блог тоже будет очень интересным, так что без дальнейших рассуждений.
Простая интуиция этого 2-го способа заключается в том, что мы будем комбинировать основные характеристики, такие как актерский состав, режиссер, жанры и т. д., и наблюдать сходство между ними, потому что большую часть времени одни и те же режиссеры снимают похожие фильмы, похожие актеры любят выступать в некоторых фильмах. подобные конкретные типы фильмов.
Прочитайте полную статью с исходным кодом здесь —https://machinelearningprojects.net/movie-recommendation-system-2nd-way/
Давай сделаем это…
Шаг 1 — Импорт библиотек, необходимых для системы рекомендаций фильмов.
import pandas as pd from sklearn.feature_extraction.text import CountVectorizer from sklearn.metrics.pairwise import cosine_similarity
Шаг 2 — Чтение входных данных.
org_movies = pd.read_csv(‘movie_dataset.csv’) org_movies.head(3)
Шаг 3 — Проверка столбцов наших данных.
org_movies.columns
Шаг 4 — Просто сохраняйте важные столбцы.
movies = org_movies[[ ‘genres’, ‘keywords’,’cast’, ‘title’, ‘director’]] movies.head()
- Мы удалим все ненужные столбцы/функции и оставим только эти 5 столбцов.
Шаг 5 — Проверка информации. наших данных.
movies.info()
- Как видно из изображения ниже, наши данные имеют некоторые значения NULL.
- Поэтому мы заполним эти значения NULL на следующем шаге.
Шаг 6 — Заполнение нулевых значений.
movies.fillna(‘’,inplace=True)
- Мы просто заполняем значения NULL пустым пространством.
Шаг 7 — Снова проверка информации.
movies.info()
- Теперь, если мы проверим еще раз, мы увидим, что теперь нет значений NULL.
Шаг 8 — Создание столбца под названием «Комбинированные функции».
movies[‘combined_features’] = movies[‘genres’] +’ ‘+ movies[‘keywords’] +’ ‘+ movies[‘cast’] +’ ‘+ movies[‘title’] +’ ‘+ movies[‘director’] movies.head()
- Здесь мы создали новый столбец с именем Combined_features, который будет содержать все эти объединенные функции, или мы можем сказать, что все эти строки объединены.
Шаг 9 — Обратите внимание на первую запись в столбце комбинированных функций.
movies.iloc[0][‘combined_features’]
- Вот как выглядит первая комбинированная_функция.
Шаг 10 — Инициализация CountVectorizer.
cv = CountVectorizer() count_matrix = cv.fit_transform(movies[‘combined_features’])
Здесь мы используем CountVectorizer(), чтобы преобразовать эти комбинированные функции в набор слов, потому что мы просто не можем работать со строками.
Шаг 11 — Поиск сходства между разными записями.
cs = cosine_similarity(count_matrix) cs.shape
- Здесь мы используем косинусное сходство для вычисления сходства между всеми комбинированными функциями.
- Например, мы будем вычислять сходство между 1-м и 2-м комбинированными признаками, между 2-м и 3-м, между 1-м и 3-м и т. д.
- И затем мы приходим к этой матрице 4803 X 4803, которая содержит сходство.
Шаг 12 — Две служебные функции.
def get_movie_name_from_index(index): return org_movies[org_movies['index']==index]['title'].values[0] def get_index_from_movie_name(name): return org_movies[org_movies['title']==name]['index'].values[0]
- Всего 2 полезные функции.
- Первая функция помогает в извлечении имен из индекса.
- Вторая функция помогает извлечь индекс из имени.
Шаг 13 — Печать всех названий фильмов.
print(list(movies[‘title’]))
Шаг 14 — Живой предиктор.
test_movie_name = input('Enter Movie name --> ') test_movie_index = get_index_from_movie_name(test_movie_name) movie_corrs = cs[test_movie_index] movie_corrs = enumerate(movie_corrs) sorted_similar_movies = sorted(movie_corrs,key=lambda x:x[1],reverse=True) for i in range(10): print(get_movie_name_from_index(sorted_similar_movies[i][0]))
- Просто введите название фильма, например. «Мстители».
- Получите его индекс.
- Получите его сходство со всеми другими фильмами, используя матрицу cosine_similarty.
- Просто перечислите сходства. Этот шаг просто создаст сходство, которое было похоже на [0,001, 0,2, 0,65, 0,02…] на [(0,0,001), (1,0,2), (2,0,65), (3,0,02)…]. Он просто добавит индекс перед всеми из них.
- Затем мы просто сортируем результаты на основе второго параметра выше, который был сходством (0-й индекс — это индекс, а 1-й индекс — это сходство).
- А затем распечатать первые 10.
- Мы видим, что это дает довольно хорошие результаты, поскольку если кому-то нравятся 'Мстители', ему/ей наверняка понравится Мстители: Эра Альтрона. , Железный человек 2, Капитан Америка и т. д.
Дайте мне знать, если есть какие-либо вопросы относительно системы рекомендаций фильмов, связавшись со мной по электронной почте или LinkedIn.
Чтобы узнать больше о машинном обучении, глубоком обучении, компьютерном зрении, НЛП и проектах Flask, посетите мой блог.
Для дальнейшего объяснения кода и исходного кода посетите здесь —
Итак, это все для этого блога, ребята, спасибо за то, что прочитали его, и я надеюсь, что вы возьмете что-то с собой после прочтения этого и до следующего раза 👋…