• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

넘파이 행렬로 변환

21.05.08 21:22 작성 조회수 114

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

정말 감사합니다!! 답변 한글자 한글자 다 이해가 되었습니다!!