Python의 추천 시스템 예시

WBOY
풀어 주다: 2023-06-10 08:51:15
원래의
1999명이 탐색했습니다.

Python은 현재 매우 인기 있는 프로그래밍 언어입니다. 강력한 라이브러리 시스템과 배우기 쉬운 구문으로 인해 다양한 애플리케이션을 개발하는 데 가장 먼저 선택됩니다. 기계 학습 분야에서 Python은 일반적으로 사용되는 프로그래밍 언어이기도 합니다. 이 기사에서는 Python을 사용하여 추천 시스템을 구축하는 예를 소개합니다.

추천 시스템은 과거 행동, 관심사 및 기타 정보를 기반으로 사용자에게 제품, 콘텐츠 또는 서비스를 추천하는 알고리즘 및 애플리케이션을 의미합니다. 추천 시스템은 전자상거래, 소셜 미디어, 뉴스 읽기 및 기타 분야에서 널리 사용됩니다. Python은 추천 시스템을 구축하는 데 사용할 수 있는 일부 라이브러리와 프레임워크를 제공합니다.

1. 추천 시스템의 종류

추천 시스템은 크게 콘텐츠 기반 추천과 협업 필터링 추천의 두 가지 유형으로 나뉩니다.

콘텐츠 기반 추천은 사용자의 과거 관심분야와 취미, 상품의 속성을 바탕으로 유사한 상품을 추천하는 것입니다. 이 방법을 사용하려면 제품의 특성을 분석해야 합니다. 텍스트 처리 라이브러리 NLTK 또는 Scikit-learn을 사용하여 제품 이름 및 설명과 같은 제품 속성의 텍스트 정보를 처리할 수 있습니다.

협업 필터링 추천은 사용자의 과거 행동 데이터를 기반으로 사용자 간의 관계를 찾아내고 사용자가 관심을 가질 만한 상품을 추천하는 것입니다. 협업 필터링 추천에는 사용자 기반 협업 필터링과 항목 기반 협업 필터링이라는 두 가지 주요 접근 방식이 있습니다.

사용자 기반 협업 필터링은 사용자 간의 유사성을 기반으로 추천, 즉 현재 사용자와 비슷한 관심사를 가진 다른 사용자를 찾고, 해당 사용자가 좋아하는 제품을 기반으로 현재 사용자에게 제품을 추천합니다. 이 방법을 사용하려면 사용자 간의 유사성을 계산해야 하며 Scikit-learn에서 cosine_similarity를 ​​사용하여 코사인 유사성을 계산할 수 있습니다.

아이템 기반 협업 필터링은 아이템 간의 유사도를 기반으로 추천을 합니다. 즉, 현재 사용자가 좋아하는 아이템과 유사한 아이템을 찾아 현재 사용자에게 유사한 아이템을 추천합니다. 이 방법을 사용하려면 항목 간의 유사성을 계산해야 합니다. Scikit-learn에서 pairwise_distances를 사용하여 유클리드 거리 또는 코사인 거리를 계산할 수 있습니다.

2. 추천 시스템의 예

다음으로 Python을 사용하여 항목 기반 협업 필터링 추천 시스템을 구축하는 예를 소개하겠습니다.

먼저 데이터를 준비해야 합니다. 영화 ID, 사용자 ID, 평점 등의 정보가 포함된 영화 평점 데이터 세트를 선택합니다. Pandas 라이브러리를 사용하여 데이터를 읽고 처리할 수 있습니다. 다음은 코드 예시입니다.

import pandas as pd
ratings_data = pd.read_csv('ratings.csv')
movies_data = pd.read_csv('movies.csv')
로그인 후 복사

다음으로 데이터를 전처리하고 필요한 정보를 추출해야 합니다. 영화 ID를 영화 이름에 매핑하고 사용자 ID를 레이블에 매핑해야 합니다. 다음은 코드 예입니다.

# 将电影ID映射为电影名称
movie_names = {}
for index, row in movies_data.iterrows():
    movie_names[row['movieId']] = row['title']

# 将用户ID映射为标号
user_ids = {}
user_counter = 0
for index, row in ratings_data.iterrows():
    user_id = row['userId']
    if user_id not in user_ids:
        user_ids[user_id] = user_counter
        user_counter += 1
로그인 후 복사

그런 다음 영화 등급 매트릭스를 구축해야 합니다. 매트릭스의 행은 사용자를 나타내고 열은 영화를 나타내며 매트릭스의 각 요소는 영화에 대한 사용자의 등급을 나타냅니다. 행렬에 몇 가지 누락된 값이 있는데, 이는 해당 영화가 사용자에 의해 평가되지 않았음을 나타냅니다. 채우기 메소드를 사용하여 이러한 누락된 값을 채워야 합니다. 코드 예시는 다음과 같습니다.

import numpy as np
n_users = len(user_ids)
n_movies = max(movie_names.keys())
rating_matrix = np.zeros((n_users, n_movies))
for index, row in ratings_data.iterrows():
    user_id = row['userId']
    movie_id = row['movieId']
    rating = row['rating']
    rating_matrix[user_ids[user_id], movie_id] = rating

# 使用均值填充缺失值
mean_ratings = np.zeros((n_users,))
for i in range(n_users):
    ratings = rating_matrix[i, :]
    ratings = ratings[ratings > 0]
    mean_ratings[i] = ratings.mean()
    rating_matrix[i, ratings == 0] = mean_ratings[i]
로그인 후 복사

그런 다음 영화 간의 유사성 행렬을 계산해야 합니다. 이는 유클리드 거리 또는 코사인 거리를 계산하기 위해 Scikit-learn의 pairwise_distances 함수를 사용하여 계산할 수 있습니다. 여기서는 코사인 거리를 선택합니다. 코드 샘플은 다음과 같습니다.

from sklearn.metrics.pairwise import pairwise_distances
movie_similarity = 1 - pairwise_distances(rating_matrix.T, metric='cosine')
로그인 후 복사

마지막으로 사용자에게 영화를 추천해야 합니다. 사용자가 좋아하는 영화와 유사한 영화를 기반으로 추천해 드릴 수 있습니다. 다음은 코드 예시입니다.

# 找到用户最喜欢的电影
user_id = 0
user_ratings = rating_matrix[user_id, :]
fav_movie = np.argmax(user_ratings)
print('用户 %d 最喜欢的电影是 %s' % (user_id, movie_names[fav_movie]))

# 根据相似度找到相似的电影
similar_movies = movie_similarity[fav_movie, :]
top_k = 5
top_k_movies = np.argsort(similar_movies)[::-1][:top_k]
for i, movie_id in enumerate(top_k_movies):
    print('Top %d 推荐电影是 %s' % (i+1, movie_names[movie_id]))
로그인 후 복사

위는 항목 기반 협업 필터링 추천 시스템의 Python 예시입니다.

요약

추천 시스템은 널리 사용되는 기계 학습 애플리케이션입니다. Python은 개발자가 추천 시스템을 빠르게 구축하는 데 도움이 되는 풍부한 라이브러리와 프레임워크를 제공합니다. 이 기사에서는 Python을 사용하여 항목 기반 협업 필터링 추천 시스템을 구축하는 방법에 대한 예를 소개합니다. 독자들에게 도움이 되기를 바랍니다.

위 내용은 Python의 추천 시스템 예시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿