오랑우탄의 반란

[ML] 머신러닝 다중선형회귀분석 파이썬 실습 (VSCode) 본문

PYTHON/머신러닝

[ML] 머신러닝 다중선형회귀분석 파이썬 실습 (VSCode)

5&2 2024. 8. 9. 19:06
반응형

 

 

다중선형회귀

앞서 간단한 선형회귀 분석을 진행했는데요, 모든 데이터가 선형적인 관계를 보이면 참 좋겠지만 현실의 데이터는 비선형적인 관계를 지닐 때가 훨씬 많습니다.

 

단순선형회귀 vs 다항회귀

 

 

그렇기 때문에 다중선형회귀분석이 더 많이 쓰일 수 있는데요, tips 데이터 중 수치형 데이터에 대해 분석을 진행했다면 이번에는 범주형 데이터를 인코딩(encoding)하는 과정까지 다뤄보도록 하겠습니다. 

데이터 종류 참고

 

머신러닝 다중선형회귀분석 실습

진행방법은 선형회귀와 동일한데요, 범주형 데이터를 간단하게 전처리하는 과정만 추가됩니다.

라이브러리 설치는 생략하겠습니다. 

  1. 데이터 확인 (Seaborn tips)
  2. 범주형 데이터 인코딩 
  3. 다중선형회귀 모델 훈련
  4. 모델 평가

 

1. 데이터 확인

사용할 tips 데이터를 다시 확인해줍니다.  

해당 데이터에는 NaN 값이 없는 것이 확인되는데요, 범주형 데이터 성별 sex 칼럼을 분석에 사용해보겠습니다.

 

2. 범주형 데이터 인코딩  

sex 칼럼은 Female, Male 두 가지 값밖에 없기 때문에 간단하게 0, 1 로 각각 인코딩할 수 있습니다. 

인코딩한 결과물을 담을 칼럼 sex_en 을 새로 생성해줍니다. 

tips_df['sex_en'] = tips_df['sex'].apply(lambda x: 0 if x=='Female' else 1)

 

저는 lambda 함수를 사용해 바로 적용시켰는데, 인코딩이 복잡한 경우 따로 함수를 작성해서 사용하는 것이 좋습니다. 

 

3. 다중선형회귀 모델 훈련

훈련 과정은 동일하고, X 에 대상이 되는 모든 데이터를 넣어줍니다. 

총 결제 금액과 성별 데이터로 팁 데이터를 예측하려고 하는 것이기 때문에 total_bill과 sex_en를 넣어줍니다. 

model_lr = LinearRegression()
X = tips_df[['total_bill','sex_en']]
y = tips_df[['tip']]

model_lr.fit(X,y)

 

실제 데이터는 이미 만들어둔 것을 사용하고, 새로운 예측 데이터를 다시 변수로 저장해줍니다.

y_pred_tips2 = model_lr.predict(X)

 

4. 모델 평가

마지막으로 모델에 대한 평가를 진행해줍니다.

mean_squared_error(y_true_tips,y_pred_tips2)
r2_score(y_true_tips,y_pred_tips2)

 

total_bill, tip 변수로 단순선형회귀 분석을 진행했던 것에 비해 sex 변수를 추가해서 진행한 분석의 평가 결과값에 미묘한 차이가 있음을 볼 수 있지만, 둘 다 크게 유효한 분석은 되지 못했습니다. 

 

이번 실습 분석은 범주형 데이터 처리와 다중선형회귀분석을 맛보려고 진행했는데요, 

실제 회귀분석을 진행하기에 앞서 sex에 따른 tip 의 차이가 있는지 확인을 해봤어야 했는데, 둘 사이 큰 차이가 없어서 평가도 좋지 않게 나온 것이니 참고해 주세요. 

 

반응형