결정 트리
yes/no 에 대한 질문을 이어나가면서 정답을 찾아 학습하는 알고리즘이다.
예측 과정을 이해하기쉽고 성능도 뛰어나다.
불순도
결정 트리가 최적의 질문을 찾기 위한 기준이다. 사이킷런은 지니 불순도와 엔트로피 불순도를 제공한다.
정보 이득
부모노드와 자식노드의 불순도의 차이로 결정 트리 알고리즘은 정보 이득이 최대화되도록 학습한다.
특성 중요도
결정 트리에 사용된 특성이 불순도를 감소하는데 기여하는 정도를 나타낸다.
특성 중요도를 계산할 수 있는 점이 결정트리의 큰 장점이 된다.
info()
데이터프레임의 요약된 정보를 출력한다.
verbose=False로 지정하면 각 열에 대한 정보를 출력하지 않는다.
describe()
데이터프레임의 열에 대한 통계값이 출력된다.
수치형일 경우 최소,최대,평균,표준편차,사분위값 등이 출력되고
문자열같은 객체타입의 열은 가장 자주 등장하는 값과 횟수가 출력된다.
DecisionTreeClassifier
결정 트리 분류 클래스이다.
plot_tree()
결정 트리 모델을 시각화한다.
import pandas as pd
wine = pd.read_csv('https://bit.ly/wine-date')
wine.head()
wine.info()
wine.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)
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.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))
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
plt.figure(figsize=(10,7))
plot_tree(dt)
plt.show()
plt.figure(figsize=(10,7))
plot_tree(dt,max_depth=1,filled=True,feature_names=['alcohol','sugar','pH'])
plt.show()
dt=DecisionTreeClassifier(max_depth=3,random_state=42)
dt.fit(train_scaled,train_target)
print(dt.score(train_scaled,train_target))
print(dt.score(test_scaled,test_target))
plt.figure(figsize=(10,7))
plot_tree(dt,filled=True,feature_names=['alcohol','sugar','pH'])
plt.show()
dt=DecisionTreeClassifier(max_depth=3,random_state=42)
dt.fit(train_input,train_target)
print(dt.score(train_input,train_target))
print(dt.score(test_input,test_target))
plt.figure(figsize=(10,7))
plot_tree(dt,filled=True,feature_names=['alcohol','sugar','pH'])
plt.show()
print(dt.feature_importances_)
참고자료: 혼공머신