코딩헤딩

[ML(머신러닝)] 다중회귀모델(Multiple Regression) 2 본문

머신러닝 | 딥러닝

[ML(머신러닝)] 다중회귀모델(Multiple Regression) 2

멈머이 2023. 12. 30. 13:40
728x90

 

1. 평균절대오차(MAE) 확인하기

from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(test_target, test_pred)
mae

 

 

 

2. 특성 클래스 생성하기

poly = PolynomialFeatures(include_bias=False)
poly

- 특성을 생성시킬 때 y절편값도 생성을 함께 시킨다.
 - 특성만 있으면 되기 때문에 y절편을 생성에서 제외시키기 위해서
   ---> include_bias = False로 설정

 

temp_data = [[2,3,4,]]
temp_data

- sample데이터로 어떤 특성들이 만들어지는지 확인 먼저

 

 특성을 만들 패턴 찾기

poly.fit(temp_data)

 

 

 

 

 

 찾은 패턴으로 특성 생성하기

poly.transform(temp_data)

결과 : array([[ 2.,  3.,  4.,  4.,  6.,  8.,  9., 12., 16.]])

 

 

 

3. 실제 독립변수를 이용해서 특성 생성하기

 

클래스 생성하기

from sklearn.metrics import mean_absolute_error
poly = PolynomialFeatures(degree=2, include_bias=False)
poly


 - dgree-2 : 차원을 의미하며 2는 제곱승을 의미함
                : 3을 넣으면 2의 제곱, 3의 제곱을 수행
                : 4를 넣으면 3의 제곱, 3의 제곱, 4의 제곱을 수행함
                                                                                                           : 가본값은 2 (생략하면 2의 제곱승이 적용됨)

패턴 찾기

# - 훈련 독립변수 사용
poly.fit(train_input)

 

 

 

 

 

특성 생성하기

### 훈련 독립변수에 특성 추가하기
train_poly = poly.transform(train_input)

### 테스트 독립변수에 특성 추가하기
test_poly = poly.transform(test_input)

train_poly.shape, test_poly.shape

결과 : ((39, 9), (17, 9))

 

사용된 패턴 확인하기

poly.get_feature_names_out()

결과 :

array(['x0', 'x1', 'x2', 'x0^2', 'x0 x1', 'x0 x2', 'x1^2', 'x1 x2',
       'x2^2'], dtype=object)


 

 

1. 클래스 생성

lr = LinearRegression()
lr

 

2. 훈련하기

lr.fit(train_poly, train_target)

 

3. 훈련점수 파악

train_r2 = lr.score(train_poly, train_target)
test_r2 = lr.score(test_poly, test_target)
test_pred = lr.predict(test_poly)
train_r2, test_r2

 

4. 평균절대오차(MAE) 확인하기

mae = mean_absolute_error(test_target, test_pred)
mae

 


<해석>
  - 특성공학을 적용하지 않은 모델은 검증(테스트) 정확도가 다소 낮았으며, 오차가 50 정도 있었으나, 
  - 특성공학을 적용하여 특성을 추가하여 훈련 집중도를 높였을 때는 
     --> 훈련 및 검증(테스트) 정확도 모두 높아졌으며, 과적합이 발생하지 않은 일반화 모델로 오차는 30 정도의 매우 우수한 모델로 판단함
     
  - 이 모델을 사용하려면, 독립변수의 특성 길이, 높이, 두께 3개의 특성을 사용해야 하며, 특성 생성 시 degree=2를 적용한 특성을 사용해야 함

728x90