728x90
반응형
이번에는 sklearn에 있는 load_iris 데이터를 이용하여 의사결정나무 모델을 학습해보겠습니다
우선 필요한 라이브러리를 불러와줍니다.
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import tree
전처리하기 위해 sklearn에 저장된 데이터를 불러옵니다
X, Y = load_iris(return_X_y = True)
Iris 데이터는 아래와 같이 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이 네 가지 변수와 세 종류의 붓꽃 클래스로 구성되어 있습니다
# DataFrame으로 변환
df = pd.DataFrame(X, columns=['꽃받침 길이','꽃받침 넓이', '꽃잎 길이', '꽃잎 넓이'])
df['클래스'] = Y
X = df.drop(columns=['클래스'])
Y = df['클래스']
# 학습용 평가용 데이터로 분리합니다
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state = 42)
Iris 데이터는 아래와 같이 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이 네 가지 변수와 세 종류의 붓꽃 클래스로 구성되어 있습니다
DecisionTreeClassifier (sklearn) :불순도를 최소로 하는 의사결정나무 모델을 구현
# DTmodel에 의사결정나무 모델을 초기화
DTmodel = DecisionTreeClassifier()
# 전처리된 데이터를 사용하여 학습을 수행
DTmodel.fit(train_X, train_Y)
학습한 결과에 대해 의사결정나무를 출력해봅시다
fig = plt.figure(figsize=(25,20))
_ = tree.plot_tree(DTmodel,
feature_names=['꽃받침 길이','꽃받침 넓이', '꽃잎 길이', '꽃잎 넓이'],
class_names=['setosa', 'versicolor', 'virginica'],
filled=True)
이렇게 학습을 했다면 새로운 데이터에 대해 예측해봅시다
예측을 해야 한다면 아래와 같이 predict 함수를 사용해줍니다
# test_X에 대해서 예측
pred_X = DTmodel.predict(test_X)
print('test_X에 대한 예측값 : \n{}'.format(pred_X))
test_X에 대한 예측값 : [1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0]
728x90
반응형