• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

선생님 fit_transform 질문드립니다.

21.11.15 01:13 작성 조회수 192

0

다항회귀 실습 중인데

1) poly = PolynomialFeatures(degree = 3).fit_transform(X)  --> 이렇게 실행하면 오류안뜸

 

2) ploy = PolynomialFeatures(degree = 3)

     poly.fit_transform(X)  -->  Expected 2D array, got scalar array instead 오류발생

 

# LinearRegression 으로 회귀계수 예측

model = LinearRegression()

model.fit(poly, y)

 

위에 적었다시피 poly.fit_transform 변환이후 model.fit 하면 오류가 안뜨는데 2)번 같은 경우 오류가 뜨네요..!

원래 fit_transform 한꺼번에 수행하는거랑 나눠서 수행하는 경우 차원 변화가 일어나나요?

 

+ 추가 질문 

사이킷런 Pipeline 으로 모델성능 실습하다가 질문드립니다

model = Pipeline([("ploy", PolynomialFeatures(degree = 3)),

                   ("linear", LinearRegression())])

 

X = np.arange(4).reshape(2,2)

y = polynomial_func(X)

 

model = model.fit(X,y)

 

여기서 질문은

("ploy", PolynomialFeatures(degree = 3) 에서  따로 transform 을 안해줘도 Pipeline 에서 자동으로 변환 해주나요??

-------------------------------

 

+ 추가 질문입니다 (실습하다 보니 질문이 늘어나네요.. ㅠㅠ)

boston 주택가격 예측 실습할때  

1) lr.fit(X_train, y_train) 식으로 train_test_split 로 데이터를 나눠서 모델 학습하는경우가 있고

2) rt_regressor.fit(feature, label) 이런식으로 모든피처와 label 을 학습하는 경우가 있는데 

 위 둘의 차이가 무엇인가요??

제가 생각하기로는 2)번 같은경우는 회귀계수를 구하기 위해 전체 데이터를 학습했다고 해석했는데 이러면 

coeff_ 메서드 같은 경우도 전체 데이터를 학습한 회귀계수라 해석해도 되나요??

 ++ 항상 좋은강의 감사드립니다 :)

답변 1

답변을 작성해보세요.

0

안녕하십니까, 

1. 아래에서 보시면 2)에서 poly가 아니라 ploy로 객체 변수를 할당하였습니다만, 혹 그것 때문 아닌지요?

1) poly = PolynomialFeatures(degree = 3).fit_transform(X)  --> 이렇게 실행하면 오류안뜸

 

2) ploy = PolynomialFeatures(degree = 3)

     poly.fit_transform(X)  -->  Expected 2D array, got scalar array instead 오류발생

 

2. 여기서 질문은

 

("ploy", PolynomialFeatures(degree = 3) 에서  따로 transform 을 안해줘도 Pipeline 에서 자동으로 변환 해주나요??

=> 네, 맞습니다. pipeline에서 PolynomialFeatues와 같은 Transformer 객체들을 fit()을 하면 자동으로 transform()을 적용해 줍니다. 

 

3.

1) lr.fit(X_train, y_train) 식으로 train_test_split 로 데이터를 나눠서 모델 학습하는경우가 있고

2) rt_regressor.fit(feature, label) 이런식으로 모든피처와 label 을 학습하는 경우가 있는데 

 위 둘의 차이가 무엇인가요?? 제가 생각하기로는 2)번 같은경우는 회귀계수를 구하기 위해 전체 데이터를 학습했다고 해석했는데 

=> 네, 맞습니다. 큰 차이는 없고 2)의 경우는 큰 의미가 있다기 보다는 전체 데이터 기반으로 전반적인 회귀 계수를 구해보기 위함입니다. 

coeff_ 메서드 같은 경우도 전체 데이터를 학습한 회귀계수라 해석해도 되나요??

=> 네, 전체 데이터로 학습했으면, 전체 데이터를 기준으로한 회귀 계수가 coef_ 속성으로 저장됩니다. 

 

감사합니다.