[Boostcourse] ML (2)

BBakHye·2022년 11월 3일
0

🦁 AI SCHOOL 7기

목록 보기
13/52
post-thumbnail

✨ 처음부터 차근차근, 내 페이스 대로 ✨

강의: 부스트코스 - 프로젝트로 배우는 데이터사이언스

데이터셋 출처: 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)
  • Gini계수가 0이되면 트리가 멈추고 당뇨병이다 아니다를 판단.
  • 트리가 깊어질수록 트리가 train 데이터셋에 너무 집중 학습하게되는 경향이 있다
    👉🏻 Overfitting 현상. 이걸 방지하기 위해 트리의 깊이를 제한함.

✅ 오늘까지 수강 완료한 섹션:
1. 분류모델 기초 // 완강

profile
데이터 분석가가 되기 위한 기록 ✏️

0개의 댓글