inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(UPDATED) Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능

(재업)인기제품 추천방식 결과가 달라요

해결된 질문

190

Code_Slave

작성한 질문수 10

2

인기 제품 추천 방식 코드를 보고 따라쳤는데, 강사님이랑 결과(movie_id)가 다른데 왜 그런건가요?

#사용자 u.user 파일을 DataFrame으로 읽기
import os
import pandas as pd
base_src = 'drive/MyDrive/RecoSys/Data'
u_user_src = os.path.join(base_src,'u.user')
u_cols = ['user_id','age','sex','occupation','zip_code']
users = pd.read_csv(u_user_src,
                    sep='|',
                    names=u_cols,
                    encoding='latin-1')
users = users.set_index('user_id')
users.head()

# u.item 파일을 DataFrame으로 읽기
u_item_src = os.path.join(base_src,'u.item')
i_cols = ['movie_id','title','release date','video release date',
          'IMDB URL','unknown','Action','Adventure','Animation',
          'Children\'s','Comedy','Crime','Documentary,','Drama','Fantasy',
          'FilmNoir','Horror','Musical','Mystery','Romance', 'Sci-Fi','Thriller','War','Western']
movies = pd.read_csv(u_item_src,
                     sep='|',
                     names=i_cols,
                     encoding='latin-1')
movies = movies.set_index('movie_id')
movies.head()

 #u.data 파일을 DataFrame으로 읽기
u_data_src = os.path.join(base_src,'u.data')
r_cols = ['user_id', 'movie_id','rating','timestamp']
ratings = pd.read_csv(u_data_src,
                      sep = '\t',
                      names = r_cols,
                      encoding='latin-1')
ratings = ratings.set_index('user_id')
ratings.head()

#인기 제품 추천 방식 Function
def recom_movie(n_items):
  movie_mean = ratings.groupby(['movie_id'])['rating'].mean()
  movie_sort = movie_mean.sort_values(ascending=False)[:n_items]
  recom_movies = movies.loc[movie_sort.index]
  recommendations = recom_movies['title']
  return recommendations

recom_movie(5)

딥러닝 추천-시스템

답변 1

1

거친코딩

안녕하세요.

거친코딩입니다.

저 또한 새롭게 코드를 돌려보았을 때 학습자님처럼 같은 결과값이 나왔습니다.

그런데 자세히 보니, 해당 부분이 다르게 나온 이유는 코랩 쪽에서 데이터를 보여주는 우선 순위(그들만의 글자 순)으로 보여주는 것 같았습니다.

쉽게 말해서 코드로 말씀드리면 아래와 같습니다.

1순위~10순위가 5.0으로 동일하게 점수를 배정받고 있기 때문에, 단순히 5개를 찍히는 것은 코랩쪽에서 보여지는 규칙인 것 같습니다.

나중에 향후 비즈니스에서는 이러한 동점이 나온 상황에서는 룰 베이스(각자 비즈니스 도메인)에 맞게 처리하시면 될 것 같습니다.

감사합니다.

-거친코딩 드림-

movie_mean = ratings.groupby(['movie_id'])['rating'].mean()
movie_sort = movie_mean.sort_values(ascending=False)[:10]
movie_sort
 

model.predict 의 결과 값 index가 왜 movie id ?

0

416

3

model.predict에 특정 user id로 상위 movie 5개 출력?

0

394

3

새로운 회원이 선택한 영화를 모델로 넘기는 방법 질문

0

311

1

올려주신 파일과 sparse matrix

0

346

1

Unable to allocate 55.9 GiB for an array with shape (25000, 100000, 3) and data type int64

0

1007

3

사용자 집단별 추천 코드

0

255

1

무비렌즈 최신 데이터를 이용하고싶은데요~

1

332

2

추천시스템의 이진데이터 적용

1

345

1

평가 관련

1

273

1

딥러닝 추천시스템 변수추가 부분 코드 관련 질문입니다.

1

3541

1

딥러닝을 위한 추천시스템 원핫 인코딩 질문

0

292

1

CF_knn_bias 실습에서 not in index error 발생합니다.

0

718

3

MergeError가 납니다

0

569

2

sparse matrix를 추천 알고리즘에 적용하기에서

0

289

1

코드 오류 질문입니다!

1

611

3

코드를 똑같이 따라햇을때

1

378

1

강의자료는 어디서 다운로드 받을 수 있나요?

0

324

1

train,test 분리 MF알고리즘에서 결과가 출력이 안되요 ㅠㅠ

1

398

1

알고리즘을 프로젝트에서 써보고 싶은데요

1

205

1

ML 방식 모델 활용방안에 대해서

1

252

1

그 외의 CF 정확도 개선방법에서

1

185

1

화면이 안나오는데 정상인가요?

1

215

1

아이템 기반 CF 코드 질문

1

311

3

실시간 처리 질문

1

209

1