• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

predict 를 직접 구하는 방법에 대한 질문

21.02.24 15:31 작성 조회수 274

1

질문1)

질문1-1) 

reg.predict(x_test) 할 때 x_test의 각각의 genre_cols(독립변수)들을 reg가 어떻게 찾는지 궁금합니다.

reg.coef_ 해보면 array로 나와서 그냥 순서로 보는건지 아닌지가 헷갈려서 그렇습니다.

질문1-2) 만약 reg의 각 coef_에 column(독립변수) 정보가 있어서 그걸로 매칭하는 거라면 그 정보는 어떻게 확인하고 어떻게 접근하는지 궁금합니다.

질문1-3) 만약 reg의 coef_순서와 x_test cols의 순서를 매칭해서 계산한다면 테스트셋과 reg의 독립변수의 순서가 항상 동일하다는 가정하에 진행하는 건지 그래서 항상 순서가 엉키지 않도록 구성해야하는 건지 궁금합니다.

질문2)

비슷한 질문인데요 

predict = reg.predict(x_test) 의 return 으로 

   [array, shape (n_samples,)] predicted values. 

가 온다는데 

predict가 array 형식이라면 rmse 계산을 위해 mean_squeared_error(y_test, predict) 할 때 이것도 movie 순서로 비교하는 것인지 그렇다면 두 인자가 같은 영화에 대한 평점을 비교할 것이라고 어떻게 보장하는지 궁금합니다. 

(질문1과 다르게 같은 테스트 셋을 역할에 맞게 쪼갠 거(x_test, y_test)라서 순서가 어느정도 보장될 거 같기는 합니다.)

질문3)

사실 질문1, 2는 아래와 같이 reg.predict() 대신 직접 구하려다보니 생긴 질문이었는데요.

두 세트(reg.coef, x_test)를 컬럼의 순서로 매칭을 시키고 그 순서가 보장됐다는 가정 하에 아래와 같이 짜보았고 값도 predict 함수와 같은 값을 잘 구할 수 있었습니다.

predict = []
for i in range(len(x_test)):
  result = reg.intercept_
  for y in range(0, len(genres.columns)):
    result +=  x_test.iloc[i, y] * reg.coef_[y]
  predict.append(result)
predict

질문3-1)

직접 짤 경우에 이렇게 짜는게 맞는지 궁금합니다. 맞다면 독립변수 순서가 다르면 안 돼서 안전하게 columns sorting을 하는게 좋겠죠?

질문3-2)

제가 위에를 직접 짜기 위해서 dataFrame for문 돌리는 거 하나하나 다 찾아봐서 제가 원하는 형식의 loop를 찾아서 하기는 했는데요.

직접 predict를 만들고 싶은 경우에 loc나 다른 for문이나 groupby나 사용해서 저것보다 더 간단하게 하는 방법이 있는지도 궁금합니다.

답변 1

답변을 작성해보세요.

1

질문 1, 2)

컬럼과 로우의 순서에 따라 계산합니다.

https://stackoverflow.com/questions/51663071/sklearn-fit-vs-predict-order-of-columns-matters

질문 3)

sklearn의 linear_model에서 predict를 어떻게 구현하고 있는지 직접 보시는게 도움이 될 것 같습니다 :)

https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

에서, predict에 대한 설명으로 가시면 오른쪽에 [source]가 있어요. 클릭하면 이 함수가 어떻게 구현이 되어있는지를 직접 볼 수 있습니다.

공부하시는데 도움이 되었으면 좋겠어요. 강의를 적극적으로 들어주셔서 감사합니다!