인프런 커뮤니티 질문&답변
넘파이 행렬로 변환
작성
·
221
0
##아이템 기반 인접 이웃 협업 필터링으로 개인화된 영화 추천
1)
def predict_rating(ratings_arr, item_sim_arr ):
ratings_pred = ratings_arr.dot(item_sim_arr)/ np.array([np.abs(item_sim_arr).sum(axis=1)])
return ratings_pred
2)
ratings_pred = predict_rating(ratings_matrix.values , item_sim_df.values)
ratings_pred_matrix = pd.DataFrame(data=ratings_pred, index= ratings_matrix.index,
columns = ratings_matrix.columns)
print(ratings_pred_matrix.shape)
ratings_pred_matrix.head(3)
------------------------------------------
이 코드에서 ratings_arr과 item_sim_arr이 각각 rating_matrix와 item_sim_df를 넘파이 행렬로 변환시킨 값이라고 책에서 설명하셨는데, 이 부분이 잘 이해가 가지 않습니다.
데이터프레임을 넘파이로 변환시킬때, 주로 .values를 사용하는 것으로 알려져있고, 2) 부분의 코드에서 ratings_matrix.values와 item_sim_df.values를 적용하는 것으로 책에 나와있습니다.
ratings_arr과 item_sim_arr처럼 뒤에 _arr이 붙으면 넘파이값으로 변형이 되는것인가요?
ratings_arr과 item_sim_arr을 넘파이값으로의 정의를 이전에 해주어야 하는 거 아닌가요? 근데 책의 코드에는 따로 ratings_arr과 item_sim_arr을 정의해 주는 부분없이 그냥 바로 def 함수를 적용하더라구요.
수업을 듣다가 아무리 구글링을 해도 이해가 가지 않아..두서없이 질문드립니다..
답변 기다리겠습니다. 감사합니다.
퀴즈
온라인 쇼핑몰에서 추천 시스템이 중요한 주된 이유는 무엇일까요?
웹사이트 로딩 속도 향상
상품을 알파벳 순으로 자동 정렬
결제 과정을 단순화
많은 상품 중 사용자에게 관련 상품을 추천
답변 2
1
안녕하십니까,
파이썬 프로그램이 변수의 타입을 지정하지 않다보니, 그렇게 이해하실 수도 있겠군요.
def predict_rating(ratings_arr, item_sim_arr ) 함수 에서 인자로 선언된 ratings_arr, item_sim_arr은 호출시에 numpy array로 입력이 된다는 것입니다.
ratings_pred = ratings_arr.dot(item_sim_arr)/ np.array([np.abs(item_sim_arr).sum(axis=1)])
은 ratings_arr, item_sim_arr이 numpy array로 입력된다고 가정하고, dot(), abs(), sum() 연산을 수행하였습니다.
그리고 호출 시에 predict_rating(ratings_matrix.values , item_sim_df.values)로 numpy array를 입력했습니다. 즉 ratings_arr=ratings_matrix.values, item_sim_arr = item_sim_df.values 로 할당이 됩니다.
그리고 함수 선언시에 아래와 같이 인자의 타입을 지정할 수 있습니다.
def predict_rating(ratings_arr: np.array, item_sim_arr: np.array )
감사합니다.
0





