다중회귀모델(Multiple Regression)

2023. 7. 31. 19:08카테고리 없음

728x90

<다중 회귀 모델 (Multiple Regression)>
 - 여러 개의 특성을 사용한 회귀모델을 다중회귀모델이라고 칭합니다. 
 - 특성이 많을 수록, 매우 복잡한(정확도가 높은) 모델을 표현할 수 있음
     (복잡도를 높이는 방법 중의 한 가지다)
 - 다중 회귀 모델 산술식(독립변수의 특성이 여러개)
 y = ax1+bx2+cx3+.....+절편
 ----> a,b,c, ....: 계수
 ----> 마지막 값이 y 절편
 ----> x값은 독립변수
 ###

### 다중회귀모델에서 특성에 대한 패턴이 무엇인지 궁금하다면, \

##poly.get_features_names_out()

을 사용하면 된다

 

데이터를 df 형식으로 불러온다 ( 값이 충분히 많을테니 ..)

#df를 numpy 형식으로 바꾸는 방법 

# 1의 방식은 import numpy as np로 라이브러리가 불러와있어져야한다.

# 2의 방식은 import pandas as pd


1. perch_full = df.to_numpy()
2. perch_full = df.values

# 훈련데이터와 테스트 데이터로 나누기

from sklearn.model_selection import train_test_split

train_input, test_input, train_target, test_target = train_test_split(
            perch_full, perch_weight, test_size=0.3, random_state=42)

 

<특성공학>
 - 복잡도를 높이기 위하여 원본 특성의 조합연산을 통해서 새로운 특성을 생성한다는 의미
 - 원본 특성과 완전히 별개의 특성이 아니며, 원본 특성의 조합연산으로 만들어진다.
 - 사이킷런의 라이브러리를 이용하게 되며, 사용하는 라이브러리 이름을 "변환기"라고 칭합니다.
 
### 변환기로 사용할 클래스 불러들이기
from sklearn.preprocessing import PolynomialFeatures

### 변환기 클래스 생성하기(전처리 모델)
# include_bias=False : y절편 사용 안 함
poly = PolynomialFeatures(include_bias=False)
### sample 데이터 사용 (이해를 위해)
temp_data = [[2, 3, 4]]
### 특성의 조합을 찾는 전처리 모델이기 때문에 종속변수는 사용하지 않음
# - 특성의 조합을 찾아내는 과정
poly.fit(temp_data)

<변환기 결과 해석>
 - 첫번째 값 1 : y절편값 (무조건 변환기는 1을 반환해 줍니다. 추후 사용한함)
 - 두번째 값과 세번째 값 : 독립변수 원본 값 그대로 생성
 - 네번째 값 : 두번째 독립변수의 제곱승한 값
 - 다섯번째 값 : 독립변수 두개를 곱한 값
 - 여섯번째 값 : 세번째 독립변수의 제곱승한 값

### 훈련모델 생성하기
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
### 훈련시키기
lr.fit(train_poly, train_target)

앞 선 게시글이 선형, 다항과 연결된 데이터를 사용하였다. 앞에선 언급은 안 되었으나, 다중으로 하였을 시에 더 높은 정확도를 보인다. 또한, 과소도 일어나지 않았으며, 작은 과대만 형성되었다. 

그렇기에 앞선 모델보다 이번 훈련데이터 분석으로는 더 알맞은 모델이라고 볼 수있다. 

 

다중회귀모델도 역시 linearRegression을 사용하나, 앞선 변환기를 통해 train_input에 해당하는 입력 데이터를 전처리하여

더 좋은 정확도를 나타나게끔 하였다고 할 수 있다.