선형회귀
- 단순선형회귀 : 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')
'스파르타 코딩클럽 > [강의] 머신러닝' 카테고리의 다른 글
[머신러닝 기초] 회귀와 분류 정리 (0) | 2024.01.30 |
---|---|
[머신러닝 기초] 로지스틱회귀 이론 (1) | 2024.01.30 |
[머신러닝 기초] 선형회귀의 가정과 정리 (2) | 2024.01.30 |
[머신러닝 기초] 선형회귀 실습 (0) | 2024.01.30 |
[머신러닝 기초] 선형회귀 이론과 회귀분석 평가지표 (0) | 2024.01.29 |