Data Science/실습

DS 실습 13~14- 단순/다중 회귀분석

에너지_2 2024. 12. 7. 10:43
728x90
반응형

13차시 단순 회귀분석

- 독립변수가 하나

- 연속형 종속변수와 독립변수 간 선형관계 및 설명력을 확인하는 기법

- 종속변수와 독립변수가 각각 하나인 경우의 단순 선형 회귀 모형

- 설명력과 더불어 오차 평가 지표로 모델의 성능을 평가

 

statsmodels - ols()

- 선형회귀 분석을 위한 statsmodels의 함수

- ols 함수 내에 attribute 'formula' 에 종속변수와 독립변수를 선언 -> 종속 변수와 독립 변수 간의 관계를 정의하는 문자열

  formula  = '종속변수 ~ 독립변수1 + 독립변수2 + ...' -> 순서 중요. 바뀌면 결과가 달라짐

- fit() 메서드로 모델 적합시킴 -> predict() 예측

- 변수명에 점 등 특정 특수문자가 있는 경우 오류 발생 ex) Sepal.Length

from statsmodels.formula.api import ols

 

변수명에 특수문자 있는 경우 에러 발
변수명 변경 후, 모델링 진행 / 예측 진행

 

sklearn - LinearRegression()

- 선형회귀 분석을 위한 sklearn 의 함수. ols 보다 강력하기 위한 기능. 최적화 기능 갖음

from sklearn.linear_model import LinearRegression
LinearRegression(
    *,
    fit_intercept=True,      #절편 적합 여부. 보통 true 로 함
    normalize='deprecated',  #정규화
    copy_X=True,             #
    n_jobs=None,
    positive=False,
)

 

- LinearRegression 에서 fit (X = ) 에는 2차원에 맞게 변환해서 넣어줌

# Attribute X 에 2차원배열로 넣어야하기 때문에, dataFrame 유지할 수 있게 df[[' ']] 
model = LinearRegression().fit(X = df[['Petal.Length']],
                               y = df['Petal.Width'])
                               
#
model.predict(df[['Sepal.Width']]
# 1차원으로 넣으면 아래처럼 에러 발생
ValueError: Expected 2D array, got 1D array instead:

 

 

---- 모델링 - 평가(회귀)

sklearn - mean_absolute_error()

- MAE 연산을 위한 sklearn 함수

 

sklearn - mean_squared_error()

- MSE 연산을 위한 sklearn 함수

- 해당 결과에 제곱근 연산을 하면 RMSE 계산 가능

- attribute y_true, y_pred 구분 하기

from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
mean_absolute_error(
    # metrics 로 뽑아서 나오는 지표 관련 함수에는 다 있는 attribute
    y_true,  # 실제 값(실측 값)- 회귀모델에서는 종속 변수의 실제 값을 의미
    y_pred,  # 모델이 예측한 값- 회귀모델에서는 독립 변수를 기반으로 예측된 종속 변수 값
    *,
    sample_weight=None,
    multioutput='uniform_average',
)


왜 model predict 할 때  test data를 사용하는 지?

: test 데이터로 예측을 수행하는 이유는 모델의 일반화 성능을 평가하기 위해서입니다.

이는 모델이 새로운 데이터에서 얼마나 잘 작동하는지 확인하는 중요한 과정입니다.

 

#MAE
mean_absolute_error(y_true = df['Sepal.Length'], y_pred = df['Sepal.Width'])
#MSE
mean_squared_error(y_true = df['Sepal.Length'], y_pred = df['Sepal.Width'])
#RMES = MES **0.5 (제곱근)
mean_squared_error(y_true = df['Sepal.Length'], y_pred = df['Sepal.Width']) ** 0.5

 

 

14차시 다중 회귀분석

- 연속형 종속변수두 개 이상의 독립변수 간 선형관계 및 설명력을 확인하는 기법

- 명목형 변수가 독립변수 인 경우, 가변수 변환 후 fit 모델 적합시키기 - get_dummies 사용

- 단순 회귀분석과 동일 함수 사용

 

다중 공선성 이슈 존재

- 독립변수 간 강한 상관관계가 나타나는 문제

- 상관계수를 확인하여 높은 것은 미리 제거

- 회귀 모델 생성 이후 VIF 확인(10 이상) 하여 관련 변수 처리 -> 10이상이면 다중 공선성 문제가 있다고 판단

 

 

728x90
반응형