[파이썬] 선형회귀 간단하게 구현
- 데이터 사이언스/머신러닝 딮러닝
- 2023. 10. 19.
파이썬으로 선형회귀 모델 만들기
이전 포스팅에서 선형회귀에 대한 이론적인 내용을 했었는데 파이썬으로 구현할 때 본의아니게 많이 어렵게 코딩을 한 것 같습니다. 그래서 scikit-learn 과 statsmodel을 이용해 선형회귀를 구현하는 방법을 포스팅합니다.
이미 되어있는 걸 가져다 쓰면 되기 때문에 간단합니다.
scikit-learn 을 이용한 방법
numpy와 scikit-learn을 이용한 방법입니다.
선형회귀 모델에 데이터를 훈련해서 회귀계수를 찾아냅니다.
먼저 데이터를 가져옵니다. 예제이므로 간단하게 만들었습니다. 실제 데이터를 가져온다면 입력데이터와 타킷데이터를 구분합니다.
import numpy as np
from sklearn.linear_model import LinearRegression
# 입력 데이터
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # 입력 데이터는 1차원 배열이므로 2D 배열로 변환
# 대상 변수(타깃)
y = np.array([2, 4, 5, 4, 5])
선형회귀 모델을 생성합니다. 이미 scikit-learn 에 LinearRegression()이라는 함수가 있으므로 가져다 씁니다.
'# 선형 회귀 모델 생성
model = LinearRegression()
데이터를 기반으로 모델을 훈련시킵니다.
# 모델 훈련
model.fit(X, y)
훈련된 모델에서 최종적인 slope와 y-intercept을 가져옵니다.
# 모델의 기울기와 절편
slope = model.coef_[0]
intercept = model.intercept_
print(f"기울기: {slope}, 절편: {intercept}")
평가를 위해서 R^2 score도 계산할 수 있습니다.
from sklearn.metrics import r2_score
y_pred = model.predict(X)
# R^2 계산
r_squared = r2_score(y, y_pred)
print(f"R^2 값: {r_squared}")
statsmodel을 이용한 방법
마찬가지 방법으로 합니다.
## statsmodel을 이용한 방법
import numpy as np
import statsmodels.api as sm
# 입력 데이터
X = np.array([1, 2, 3, 4, 5])
# 대상 변수(타깃)
y = np.array([2, 4, 5, 4, 5])
X에 상수항을 추가합니다.
상수항을 추가하지 않으면 모든 독립 변수의 값을 0으로 간주하는 모델로 인식합니다. 원래 데이터는 원점을 지나지 않은 경우가 더 많기 때문에 일반화를 위해 상수항을 추가시킵니다.
X = sm.add_constant(X)
모델을 생성하고 훈련시킵니다. summary()를 이용하면 선형회귀 모델에 전체결과를 보실 수 있습니다. statsmodel 모듈 자체가 R에서 왔기 때문에 summary가 잘 되어 있습니다. 선형계수와 R^2도 모두 한번에 볼 수 있습니다.
model = sm.OLS(y, X).fit()
print(model.summary())
기울기와 절편을 따로 보고 싶다면 아래와 같이 합니다.
slope = model.params[1]
intercept = model.params[0]
print(f"기울기: {slope}, 절편: {intercept}")
함께 보면 좋은글
'데이터 사이언스 > 머신러닝 딮러닝' 카테고리의 다른 글
[머신러닝] 범주형 데이터 인코딩 방법 정리 (0) | 2023.11.27 |
---|---|
[머신러닝] 숫자형 데이터 스케일링 방법 정리 (0) | 2023.11.25 |
머신러닝이란? (0) | 2023.06.26 |
[자연어처리] NLTK 설치 및 소개 (0) | 2023.05.15 |
iris dataset 가져오기(데이터셋 가져오는 요령) (0) | 2023.01.14 |