🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

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

23.04.29 21:51 작성 조회수 206

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)
채널톡 아이콘