트리 분석(Tree Analysis) 알고리즘은 데이터를 분류(Classification)하거나 예측(Prediction)하기 위한 방법 중 하나입니다.
트리 분석 알고리즘은 일련의 결정 규칙들로 이루어진 트리(Tree)를 만들어 데이터를 분류하거나 예측합니다. 이 트리는 뿌리(Root)에서 시작하여 분기(Branch)를 반복하며 종단 노드(Leaf node)에 이르는데, 각 분기마다 하나의 변수를 선택하고 그 변수를 기준으로 데이터를 분류합니다.
트리 분석 알고리즘은 다양한 종류가 있습니다. 대표적으로는 의사결정나무(Decision Tree)와 랜덤포레스트(Random Forest)가 있습니다. 의사결정나무는 단일 트리로 구성되어 있으며, 랜덤포레스트는 여러 개의 의사결정나무를 조합하여 구성된 앙상블(Ensemble) 모델입니다.
트리 분석 알고리즘은 해석이 용이하며, 변수의 중요도를 파악할 수 있어서 데이터 분석에서 많이 사용됩니다. 그러나 과적합(Overfitting) 문제가 있을 수 있기 때문에, 모델의 복잡도를 적절하게 조절하거나 앙상블 기법을 적용하여 이를 완화할 수 있습니다.
from sklearn import datasets
irisData = datasets.load_iris()
x_total = irisData.data
y_total = irisData.target
# 데이터 분할
from sklearn.model_selection import train_test_split, cross_val_score
x_train, x_test, y_train, y_test = train_test_split(x_total, y_total,test_size =0.5, random_state=10)
# 모형학습
from sklearn import tree
treeClass = tree.DecisionTreeClassifier()
treeClass.fit(x_train, y_train)
# 학습 결과 및 성능 평가
predictedClass = treeClass.predict(x_test)
print("훈련 집합의 예측 정확도 : ", treeClass.score(x_train, y_train))
print("테스트 집합의 예측 정확도 : ", (predictedClass == y_test).mean())
# 트리 도식화
import graphviz
dot = tree.export_graphviz(treeClass, out_file=None,
feature_names = irisData.feature_names,
class_names = irisData.target_names,
filled = True, rounded = True,
special_characters = True)
treeGraph = graphviz.Source(dot)
treeGraph
이 코드는 Iris 데이터를 Decision Tree Classifier를 사용하여 분석하고, 학습 결과 및 성능을 평가한 후 그 결과를 시각화하는 코드입니다.
코드의 구체적인 내용은 다음과 같습니다.
- sklearn.datasets 모듈로부터 Iris 데이터를 불러옵니다.
- train_test_split() 함수를 사용하여 데이터를 학습용(train)과 테스트용(test)으로 나눕니다.
- sklearn.tree 모듈로부터 Decision Tree Classifier를 가져와 fit() 함수로 학습을 수행합니다.
- score() 함수로 학습 결과를 평가하고, 테스트용 데이터에 대한 예측을 수행합니다.
- graphviz 모듈로부터 Source 클래스를 가져와 export_graphviz() 함수를 사용하여 학습된 Decision Tree Classifier의 시각화 결과를 생성합니다.
따라서 이 코드를 실행하면 Decision Tree Classifier를 사용하여 Iris 데이터를 분석한 결과를 시각화할 수 있습니다. 시각화된 결과를 통해, Decision Tree Classifier가 사용한 분류 규칙들을 쉽게 이해할 수 있습니다.
'Data Science' 카테고리의 다른 글
코딩 때문에 포기한 사람 여기 모여라! 코딩없이 배우는 데이터과학 (0) | 2023.03.25 |
---|---|
SVM(Support Vector Machine)은 지도 학습 알고리즘 (0) | 2023.03.20 |
[AI와빅데이터경영입문] kNN (0) | 2023.03.09 |
[AI와빅데이터경영입문] 선형회귀분석 (0) | 2023.03.09 |
[AI와빅데이터경영입문] 나이브베이즈 (0) | 2023.03.09 |