인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

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

2장 사용자집단별 추천 코드 질문

해결된 질문

작성

·

248

0

안녕하세요

좋은 강의 감사합니다.

2장 사용자집단별 추천 부분 코드 질문이 있어서 문의드립니다.

def score(model):
    id_pairs = zip(x_test['user_id'], x_test['movie_id'])
    y_pred = np.array([model(user,movie) for (user, movie) in id_pairs]) 
    y_true = np.array(x_test['rating'])  
    return RMSE(y_true, y_pred)

부분에서요

id_pairs는 25000개 인데, 코드를 돌리고 y_pred나 y_true를 출력해보면 168개밖에 안나오더라고요. 이게 무슨 이유 때문인지 잘 이해가 가지 않는데 설명이 가능하실까요?

 

감사합니다!

답변 1

0

거친코딩님의 프로필 이미지
거친코딩
지식공유자

안녕하세요. 거친코딩입니다.

질문주신 코드를 제가 다시 확인해봤는데,

제 코드 쪽에서는 y_pred의 경우 25,000개가 정상적으로 나옵니다.

코드에 오류가 없는지 확인이 가능하실까요?

아래는 강의 내용에 나와있는 코드 자료입니다.

감사합니다.

거친코딩 드림.

# 데이터 train, test set 분리
from sklearn.model_selection import train_test_split
import numpy as np
x = ratings.copy()
y = ratings['user_id']

x_train,x_test,y_train,y_test = train_test_split(x,y,
                                                 test_size=0.25,
                                                 stratify=y)

# 정확도(RMSE)를 계산하는 함수
def RMSE(y_true,y_pred):
  return np.sqrt(np.mean((np.array(y_true) - np.array(y_pred))**2))

# 모델별 RMSE를 계산하는 함수
def score(model):
  id_pairs = zip(x_test['user_id'],x_test['movie_id'])
  y_pred = np.array([model(user,movie) for (user,movie) in id_pairs])
  y_true = np.array(x_test['rating'])
  return RMSE(y_true,y_pred)

# best_seller 함수를 이용한 정확도 계산
train_mean = x_train.groupby(['movie_id'])['rating'].mean()
def best_seller(user_id,movie_id):
  try:
    rating = train_mean[movie_id]

  except:
    rating = 3.0
  return rating

score(best_seller)

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기