반응형
ㅇ불순도(gini impurity)
- 지니불순도 = 1-(음성클래스비율^2 + 양성클래스비율^2)
- 어떤 노드의 두 클래스 비율이 1/2씩 차이가 나면 지니 불순도는 최악
- 반면, 노드에 하나의 클래스만 있다면 지니 불순도는 0이 됨. 즉, 순수노드
ㅇ 결정트리 모델은 부모 노드와 자식노드의 불순도 차이가 가능한 크도록 트리를 성장시킴
ㅇ 정보이득 : 부모와 자식 노드 사이의 불순도
DecisionTreeClassifier에서 criterion = 'entropy' 를 지정하여 엔트로피 불순도를 사용할 수 있음.
엔트로피 불순도 : -음성클래스비율 x log2(음성클래스비율) - 양성 클래스 비율 x log2(양성클래스비율)
데이터 및 train-test 나누기
#데이터
import pandas as pd
import matplotlib.pyplot as plt
wine = pd.read_csv('https://bit.ly/wine_csv_data')
data = wine[['alcohol', 'sugar', 'pH']].to_numpy()
target = wine['class'].to_numpy()
#train,test 데이터 나누기
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.tree import DecisionTreeClassifier
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,8))
from sklearn.tree import plot_tree
plot_tree(dt, filled = True, feature_names = ['alcohol', 'sugar', 'PH']) #filled = True는 클래스마다 색깔을 부여하고, 클래스의 비율이 높아지면 진한색으로 표시시
print(dt.feature_importances_) #중요특성 확인
plt.show()
반응형
'코딩 > Python' 카테고리의 다른 글
[코딩] 07-3 신경망 모델 훈련(f.혼자 공부하는 머신러닝 딥러닝) (2) | 2023.05.13 |
---|---|
[코딩] 트리 앙상블(랜덤포레스트, 그라디언트부스팅, 엑스트라트리, XG부스트, 라이트GBM) - 혼자 공부하는 머신러닝 딥러닝 (0) | 2023.05.07 |
[코딩] 이진분류,다중분류(f.혼자공부하는 머신러닝 딥러닝) (0) | 2023.05.05 |
[코딩] Neighbors 도미와 빙어 전처리 후 구분(혼자 공부하는 머신러닝 딥러닝) (0) | 2023.04.30 |
[파이썬] 혼자 공부하는 데이터 분석(06 데이터표현, 07 검증,예측) (0) | 2023.04.30 |