강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của thep
thep

câu hỏi đã được viết

(CẬP NHẬT) Hệ thống gợi ý cá nhân hóa sử dụng Python | Thuật toán gợi ý | Trí tuệ nhân tạo gợi ý

Khuyến nghị theo nhóm người dùng

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

Đã giải quyết

Viết

·

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

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

딥러닝추천-시스템

Câu trả lời 1

0

거친코딩님의 프로필 이미지
거친코딩
Người chia sẻ kiến thức

안녕하세요.

거친코딩입니다 🙂

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

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

감사합니다.

거친코딩 드림

thep님의 프로필 이미지
thep
Người đặt câu hỏi

답변 감사합니다!

연속으로 실행시키면 나는 오류였습니다.
한번 실행 시킨뒤엔 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']]

 

Hình ảnh hồ sơ của thep
thep

câu hỏi đã được viết

Đặt câu hỏi