[플레이데이터]

[PlayData - Day 53] 트리 알고리즘

EYZ27 2023. 3. 9. 17:37

1. K-Digital Training 과정

  • 빅데이터 기반 지능형SW 및 MLOps 개발자 양성과정 19기 (Day 53)

2. 목차

  1. 결정 트리
  2. 교차 검증과 그리드 서치
  3. 트리의 앙상블

3. 수업 내용

 

5-1.ipynb
0.63MB
5-2.ipynb
0.23MB
5-3.ipynb
0.01MB

 

세 가지 특성을 가진 와인 데이터셋을 가지고 이진 분류를 하고자 함

앞선 챕터에서 배운 로지스틱 회귀로 분류 실시

 

로지스틱 회귀로 와인 분류하기

데이터를 불러온 후 데이터 형태 확인하기 : pandas의 메서드 이용

 

1. head() 함수: 처음 5개의 샘플 확인

import pandas as pd

wine = pd.read_csv('https://bit.ly/wine_csv_data')

wine.head()                           # 레드와인 0, 화이트와인 1

 

2. info() 함수: 데이터프레임 각 열의 데이터 타입과 누락된 데이터 정보 확인

wine.info()

각 열(Column)의 데이터타입(Dtype)은 모두 float 타입이고, null 데이터가 없는 것을 확인할 수 있다.

 

3. describe() 함수

wine.describe()

각 컬럼별 평균, 표준편차, 최소, 최대, 사분위수를 확인할 수 있다.

 

  • pandas 데이터프레임을 numpy 배열로 변환하고 훈련 세트와 테스트 세트로 나누기
data = wine[['alcohol', 'sugar', 'pH']].to_numpy()
target = wine['class'].to_numpy()

from sklearn.model_selection import train_test_split

train_input, test_input, train_target, test_target = train_test_split(
    data, target, test_size=0.2, random_state=42)
# test_size=0.2, 즉 테스트 세트의 비율 20%

print(train_input.shape, test_input.shape)
>>> (5197, 3) (1300, 3)

# 세트가 잘 나누어진 것을 확인할 수 있다.

 

  • 표준화 작업(스케일링, Scaling)
# 표준화 작업

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
ss.fit(train_input)

train_scaled = ss.transform(train_input)
test_scaled = ss.transform(test_input)

# 표준 점수로 세가지 특성 데이터의 스케일을 다 맞추어 주었다.

# 표준화 작업을 마친 데이터로 로지스틱 회귀 훈련, 평가

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression()
lr.fit(train_scaled, train_target)

print('훈련', lr.score(train_scaled, train_target))
print('테스트', lr.score(test_scaled, test_target))

>>> 
훈련 0.7808350971714451
테스트 0.7776923076923077

# 테스트 세트보다 훈련 세트의 정확도가 조금 더 높으나, 전반적으로 낮다. 과소적합.

 

설명하기 쉬운 모델과 어려운 모델

print(lr.coef_, lr.intercept_)

>>> [[ 0.51270274  1.6733911  -0.68767781]] [1.81777902]

위의 결과로 로지스틱 회귀모델을 설명하려면?

['alcohol',         'sugar',      'pH'               ]

[ 0.51270274, 1.6733911, -0.68767781]

  • 알콜도수와 당도가 높을수록 화이트와인일 가능성이 높고, pH가 높을수록 레드와인일 가능성이 높다

이 숫자의 의미를 쉽게 설명할 수 있도록 하려면 결정 트리를 이용하자.

 

결정 트리

...업데이트중