https://kime2pan.tistory.com/96
목표3. 주문의 전체 금액(total_bill)-> x1 , ???-> x2, x1과 x2를 통해 받을 팁(tip)->y 예상하기
tip을 예상할 수 있는 요소는 total_bill과 무엇을 분석해야 할까 ? -> barplot을 통해 예측하기
순서: 데이터획득 > 상관관계 확인하기 / 범주형 데이터 encoding > 선형회귀 훈련하기 > 평가
방법: 다중선형회귀
💡순서
라이브러리 불러오기 > 상관관계 확인하기 /데이터불러오기 > 범주형 데이터 encoding> 선형회귀 훈련하기(산점도 그려보기, 가중치/편행 계산, 회귀식 계산, 예측값 계산, 회귀식/산점도 확인) > 평가하기(MES,z-score)
0. 라이브러리 불러오기
import sklearn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
1. 데이터불러오기
tips_df = sns.load_dataset('tips')
tips_df.head(3)
# X: total_bill
# y: tip
2. tip과 상관관계 확인하기
우선 sex와의 관계는 없었다..
sns.barplot(data = tips_df, x='time', y='tip')
|
sns.barplot(data = tips_df, x='day', y='tip')
|
sns.barplot(data = tips_df, x='size', y='tip')
#size: 식사인원
|
sns.barplot(data = tips_df, x='smoker', y='tip')
|
>> 식사인원과 팀과의 관계가 있는 것 같음!
3. 선형회귀 훈련하기
# 모델설계도 가져오기
# 학습
# 평가
model_lr3 = LinearRegression()
X = tips_df[['total_bill','size']]
y = tips_df[['tip']]
#학습
model_lr3.fit(X,y)
y_pred_tip2 = model_lr3.predict(X)
y_pred_tip2[:5]
4. 평가하기
- MES
# 다중선형회귀 mse: X변수가 전체 금액, 식사인원
print('다중선형회귀', mean_squared_error(y_true_tip, y_pred_tip2))
주문금액, 식사인원을 고려한 단중선형회귀 1.014564905610028
주문금액, 성별을 고려한 다중선형회귀 1.0358604137213614
-> MES값이 감소함!!
- z-score
print('다중선형회귀', r2_score(y_true_tip, y_pred_tip2))
주문금액, 식사인원을 고려한 단중선형회귀 0.46786930879612587
주문금액, 성별을 고려한 다중선형회귀 0.45669999534149974
-> z-score 값 증가함!!
결론: 전체주문금액과 식사인원을 고려하면 받을 수 있는 팁을 예상할 수 있다!
그러나,,,
주문금액과 식사인원이 독립적이라고 할 수 있을까?
식사인원이 많으면 주문금액도 높아지므로 상관관계가 있을 수 있음
>> 다중공선성의 문제
'학습노트 > Python' 카테고리의 다른 글
[강의노트] Python - 머신러닝 - 로지스틱 회귀 - 실습(1) (2) | 2024.01.31 |
---|---|
[강의노트] Python - 머신러닝 - 로지스틱 회귀 (0) | 2024.01.31 |
[강의노트] Python - 머신러닝 - 선형회귀-실습(1) (2) | 2024.01.30 |
[강의노트] Python - 머신러닝 - 선형회귀 (1) | 2024.01.30 |
[강의노트] Python - 데이터전처리: Pandas(3) - 실습 (0) | 2024.01.25 |