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
유사도 행렬에서 유사도가 큰 순으로 n개 데이터 행렬의 index를 반환하는 코드에서 볼드처리된 부분이 어떤 것을 의미하는지 헷갈려서 질문드립니다ㅠㅠ
유사도 행렬에서 col에 해당하는 영화의 유사도 값을 큰 순으로 내림차순하는데 중간에 -n-1이 어떤 의미로 첨가된 것인지 알고싶습니다.