[프로젝트로 배우는 데이터사이언스] 의사결정나무로 간단한 분류 예측 모델 만들기
12882 단어 부스트코스프로젝트로 배우는 데이터사이언스부스트코스
✔ Supervised larning
- 정답이 있는 데이터
- 분류와 회귀로 나눌 수 있음 (Classification / Regression)
- ex) 고객의 구매 패턴에 따라 구매를 한다 / 안한다로 나눌 수 있는 데이터가 있다면 새로운 고객이 들어왔을 때 그 고객이 구매를 할 것이다 / 안 할 것이다 를 예측할 수 있음
💎 DecisionTreeClassifier
- 특정 조건에 따라 왼쪽과 오른쪽으로 트리를 타고 내려가며 분류를 진행
# 모델 피팅
from sklearn import tree
X = [[0, 0], [1, 1]]
Y = [0, 1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)
# 클래스 예측 >> output array([1])
clf.predict([[2., 2.]])
# 클래스 확률 예측 >> output array([[0., 1.]])
clf.predict_proba([[2., 2.]])
💎 의사결정나무로 당뇨병 데이터 분류 예측 모델 만들기
🔼 데이터 구성
- Pregnancies : 임신 횟수
- Glucose : 2시간 동안의 경구 포도당 내성 검사에서 혈장 포도당 농도
- BloodPressure : 이완기 혈압 (mm Hg)
- SkinThickness : 삼두근 피부 주름 두께 (mm), 체지방을 추정하는데 사용되는 값
- Insulin : 2시간 혈청 인슐린 (mu U / ml)
- BMI : 체질량 지수 (체중kg / 키(m)^2)
- DiabetesPedigreeFunction : 당뇨병 혈통 기능
- Age : 나이
- Outcome : 768개 중에 268개의 결과 클래스 변수(0 또는 1)는 1이고 나머지는 0입니다.
🔼 데이터셋 만들기
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
pd.read_csv('diabetes.csv')
# 데이터가 모두 숫자이기 때문에 전처리 생략
# 학습, 예측 데이터셋 나누기 (8:2의 비율로 나누어 담기)
train = df[:614].copy()
test = df[614:].copy()
# feature_names 변수에 학습과 예측에 사용할 컬럼명 가져오기
feature_names = train.columns[:-1].tolist()
# label_name 변수에 예측할 컬럼 담기
label_name = train.columns[-1]
# 학습 세트 만들기
X_train = train[feature_names]
print(X_train.shape)
X_train.head()
# 정답 값
y_train = train[label_name]
print(y_train.shape)
y_train.head()
# 예측에 사용할 데이터 세트 만들기
X_test = test[feature_names]
print(X_test.shape)
X_test.head()
# 예측의 정답값
y_test = test[label_name]
print(y_test.shape)
y_test.head()
🔼 의사결정나무로 학습과 예측하기
# 머신러닝 알고리즘 가져오기
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
# 학습
model.fit(X_train, y_train)
# 예측
y_predict = model.predict(X_test)
y_predict
🔼 예측한 모델의 성능 측정 및 분석
# 의사결정나무 시각화
from sklearn.tree import plot_tree
plt.figure(figsize=(20, 20))
tree = plot_tree(model,
feature_names=feature_names,
filled=True,
fontsize=10)
# feature의 중요도 추출
model.feature_importances_
# feature의 중요도 수치 시각화
sns.barplot(x=model.feature_importances_, y=feature_names)
# 실제값 - 예측값에 절대값을 씌운 값이 1이면 틀린 예측 >> output 42
diff_count = abs(y_test - y_predict).sum()
# 예측의 정확도 >> output 72%
(len(y_test) - diff_count) / len(y_test) * 100
# 사이킷런을 이용해 예측의 정확도 구하기 >> output 72%
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_predict)
# model의 score함수를 이용해 정확도 구하기 >> output 72%
model.score(X_test, y_test) * 100
Author And Source
이 문제에 관하여([프로젝트로 배우는 데이터사이언스] 의사결정나무로 간단한 분류 예측 모델 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yuzuzzang/프로젝트로-배우는-데이터사이언스-의사결정나무로-간단한-분류-예측-모델-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)