DeseoDeSeo
[ Machine Learning ] ex04_mushroom_part.02 본문
Decision Tree ( 의사결정 나무 ) 과대적합 제어
하이퍼 파라미터 | 설명 | |
max_depth (트리의 최대 길이 ) |
값이 클수록 모델의 복잡도 상승 | |
max_leaf_nodes (리프 노드의 최대 개수) |
개수가 多 -> 깊이가 깊어짐(= 분할되는 노드 증가) |
값이 클수록 모델의 복잡도 상승 |
miin_samples_split (노드를 분할하기 위한 최소 샘플 수) |
작게 설정될수록 분할되는 노드 증가, 복잡도 상승 | |
min_samples_leaf (리프 노드가 가져야할 최소 샘플 수) |
작게 설정될수록 분할되는 노드 증가, 복잡도 상승 | 값이 클수록 세분화 된 것. |
< 과대적합 제어 후 시각화 확인 >
모델의 깊이를 설정하는 매개변수 연결 : max_depth
tree_model2 = DecisionTreeClassifier(max_depth=3)
tree_model2.fit(x_train, y_train)
교차검증 진행해보기, 횟수는 5번, tree_model2, train 데이터로 입력
from sklearn.model_selection import cross_val_score
cross_val_score(tree_model2, x_train, y_train, cv=5)
print('교차검증 결과: ',cross_val_score(tree_model2,x_train,y_train,cv=5))
print('교차검증 평균: ',cross_val_score(tree_model2,x_train,y_train,cv=5).mean())
현재 버섯 분류하는 상황에서는 제어할 필요가 없지만
다른 데이터를 활용해 학습을 진행할때에는 일반적으로
끝까지 학습하게, 규제하지 않으면 과대 적합에 걸릴 확률이 높음,
시각화
from sklearn.tree import export_graphviz
export_graphviz(tree_model2, # 추출할 모델
out_file='tree.dot', # 저장 경로 및 파일명
class_names=['독','식용'], # 클래스 이름 표현 설정
feature_names=x_one_hot.columns, # 컬럼명 이름 표현 설정
impurity=False,
filled=True) # 색상을 채움.
# tree.dot 불러오면서 시각화(그래프화)
import graphviz
# 파일 다루는 파이썬 코드
with open('tree.dot', encoding ='UTF8') as f:
dot_graph =f.read()
display(graphviz.Source(dot_graph))
'Python' 카테고리의 다른 글
[Machine Learning] ex05_titanic 실습. part 02 (0) | 2023.09.01 |
---|---|
[ Machine Learning ] ex05_titanic 분류실습 (0) | 2023.08.31 |
< Dataframe 인덱싱 > (0) | 2023.08.31 |
[Machine Learning] Decision tree : 의사 결정 나무 (0) | 2023.08.30 |
[Machine Learning] ex04. mushroom 실습 (0) | 2023.08.30 |