작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
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)