inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 파이썬 머신러닝 완벽 가이드

아이템기반 최근접 이웃 협업필터링 영화 추천 구현 실습

predict_rating_topsim함수

324

tnwjdrms

작성한 질문수 10

0

predict_rating_topsim을 강사님이 작성하신 함수를 보고 조금 수정해서 작성해봤는데요.. mse계산을 하면 다르게 나와서 무엇이 잘못된건지 알고싶습니다!!

*****강사님 코드******

def predict_rating_topsim(ratings_arr, item_sim_arr, n=20):

    # 사용자-아이템 평점 행렬 크기만큼 0으로 채운 예측 행렬 초기화

    pred = np.zeros(ratings_arr.shape)

    # 사용자-아이템 평점 행렬의 열 크기만큼 Loop 수행. 

    for col in range(ratings_arr.shape[1]):

        # 유사도 행렬에서 유사도가 큰 순으로 n개 데이터 행렬의 index 반환

        top_n_items = [np.argsort(item_sim_arr[:, col])[:-n-1:-1]]

        # 개인화된 예측 평점을 계산

        for row in range(ratings_arr.shape[0]):

            pred[row, col] = item_sim_arr[col, :][top_n_items].dot(ratings_arr[row, :][top_n_items].T) 

            pred[row, col] /= np.sum(np.abs(item_sim_arr[col, :][top_n_items]))        

    return pred

******다르게 작성해본 코드******

        

def predict_rating_topsim(ratings_arr, item_sim_arr, n=20):

    # 미리 0으로 초기화된 행렬만들어놓자

    pred = np.zeros(ratings_arr.shape)

    

    for col in range(ratings_arr.shape[1]):

        top_n_items = [np.argsort(item_sim_arr[:,col])[-n: ]]

        for row in range(ratings_arr.shape[0]):

            pred[row,col] = ratings_arr[row, :][top_n_items].dot(item_sim_arr[: ,col][top_n_items].T)

            pred[row,col] /= np.sum(np.abs(item_sim_arr[col, : ][top_n_items]))

            return pred

바꾼부분을 bold처리 해놨습니다.

첫번째 부분은 유사도가 가장 높은 20개를 가져오는 것이라 [-n: ]으로 바꿨습니다

두번째 부분은 내적부분을 수정했습니다. 

그렇게 한뒤 mse를 측정해보면

ratings_pred = predict_rating_topsim(ratings_matrix.values , item_sim_df.values, n=20)

print('아이템 기반 인접 TOP-20 이웃 MSE: ', get_mse(ratings_pred, ratings_matrix.values ))의 출력결과가

이이와같습니다

머신러닝 배워볼래요? 통계 python

답변 1

0

권 철민

안녕하십니까,

테스트 해보니, 저는 변경한 함수와 기존 함수가 동일한 값을 반환하고 있습니다.

커널을 재 기동하고 다시한번 테스트 해보심이 어떠신지요?

감사합니다.

안녕하세요 열심히 수강중인 학생입니다

0

60

2

정수 인덱싱

0

68

2

넘파이 오류

0

83

2

11강 numpy의 axis 축 질문 드립니다.

0

85

2

Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.

0

77

2

Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.

0

69

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

75

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

64

2

5강 강의 오류가 있어요.

0

83

1

실무에서 LTV 관련 모델 선택 질문입니다!

0

72

2

14강 강의 듣는중에 궁금한게 있어서 질문합니다~

0

69

3

파이썬 다운그레이 후 사이킷런 재설치

0

116

2

좋은 강의 감사합니다.

0

72

2

scoring 함수 음수값

0

67

2

6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?

0

99

2

분류 평가 정확도 예측

0

76

2

안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.

0

98

1

카카오톡 채널 있나요

0

106

1

혹시 강의에서 사용하시는 ppt 받을 수 있는건가요

0

189

2

pca 스케일링 관련하여 질문드립니다.

0

100

2

주피터 대신 구글 코랩

0

171

2

강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?

0

146

2

실루엣 스코어..

0

84

2

float64 null 값 처리 방법

0

102

2