-
카테고리
-
세부 분야
딥러닝 · 머신러닝
-
해결 여부
미해결
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
윤선미
지식공유자2021.03.02
질문 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]가 있어요. 클릭하면 이 함수가 어떻게 구현이 되어있는지를 직접 볼 수 있습니다.
공부하시는데 도움이 되었으면 좋겠어요. 강의를 적극적으로 들어주셔서 감사합니다!
답변 1