반응형
이번 글은 많이들 들어봤을 알고리즘인 선형 회귀에 대해서 소개하겠다.
"선형"이라는 말처럼 일직선의 예측 경로를 알아내서 그에 기반해 추측을 진행한다.
가령 위와 같은 데이터 분포가 있으면 직관적으로 봐도 선을 연결하고 싶을 것이다.
이렇게 표본들의 연관성을 기반으로 선을 만들어내고, 그를 기반으로 예측을 생성한다.
("회귀"가 예측을 생성하는 모델이다. "분류"는 종류를 나누는 모델이다)
이걸 다항함수로 바꿀 수도 있다. 예를 들어 이차식으로 바꿔 곡선으로 바꿔줄 수 있다.
이런 방법은 치환을 이용해서 이해하면 쉽다.
perch_length = np.array([8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0,
21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7,
23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27.5, 27.5,
27.5, 28.0, 28.7, 30.0, 32.8, 34.5, 35.0, 36.5, 36.0, 37.0, 37.0,
39.0, 39.0, 39.0, 40.0, 40.0, 40.0, 40.0, 42.0, 43.0, 43.0, 43.5,
44.0])
perch_weight = np.array([5.9, 32.0, 40.0, 51.5, 70.0, 100.0, 78.0, 80.0, 85.0, 85.0, 110.0,
115.0, 125.0, 130.0, 120.0, 120.0, 130.0, 135.0, 110.0, 130.0,
150.0, 145.0, 150.0, 170.0, 225.0, 145.0, 188.0, 180.0, 197.0,
218.0, 300.0, 260.0, 265.0, 250.0, 250.0, 300.0, 320.0, 514.0,
556.0, 840.0, 685.0, 700.0, 700.0, 690.0, 900.0, 650.0, 820.0,
850.0, 900.0, 1015.0, 820.0, 1100.0, 1000.0, 1100.0, 1000.0,
1000.0])
import numpy as np
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(perch_length, perch_weight, random_state=42)
train_input = train_input.reshape(-1,1)
test_input = test_input.reshape(-1,1)
train_poly = np.column_stack((train_input **2, train_input))
test_poly = np.column_stack((test_input **2, test_input))
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(train_poly, train_target);
print(lr.predict([[50**2, 50]]))
import matplotlib.pyplot as plt
point = np.arange(15, 50)
plt.scatter(train_input, train_target)
plt.plot(point, 1.01*point**2 - 21.6*point + 116.05)
plt.scatter(50, 1574, marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
예시 코드)
lr.predict를 이용하면 예측 가능하다.
이차함수는 입력값을 제곱하고 선형함수를 생성해서 만들었다.
여기까지 선형함수에 대해서 알아봤다. 약간 성의가 없긴 한데
지금 실시간으로 배우고 있는 알고리즘이 많아서 그렇다.
간단한 알고리즘인 만큼 그냥 지나가겠다.
from sklearn.linear_model import LinearRegression
사실 위 코드가 가장 중요할지도 모른다.
선형 함수를 생성하는 알고리즘을 지원해 주기 때문이다.
이걸 기반으로 쉽게 선형 회귀 분석이 가능하다.
이상으로 도움이 되었길 바라며,
끝.
반응형
'머신러닝' 카테고리의 다른 글
머신 러닝) padding, same (0) | 2024.12.25 |
---|---|
머신 러닝) 필터와 커널 (0) | 2024.12.25 |
로지스틱 회귀 (2) | 2024.12.20 |
다중 회귀 알고리즘 (0) | 2024.12.20 |
k - 최근접 이웃 알고리즘 (KNN) (1) | 2024.12.20 |
댓글