✨ 처음부터 차근차근, 내 페이스 대로 ✨
데이터셋 출처: Pima Indians Diabetes Database | Kaggle
## 학습, 예측 데이터셋 나누기
# 8:2 의 비율로 구하기 위해 전체 데이터의 행에서 80% 위치에 해당되는 값을 구해서 split_count 라는 변수에 담습니다.
split_count = int(df.shape[0] * 0.8)
# train, test로 슬라이싱을 통해 데이터를 나눕니다.
train = df[:split_count].copy() # 명시적인 복사
test = df[split_count:].copy()
## 학습, 예측에 사용할 컬럼 지정
# feature_names 라는 변수에 학습과 예측에 사용할 컬럼명을 가져옵니다.
# 여러값을 가져올거라 컬럼들을 리스트에 담아줌.
feature_names = train.columns[:-1].tolist()
## 정답값 컬럼 지정
# label_name 이라는 변수에 예측할 컬럼의 이름을 담습니다.
# 정답값으로 쓸 컬럼은 하나이기 때문에 리스트에 담지 않음.
label_name = train.columns[-1]
## 학습, 예측 데이터셋 만들기
X_train = train[feature_names]
y_train = train[label_name]
X_test = test[feature_names]
y_test = test[label_name]
## 머신러닝 알고리즘 가져오기 (분류)
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
## 학습
# 모의고사 문제와 답을 학습시킨다
model.fit(X_train, y_train)
## 예측
# y_test값을 넣지 않고 X_test값만 넣음
y_predict = model.predict(X_test)
## 의사결정나무 시각화하기
from sklearn.tree import plot_tree
tree = plot_tree(model,
feature_names = feature_names,
filled = True, fontsize = 10)
## 피처의 중요도를 추출하기 - 지정한 피처의 순서에 따라 중요도가 표시됨
model.feature_importances_
## 피처의 중요도 시각화 하기
# 의사결정나무에서 가장 위에 있던 글루코스가 피처중요도에서도 가장 높은 것을 확인 할 수 있다.
sns.barplot(x=model.feature_importances_, y=feature_names)
## 정확도 측정하기
# 1. 직접 구하기
y_pred = (y_test == y_predict).mean()
# 2. 알고리즘 사용해서 구하기
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_predict) * 100
# 3. model 의 score 로 점수를 계산합니다. - 정답값을 알고 있을 때만 사용할 수 있는 방법
model.score(X_test, y_test)
✅ 오늘까지 수강 완료한 섹션:
1. 분류모델 기초 // 완강