분류 트리 실행

2201 단어

산출





설명



일련의 설명 변수와 이분형 범주형 반응 변수 사이의 비선형 관계를 테스트하기 위해 결정 트리 분석을 수행했습니다. 가능한 모든 분리(범주형) 또는 절단점(정량적)을 테스트합니다.

이 결정 트리는 이러한 변수를 사용하여 출력 변수(TREG1)를 예측합니다. 즉, 사람이 흡연자인지 여부입니다.

BIO_SEX – 범주형 – 성별
GPA1 – 숫자 – 현재 GPA
ALCEVR1 – 바이너리 – 알코올 사용
WHITE – 바이너리 – 참가자가 백인인지 여부
BLACK – 바이너리 – 참가자가 흑인인지 여부
의사 결정 트리를 훈련하기 위해 주어진 데이터 세트를 70/30의 비율로 훈련 및 테스트 데이터 세트로 분할했습니다.

트리를 맞춘 후 테스트 데이터 세트에서 테스트했고 정확도 = 0,826을 얻었습니다. 이는 세 가지 설명 변수에만 기반을 둔 모델에 좋은 결과입니다.

의사 결정 트리에서 다음을 관찰할 수 있습니다.

술을 사용한 참가자는 흡연자일 가능성이 더 높았습니다.(술을 사용한 흡연자는 최대 5배 더 많음)
대부분의 흡연자는 백인입니다.
GPA가 낮은 사람들은 일반 흡연자가 더 일반적입니다.
위 출력에 대한 코드는 다음과 같습니다.

import pandas as pd
import sklearn.metrics
from numpy.lib.format import magic
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
from io import StringIO
from IPython.display import Image
import pydotplus
RND_STATE = 55324

AH_data = pd.read_csv(“data/tree_addhealth.csv”)
data_clean = AH_data.dropna()
data_clean.dtypes
data_clean.describe()

predictors = data_clean[[‘BIO_SEX’,’GPA1′, ‘ALCEVR1’, ‘WHITE’, ‘BLACK’]]

targets = data_clean.TREG1

pred_train, pred_test, tar_train, tar_test = train_test_split(predictors, targets, test_size=0.3)

classifier=DecisionTreeClassifier(random_state=RND_STATE)
classifier=classifier.fit(pred_train, tar_train)
predictions=classifier.predict(pred_test)

print(“Confusion matrix:\n”, sklearn.metrics.confusion_matrix(tar_test,predictions))
print(“Accuracy: “,sklearn.metrics.accuracy_score(tar_test, predictions))

out = StringIO()
tree.export_graphviz(classifier, out_file=out, feature_names=[“sex”, “gpa”, “alcohol”, “white”, “black”],proportion=True, filled=True, max_depth=4)
graph=pydotplus.graph_from_dot_data(out.getvalue())
img = Image(data=graph.create_png())
img

with open(“output” + “.png”, “wb”) as f:
f.write(img.data)

좋은 웹페이지 즐겨찾기