sklearn공부(1)-Decision Tree
Decision Tree 만들기.
import sklearn
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split # 학습과 테스트 set을 나눠주는 역할
from sklearn.tree import DecisionTreeClassifier
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, random_state = 42)
# 여기서 random_state = 42는 random seed를 준 것임.
model = DecisionTreeClassifier(criterion='entropy')
model
entropy 란 무질서도를 측정하는 값.
나눴을 때 무질서랑 순수도가 가장 낮아지는 split pointer 를 고를 수 있도록 학습
예) 2.45로도 해보고 3.1로도 해보니 2.45로 나눴을 때 무질서가 가장 낮아져서 그 값을 골라준다.
Decision Tree
엔트로피의 손실함수
Loss(p(y = 1)) = -y \log p(y=1) - (1-y)log(1-p(y=1))gini 함수
max_depth
- 너무 깊게 파면 overfitting 발생
min samples leaf
이거 이하로 leaf를 안 만들어줄거다.
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
여기서 data는 무슨 type일까?
Bunch type
dictionary 와 유사한 형식을 지닌 구조체
print(data.keys())
=> dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename']`
Model 학습, 예측
import numpy as np
model.fit(X_train, y_train)
y_pred = model.predict(X_test) # 예측한 y 값.
- 모델이 잘 학습되었는지 확인하기.
(y_pred == y_test).mean()
model.score(X_test, y_test)
tree = model.tree\_ # 모델의 학습 내용은 모두 tree\_에 저장되어 있습니다.
graphviz로 decision tree 확인하기.
import graphviz
from sklearn.tree import export_graphviz, plot_tree
plot_tree(model)
dot_data = export_graphviz(model, out_file='tree.dot',
feature_names = data.feature_names,
class_names = data.target_names,
filled = True, rounded = True,
special_characters = True)
with open("tree.dot") as f:
dot_graph = f.read()
dot = graphviz.Source(dot_graph); dot.format='png'
dot.render(filename='tree')
text로 확인하기
from sklearn.tree import export_text treetext = export_text(model, decimals = 4, feature_names = list(data.feature_names)) print(treetext)
sklearn.preprocessing의 StandardScaler
- min/max scaler(0~1값으로)(이미지 처리)
- X => X' : X' = (X-X.min()) / (X.max() - X.min())
- StandardScaler데이터들의 단위를 맞춰주자.
- X => X' : X' = (X - X.mean()) / X.std()
- RobustScaler(이상치에 의해서 데이터 분포값이 왜곡될 수도)
- X => X' : (X-X.median()) / IQR(X)
from sklearn.preprocessing import StandardScaler
print(X_train[:1])
scaler = StandardScaler()
X_tr_scaled = scaler.fit_transform(X_train) # fit_transform: 학습과 변환을 한번에 수행해주는 역할
print(X_tr_scaled[:1])
'Computer Science > 파이썬라이브러리&sklearn&keras' 카테고리의 다른 글
ML&DL_sklearn공부(2) << Iris Data를 이용한 학습과 평가 (0) | 2020.08.13 |
---|---|
딥러닝 >> Sequence Model과 Attention mechanism(deep learning.ai강의) (0) | 2020.07.23 |
학교 공부 >> dlib 설치 오류&해결 (0) | 2020.04.11 |
DataStructure::Segmentation fault 11 error (0) | 2019.04.24 |