반응형
다중 회귀 알고리즘이란 여러 가지 특성을 반영하여 연관성을 찾는 알고리즘을 말한다.
이전 선형 회귀 모델에서 입력되는 특성, 출력되는 특성의 2가지 특성만 가지고
연관성을 분석하여 그래프를 만들었는데,
사실 결과를 도출할 수 있는 특성은 여러 개일 수 있다.
예를 들어 농어의 무게를 예측하고 싶다면 농어의 길이 말고도 두께, 암수컷 등
여러 가지 특성을 함께 고려한다면 조금 더 정확한 무게 예측 시스템이 될 것이다.
다중 회귀 모델의 경우 그래프가 저렇게 평면 이상으로 나타나기도 한다.
당연하게도 입력이 여러 개인데 그래프의 x는 여러 개일 수가 없기 때문에 x, z 등의 축이 특성으로 나타나기에 그렇다.
근데 우리는 4차원 이상은 볼 수 없기 때문에 보통 3차원 축 안의 평면까지만 나타낸다.
import pandas as pd
df = pd.read_csv('https://bit.ly/perch_csv_data')
perch_full = df.to_numpy()
import numpy as np
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])
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(perch_full, perch_weight, random_state=42)
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=5, include_bias=False)
poly.fit(train_input)
train_poly = poly.transform(train_input)
test_poly = poly.transform(test_input)
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(train_poly)
train_scaled = ss.transform(train_poly)
test_scaled = ss.transform(test_poly)
from sklearn.linear_model import Lasso
lasso = Lasso(alpha=10)
lasso.fit(train_scaled,train_target)
print(lasso.score(train_scaled, train_target))
print(lasso.score(test_scaled, test_target))
예제코드)
pandas 덕분에 쉽게 처리가 가능하다.
lasso와 ridge를 사용하면 좋다.
이번 글은 다중 회귀 모델에 대해서 알아봤다. 사실 너무 거시적으로만
정리하는 게 아닌가 싶긴 한데, 코드도 되돌아봐야겠다고 느꼈다.
빠르게 진행하는 만큼 이해가 동반되려면 어느 정도의 추가적인 노력이 필요하다.
이상으로 도움이 되었길 바라며,
끝.
반응형
'머신러닝' 카테고리의 다른 글
머신 러닝) padding, same (0) | 2024.12.25 |
---|---|
머신 러닝) 필터와 커널 (0) | 2024.12.25 |
로지스틱 회귀 (2) | 2024.12.20 |
선형 회귀 알고리즘 (0) | 2024.12.20 |
k - 최근접 이웃 알고리즘 (KNN) (1) | 2024.12.20 |
댓글