1215
[17주차 - Day2] 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.fillna(0, inplace=True)
dummy_rating
> 더미 데이터를 불러오고 NaN 값들을 0으로 채워 준다
def standardize(row):
new_row = (row - row.mean())/(row.max() - row.min())
return new_row
dummy_rating_std = dummy_rating.apply(standardize)
dummy_rating_std.head()
> 확인하기 쉽게 값을 -1 ~ +1 사이의 값으로 바꾸어 준다
corrMatrix_wo_std = pd.DataFrame(cosine_similarity(dummy_rating), index=dummy_rating.index, columns=dummy_rating.index)
corrMatrix_wo_std
corrMatrix = pd.DataFrame(cosine_similarity(dummy_rating_std), index=dummy_rating.index, columns=dummy_rating.index)
corrMatrix
> 값 변형한 것과 아닌 것의 결과물을 직접 비교해 보자 (아래의 경우가 훨씬 분석하기 좋다)
def get_similar(userId):
similar_score = corrMatrix[userId]
similar_score = similar_score.sort_values(ascending=False)
return similar_score
scifi_lover = "user1"
similar_users = get_similar(scifi_lover)
similar_users.head(10)
> user1이라는 아이디를 가진 유저와 흡사한 사람 순으로 유저 불러오기(score가 높을수록 흡사한 것)
'프로그래머스 데브 코스 > TIL' 카테고리의 다른 글
[6기] 프로그래머스 인공지능 데브코스 108일차 TIL (1) | 2023.12.17 |
---|---|
[6기] 프로그래머스 인공지능 데브코스 107일차 TIL (0) | 2023.12.16 |
[6기] 프로그래머스 인공지능 데브코스 105일차 TIL (0) | 2023.12.14 |
[6기] 프로그래머스 인공지능 데브코스 104일차 TIL (0) | 2023.12.13 |
[6기] 프로그래머스 인공지능 데브코스 103일차 TIL (0) | 2023.12.12 |