트리 알고리즘

1. 결정 트리

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

# 데이터 불러오기
import pandas as pd
wine = pd.read_csv('<https://bit.ly/wine_csv_data>')

# 데이터프레임 정보
wine.head()
wine.info()
wine.describe()

※ info() : 데이터프레임의 각 열의 데이터 타입과 누락된 데이터가 있는지 확인하는 데에 유용

※ describe() : 열에 대한 간략한 통계 출력 ⇒ 최소, 최대, 평균값 등 확인

# 데이터프레임의 특성 나누기
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)

# 훈련 세트와 테스트 세트의 크기 확인
print(train_input.shape, test_input.shape)

# 훈련 세트 전처리
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

→ 모델이 다소 과소적합된 것 같음

⇒ 규제 매개 변수 C의 값을 변화 OR solver 매개변수에서 다른 알고리즘 선택 OR 다항 특성을 만들어서 추가

결정 트리(Decision Tree)

1.png

# 결정 트리 모델 훈련
from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier(random_state=42)
dt.fit(train_scaled,train_target)
print(dt.score(train_scaled,train_target))
print(dt.score(test_scaled,test_target))

0.996921300750433 0.8592307692307692