본문 바로가기

스파르타 코딩클럽/[강의] 머신러닝

[머신러닝 기초] 다중선형회귀와 범주형 데이터 실습

선형회귀

  • 단순선형회귀 : x 변수가 1개
  • 다중선형회귀 : x 변수가 2

 

수치형 데이터 vs 범주형 데이터

  • 수치형 데이터
    • 연속형 데이터 : 두 개의 값이 무한한 개수로 나누어진 데이터 ex) 키, 몸무게
    • 이산형 데이터 : 두 개의 값이 유한한 개수로 나누어진 데이터 ex) 주사위 눈, 나이
  • 범주형 데이터
    • 순서형 자료 : 자료의 순서가 의미 있음 ex) 학점, 등급
    • 명목형 자료 : 자료의 순서가 의미 없음 ex) 혈액형, 성별

 

범주형 데이터 실습
  • 머신러닝 모델에 데이터를 훈련시키려면 해당 데이터를 숫자로 바꿔야 함
  • 성별, 날짜와 같은 데이터를 범주형 데이터라고 부르며 임의로 숫자로 바꿀 수 있음
    >> 이를 Encoding 과정이라 함
# Female 0, Male 1
def get_sex(x):
    if x == 'Female':
        return 0
    else:
        return 1
# apply method는 매 행에 특정한 함수를 적용
tips_df['sex_en'] = tips_df['sex'].apply(get_sex)
tips_df.head(3)

# 모델설계도 가져오기
model_lr3 = LinearRegression()
X = tips_df[['total_bill', 'sex_en']]
y = tips_df[['tip']]
# 학습
model_lr3.fit(X, y)
# 예측
y_pred_tip2 = model_lr3.predict(X)
y_pred_tip2[:5]
# 단순선형회귀 mse : x 변수가 전체 금액
# 다중선형회귀 mse : x 변수가 전체 금액, 성별
print('단순선형회귀', mean_squared_error(y_true_tip, y_pred_tip))
print('다중선형회귀', mean_squared_error(y_true_tip, y_pred_tip2))

## 단순선형회귀 1.036019442011377
## 다중선형회귀 1.0358604137213614
print('단순선형회귀', r2_score(y_true_tip, y_pred_tip))
print('다중선형회귀', r2_score(y_true_tip, y_pred_tip2))

## 단순선형회귀 0.45661658635167657
## 다중선형회귀 0.45669999534149974

 

>> 성별 변수를 추가해도 유의미한 차이가 X

>> 성별에 따른 Tip 그래프 확인 (훈련 전에 이걸 먼저 확인 해야함)

sns.barplot(data = tips_df, x = 'sex', y = 'tip')