강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

thep のプロフィール画像
thep

投稿した質問数

(UPDATED) Pythonを利用したパーソナライズ推薦システム | 推薦アルゴリズム | 推薦人工知能

ユーザー グループ別の推奨

사용자 집단별 추천 강의 11:56 부분에 성별에 따른 예측값 계산에서 MergeError가 발생합니다.

解決済みの質問

作成

·

431

0

 

# 성별에 따른 예측값 계산
merged_ratings = pd.merge(x_train,users)

users = users.set_index('user_id')

g_mean = merged_ratings[['movie_id','sex','rating']].groupby(['movie_id', 'sex'])['rating'].mean()
g_mean


코드는 이렇게 작성했고요.

merged_ratings = pd.merge(x_train,users)
이 부분에서

MergeError: No common columns to perform merge on. Merge options: left_on=None, right_on=None, left_index=False, right_index=False

이런 에러가 발생해요. 강의랑 똑같이 했는데 왜 에러가 나는걸까요? ㅠ ㅠ

딥러닝추천-시스템

回答 1

0

거친코딩님의 프로필 이미지
거친코딩
インストラクター

안녕하세요.

거친코딩입니다 🙂

간단히 에러를 살펴보면 머지 하실때 공통 컬럼이 없다고 뜨는데, x_train과 users를 프린트문으로 찍어보시고 컬럼명이 일치하시는지 확인 부탁드립니다.

혹은 머지 하시려는 키가 인덱스로 잡혀있을수 있으니 해당부분도 참고부탁드립니다.

감사합니다.

거친코딩 드림

thep님의 프로필 이미지
thep
質問者

답변 감사합니다!

연속으로 실행시키면 나는 오류였습니다.
한번 실행 시킨뒤엔 users = users.set_index('user_id') 이 코드로 users가 달라져서 아래 코드를 실행한 뒤 다시 실행시키니 잘 동작합니다. 감사합니다!

# 데이터 읽어오기(user, item, data)
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')

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','Animat ion', 'Children\'s','Comedy','Crime','Documentary ','Drama','Fantasy',
          'Film- Noir','Horror','Musical','Mystery','Romance ','Sci-Fi','Thriller','War','Western']
movies = pd.read_csv(u_item_src,
                     sep='|',
                     names=i_cols,
                     encoding='latin-1')

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 DataFrame에서 timestamp 제거
ratings = ratings.drop('timestamp', axis=1)
movies = movies[['movie_id', 'title']]

 

thep のプロフィール画像
thep

投稿した質問数

質問する