머신러닝 - 선형 회귀분석 모델(Linear Regression)
25 Aug 2025 | Machine Learning개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
머신러닝 모델의 훈련단계
0. 라이브러리 불러오기(import)
1. 데이터 불러오기
2. 전처리(데이터 클렌징, 정규화, 범주화 데이터 처리)
3. 데이터 스플릿/분리(train, test)
4. 모델 정의(내가 어떤 모델을 사용할지, 하이퍼파라미터 설정)
5. 모델 훈련(`.fit()` > 파라미터를 훈련시켜서 함수통을 만든다)
6. 훈련 결과 확인(정확도, 시각적 방법을 통해 결과 확인)
선형 회귀분석(Linear Regression)
- 선형 회귀: 독립변수와 종속변수 간 선형관계를 모델링하는 통계학적 기법
- 머신러닝의 가장 기본적이면서도 중요한 알고리즘 중 하나
- 독립변수의 갯수에 따라 단순/다중 선형회귀로 나뉨
단순 선형회귀(Simple Linear Regression)
독립변수가 하나인 경우
y = β₀ + β₁x + ε
- y: 종속변수 (예측하려는 값)
- x: 독립변수 (설명변수)
- β₀: 절편 (intercept)
- β₁: 기울기 (slope)
- ε: 오차항 (error term)
라이브러리 불러오기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
데이터 불러오기
# 독립변수 > 공부시간
X = np.array([1,2,3,4,5]).reshape((-1,1))
# 종속변수 > 시험점수
y = np.array([5,20,14,32,22])
모델 정의 > LinearRegression()
# 모델이라는 변수에다가 정의
model = LinearRegression()
모델 훈련 > fit()
# 그래프에서 선을 긋는 것
# y와 y^의 잔차를 줄이는 것이 목표
# y^ (와이 헷)은 머신러닝 결과로 나오는 예상치를 말함
model.fit(X,y)
훈련 결과 확인
w = model.coef_[0]
b = model.intercept_
print(w,b)
# 4.6000000000000005 4.800000000000001
print(f'회귀식: y={w:.2f}x + {b:.2f}')
# 회귀식: y=4.60x + 4.80
모델 예측 > predict()
X1 = np.array([2,2,4,4,5]).reshape((-1,1))
# 만들어진 통계모델로 예측
y_pred = model.predict(X1)
y_pred
다중 선형회귀(Multiple Linear Regression)
독립변수가 여러개인 경우
y = β₀ + β₁x₁ + β₂x₂ + ... + βₚxₚ + ε
- y: 종속변수 (예측하려는 값)
- x: 독립변수 (설명변수)
- β₀: 절편 (intercept)
- β₁: 기울기 (slope)
- ε: 오차항 (error term)
라이브러리 불러오기
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
데이터 불러오기 & train/test 분리
f(x)가 y가 되기 위해 학습해야하는 정보가 train이고 잘배웠는지 결과를 보는 것이 test
- x1: 시험 공부시간
- x2: 조명
- x3: 수면시간
- x4: 과제 참여도
X = np.array([[5,2,3],[10,3,5],[15,5,8],[7,2,4]])
y = np.array([10,20,30,40])
# test_size: 몇대몇으로 분리할 것이냐 > 0.2 : test에 20%, train에 80%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
모델 정의
model = LinearRegression()
모델 훈련
# 어떤 데이터가 들어가는 지 체크!
model.fit(X_train, y_train)
모델 결과 확인
w = model.coef_
b = model.intercept_
print(w,b)
# [ 12. -43.33333333 6. ] 18.666666666666718
모델 예측
model_pred = model2.predict(X_test)
model_pred
# array([38.66666667])
이때 우리의 목표는 예측할 수 있는 함수통을 만드는 것이다!
MSE
MSE = mean_squared_error(y_test, model2_pred)
MSE
# 348.4444444444457
MSE, MAE, RMSE란?
- MSE:잔차 제곱의 합
- MAE: 잔차 평균의 합
- RMSE: 평균 제곱근 오차 > MSE에 루트씌운 값
MSE, MAE 모두 작을수록 좋음!
R^ = 1 - {(실제값 - 예측값)^의 합 /(실제값 - 전체 예측값의 평균)^ 의 합}
