UOMOP
Linear Regression(선형 회귀) 본문
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(train_input, train_target)
lr.predict([[50]])
array([1241.83860323])
선형 회귀 모델을 호출하고, 이 모델을 통해 훈련을 시켜 50cm의 농어의 무게를 예측해본 결과, 1241.84g가 출력되었다. k-최근접 이웃 회귀 모델보다는 더 이상적인 결과가 나왔음을 확인할 수 있다.
print("기울기 : {}\ny절편 : {}".format(lr.coef_, lr.intercept_))
기울기 : [39.01714496]
y절편 : -709.0186449535477
선형 회귀 모델에서는 lr.coef_에 기울기가 반환되고, lr.intercept_에 y절편이 반환된다.
plt.scatter(train_input, train_target)
plt.plot([15, 50], [15 * lr.coef_ + lr.intercept_, 50 * lr.coef_ + lr.intercept_], color = "y")
plt.scatter(50, lr.predict([[50]]), color = "r")
plt.scatter(50, knr.predict([[50]]), color = "m")
plt.xlabel("length")
plt.ylabel("weight")
plt.show()
노란선은 선형 회귀 모델을 통해 생성한 선형 방정식
빨간점은 선형 회귀 모델을 통해 예측한 50cm 농어의 무게
보라점은 k-최근접 이웃 회귀 모델을 통해 예측한 50cm 농어의 무게
훈련 셋을 통해서 최소 직선해를 구하고, 이 해들의 집합으로 방정식을 구해 값을 예측 할 수 있었다.
print("훈련 셋의 score() : {}".format(lr.score(train_input, train_target)))
print("검증 셋의 score() : {}".format(lr.score(test_input, test_target)))
훈련 셋의 score() : 0.939846333997604
검증 셋의 score() : 0.8247503123313558
훈련 셋과 검증 셋의 결정 계수를 확인해본 결과, 만족스럽지 못했다.
위 상황은 과적합 모두 발생한 것으로 보인다.
우선, 훈련 셋의 결정 계수가 너무 낮은 것으로 보아, 과소 적합 된 것을 알 수 있고
검증 셋의 결정 계수가 훈련 셋의 결정 계수에 비해 너무 낮은 것으로 보아 과대 적합이 된 것이다.
다음과 같이 선형 회귀 모델의 경우 과적합 문제가 발생할 수 있으며, target 값이 음수가 나오는 상황이 발생할 수 있다.
'Ai > ML' 카테고리의 다른 글
Logistic Regression(이진 분류 로지스틱 회귀) (0) | 2022.01.27 |
---|---|
Multiple Regression(다중 회귀) - 릿지/라쏘 (0) | 2022.01.25 |
k-최근접 이웃 model의 문제점 (0) | 2022.01.25 |
농어(perch) 무게 예측 using "k-최근접 이웃 회귀" (0) | 2022.01.24 |
전처리 과정 中 Scaling의 중요성 (0) | 2022.01.23 |
Comments