이전 모델을 통해 우리는 농어의 크기를 직접 예측해보기로 한다.
이때 매우 큰 농어 50cm에 1500g의 농어를 예측해보기로 한다.
print(knr.predict([[50]]) # 1033.3...
실제 값과는 전혀 다른 값이 나온다. 왜 그럴까?
KNR 알고리즘은 기본적으로 이웃한 n개의 샘플의 평균을 통해 값을 추측한다.
위 같은 경우, 기존 샘플의 범위를 벗어났을때 다른 값을 찍게된다.
이를 위해 선형회귀 알고리즘을 통해 값을 예측해보겠다.
선형회귀란 종속 변수 y와 하나 이상의 독립 변수 x와의 선형 상관관계를 모델링하는 기법이다.
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(train_input, train_target)
print(lr.predict([[50]]))# 1241.83...
이떄 선형회귀 모델은 값을 예측할때 coef_
와 intercept_
을 통해 값을 예측한다.
그리고 위 값을 통해 그래프를 그려보면
import matplotlib.pyplot as plt
plt.scatter(train_input,train_target)
plt.plot([15,50],[15*lr.coef_ + lr.intercept_,50*lr.coef_ + lr.intercept_])
plt.scatter(50,lr.predict([[50]]))
plt.xlabel('length')
plt.ylabel('weight')
plt.show()