1219
[17주차 - Day3] Recommendation system
아이템 기반 협업 필터링 실습
# 더미 데이터 사용
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
dummy_rating = pd.read_csv("https://grepp-reco-test.s3.ap-northeast-2.amazonaws.com/dummy_rating.csv", index_col=0)
dummy_rating.head()
dummy_rating = dummy_rating.T
dummy_rating.fillna(0, inplace=True)
dummy_rating
# 평점 정보를 보정. 이후에 코사인 유사도를 사용하면 피어슨 유사도에 해당
def standardize(row):
new_row = (row - row.mean())/(row.max()-row.min())
return new_row
# 행렬을 transpose해서 데이터프레임 생성
dummy_rating_std = dummy_rating.apply(standardize)
dummy_rating_std.head()
# 아이템간의 유사도 측정 행렬 만들기
corrMatrix = pd.DataFrame(cosine_similarity(dummy_rating_std), index = dummy_rating.index, columns=dummy_rating.index)
corrMatrix
def get_similar(movie_name):
# 주어진 영화 이름에 해당하는 유사도 컬럼을 읽어서 평점 정보에 rating를 곱함
similar_score = corrMatrix[movie_name]
#앞서 보정된 값을 가지고 평점의 내림차순으로 정렬
similar_score = similar_score.sort_values(ascending=False)
return similar_score
movie_i_liked = 'scifi1'
# 3개의 영화 평점을 가진 사용자를 기반으로 비슷한 아이템을 찾아보자
similar_scores = pd.DataFrame(get_similar(movie_i_liked))
similar_scores
'프로그래머스 데브 코스 > TIL' 카테고리의 다른 글
[6기] 프로그래머스 인공지능 데브코스 112일차 TIL (1) | 2023.12.21 |
---|---|
[6기] 프로그래머스 인공지능 데브코스 111일차 TIL (0) | 2023.12.20 |
[6기] 프로그래머스 인공지능 데브코스 109일차 TIL (0) | 2023.12.18 |
[6기] 프로그래머스 인공지능 데브코스 108일차 TIL (1) | 2023.12.17 |
[6기] 프로그래머스 인공지능 데브코스 107일차 TIL (0) | 2023.12.16 |