05. KNR 알고리즘 오류?

akanana·2023년 1월 9일
0

개인공부

목록 보기
17/30
post-thumbnail

엄청 큰 농어

이전 모델을 통해 우리는 농어의 크기를 직접 예측해보기로 한다.
이때 매우 큰 농어 50cm에 1500g의 농어를 예측해보기로 한다.

print(knr.predict([[50]]) # 1033.3...

실제 값과는 전혀 다른 값이 나온다. 왜 그럴까?

KNR 알고리즘 원리


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()

0개의 댓글