[ML(머신러닝)] 다중회귀모델(Multiple Regression) 2
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를 적용한 특성을 사용해야 함