결정트리 모델이란 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 트리 (Tree)기반의 분류 규칙을 만드는것으로 이 모양이 나무를 닮아 Tree모델이다.
1. 타겟 변수를 제외한 변수만 data에 저장
data = df.drop(['stroke'], axis =1)
target = df['stroke']
data.shape
2. 1:3의 비율 언더샘플링
타겟변수 불균형 분포
from imblearn.under_sampling import RandomUnderSampler # RandomUnderSampler를 import
undersample = RandomUnderSampler(sampling_strategy=0.333, random_state=2)
# 타겟변수의 소수 클래스 및 다수 클래스를
# 1:3의 비율(=1/3)로 언더샘플링
data_under, target_under = undersample.fit_resample(data, target)
# data 및 target에 언더샘플링 적용
3. 50:50 비율로 데이터 분할
# 50:50 데이터 분할
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
data_under, target_under, test_size=0.5, random_state=42, stratify=target_under)
print("X_train shape:", X_train.shape)
print("X_test shape:", X_test.shape)
4. 결정트리 분류 모델
# Decision Tree 모델 (Default인 GINI기준이자 Maximal depth 조건)
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
tree = DecisionTreeClassifier(random_state=0) # Classifier로 DecisionTreeClassifer 지정
model = tree.fit(X_train, y_train) # Clssifier를 트레이닝 데이터셋에서 학습시킴
pred = model.predict(X_test) # 학습된 Classifier로 테스트 데이터셋 자료이용해서 타겟변수 예측값 생성
print("Accuracy(GINI) on training set:{:.5f}".format(model.score(X_train, y_train)))
print("Accuracy(GINI) on test set:{:.5f}".format(accuracy_score(y_test, pred)))
# Decision Tree 모델 (Gini 기준)
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import GridSearchCV
tree = DecisionTreeClassifier(criterion="gini", random_state=0, max_depth=5)
params = {'criterion':['gini','entropy'],'max_depth': range(1,21)}
grid_tree = GridSearchCV(tree, param_grid=params, scoring='accuracy', cv=5, n_jobs=-1,
verbose=1)
grid_tree.fit(X_train, y_train)
print("GridSearchCV max accuracy:{:.5f}".format(grid_tree.best_score_))
print("GridSearchCV best parameter:", (grid_tree.best_params_))
'머신러닝' 카테고리의 다른 글
연관분석(Associations) (0) | 2024.06.10 |
---|---|
k - 평균 군집 알고리즘 (개념 & 실습) (0) | 2024.06.10 |
Random Forest 모델 실습 (1) | 2024.06.10 |
댓글