머신러닝의 모든 것 ( Sectioin 8 : 다항식 회귀)

이정빈·2023년 8월 4일
0

다항식 회귀도 선형 회귀이다. 왜냐하면 x(1)이런 곳에 제곱이 있어도 결국에는 계수찾기 (b(1))이기 때문에 계수에 따라 선형, 비선형으로 나뉜다.
(이론적인 부분은 추가로 공부해야겠다. 유데미에서 이론적인 부분은 되게 약한 것 같다)

이번 Section에서는 선형적인 것과 다항식 회귀를 나눠서 비교한다.
즉, 다항식 회귀가 더 정확한 것을 보여준다.

1. 라이브러리 가져오기

2. 데이터 전처리

3. 단순 선형 모델 구현


이전과 모두 동일하고, 다른 점은 데이터를 한 번 살펴보자

데이터를 보면 매우 적은 상황이다. 그리고 무슨 값을 Test해야 알기 때문에 굳이 Train,Test셋을 나눌 필요가 없다.

그리고 첫 번째 열도 쓸 필요가 없기 때문에 이를 잘 고려해주자.

4. 다항 선형 모델 구현

from sklearn.preprocessing import PolynomialFeatures

다항식으로 구현하기 위해 Polynomial Freatures 라이브러리를 가져온다.

poly_reg=PolynomialFeatures(degree=4)

poly_reg는 앞선 라이브러리에서 인자를 받아 생성되는데, degree는 제곱 수라고 표현된다.
b+bx^1+bx^2 .. 이것이 4제곱까지 간다고 이해하면된다.
즉, degree가 커질수록 더 정확해진다.

X_poly=poly_reg.fit_transform(X)

degree가 4인 식에 주어진 데이터 X를 가공했다고 이해하자

lin_reg_2=LinearRegression()
lin_reg_2.fit(X_poly,y)

새로운 모델을 만들어주고 이 모델은 X_poly의 데이터를 기반으로 훈련된 것이다.

5. 단순 선형 모델 시각화

6. 다항 선형 모델 시각화

plt.plot(X,lin_reg_2.predict(poly_reg.fit_transform(X)),color='blue')

추세선을 만들때, 기본 X에 대하여 값이 나오니깐 Y를 잘 고려해야 할 것이다.
Y는 앞서 만든 모델, lin_reg_2를 사용하여 predict예측한다.
어떤 데이터를 예측하냐?? poly_reg 인자에 X를 변환시킨 데이터!

7. 다항 선형 모델 최적 시각화

X_grid=np.arange(min(X),max(X),0.1)
X_grid=X_grid.reshape((len(X_grid),1))

더 부드럽게 만들어주는건데, 1을 0.1로 이렇게 더 촘촘하게 만드는 것이고 데이터가 충분하지 않을 때 사용하면 될 것 같다.

8. 예측

lin_reg.predict([[6.5]])

선형 모델을 예측했는데, 당연히 값이 비정상적으로 나왔다.
[[6.5]]는 대괄호를 두 번 사용하여 2차원으로 나타냈다.

lin_reg_2.predict(poly_reg.fit_transform([[6.5]]))

복습하자.
모델이 예측할 데이터는 degree가 4인 인자에 내가 원하는 데이터!
비슷하게 결과가 나옴을 알 수 있다.

0개의 댓글