k-최근접 이웃 회귀 알고리즘으로 훈련된 모델을 통해 길이가 긴 농어의 무게를 예측해보았다.
1) k-최근접 이웃 회귀 알고리즘으로 농어 무게 예측하기
길이가 50cm인 농어의 무게를 1,033g으로 예측하였다.
근데 실제로는 무게가 더 나간다고 하니, 예측이 잘못되었다는 것일까?
2) 최근접 이웃을 산점도에 표기하기
어떤 이웃들을 통해서 무게를 예측하였는지 산점도에 표기해본다.
훈련데이터의 샘플들의 평균 무게를 통해 예측하였음을 알 수 있다.
그럼 그 3개의 샘플의 평균은 어떻게 될까?
😅 앞서 길이가 50cm인 농어의 예측 무게와 동일하다..!
그렇다면 길이가 더욱 길어진다고 해도 동일한 값으로 예측 할 것임을 알 수 있다.
**3) 최근접 이웃 회귀 한계를 확신하기
길이가 더욱 더 긴 농어의 무게를 예측해보자.
데이터는 위에서 준비하였기 때문에, 바로 모델을 만들어어 학습해본다.
1) 훈련 및 예측하기
sklearn.liner_model
LinearRegression
50cm 농어의 무게를 선형회귀로 학습한 모델로는 1,241g을 예측했다.
어떤 직선
을 학습하는 알고리즘선형회귀의 경우 어떤 직선
에 대한 부분이 예측의 key라고 볼 수 있다.
그럼 어떤 직선
의 모양은 어떻게 될까?
다행히 우리는 학교에서 배웠던 직선의 방정식
을 기억해내면 된다.
직선의 방정식(y값) = (기울기 × x값) + 절편
기울기와 절편은 다행스럽게도 선형회귀 클래스를 통해 알 수 있다.
LinearRegression().coef_
LinearRegression().intercept_
실습데이터로 훈련한 선형회귀 모델의 기울기와 절편은 아래와 같다.
2) 훈련된 모델 확인하기
그럼 우리가 훈련한 모델의 1차방정식을 확인해보자.
이 직선이 최적의 1차방정식이라고 볼 수 있다.
3) 결정계수 확인하기
보정계수가 약간 차이가 나지만 과대적합이라고 볼 수 없으며, 전체적으로 점수가 낮은 것으로 판단되어 진다.
그렇다면 무엇이 문제일까?
앞서 보았던 직선 방정식을 보면 무게가 0이하로 내려가는 경우가 발생하는데, 현실에서는 있일 수 없는 일이다.
그럼 직선이 아닌 곡선으로 모델을 훈련해보자.
어떤 곡선
을 학습하는 알고리즘선형회귀가 어떤 직선
에 대한 학습이라면,
다항회귀는 어떤 곡선
에 대한 학습이다.
` 곡선의 방정식(y값) = (a × x값의 제곱) (b × x값) + 절편(c)
LinearRegression().coef_
LinearRegression().intercept_
4) 다항회귀를 통한 훈련 및 예측하기
column_stack ➡ 활용하여 x값의 제곱의 데이터셋 생성하기
훈련하기
예측하기
선형 회귀로 예측한 값보다 더 높은 값을 예측했다!
5) 훈련된 모델 확인하기
6) 결정계수 확인하기
- 선형 회귀 모델이 찾은 방정식의 계수를 무엇이라고 부르나요?
① 회귀 파라미터
② 선형 파라미터
③ 학습 파라미터
☞ ④ 모델 파라미터
- 사이킷런에서 다항 회귀 모델을 훌련할 수 있는 클래스는 무엇인가요?
☞ ① LinearRegression
② PolynomialRegression
③ KNeighborsClassifier
④ PolynomialClassifier
💡 헷갈릴수 있으나, 선형회귀/다항회귀/다중회귀를 지원하는 클래스는
LinearRegression
이다.