-
카테고리
-
세부 분야
딥러닝 · 머신러닝
-
해결 여부
미해결
predict_rating_topsim 함수 내 코드 질문
21.05.24 16:59 작성 조회수 109
0
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이 어떤 의미로 첨가된 것인지 알고싶습니다.
답변을 작성해보세요.
0
0
권 철민
지식공유자2021.05.24
역순으로 array을 가져올 때(즉 맨 뒤 array 값 부터 가져올 때) array[:-n-1:-1]을 적용합니다
역순으로 20개 array를 가져 올때는 array[:-21:-1], 역순으로 19개 array를 가져올 때는 array[:-20:-1] 을 적용합니다. 아래 코드로 테스트 해보시면 됩니다.
import numpy as np
arr1 = np.arange(0, 20)
arr_reversed_1 = arr1[:-10:-1]
arr_reversed_2 = arr1[:-11:-1]
print(arr_reversed_1, arr_reversed_2)
답변 2