Hseong

[KT AIVLE SCHOOL 7기] - 머신러닝(2) 분류 본문

KT AIVLE SCHOOL 7기

[KT AIVLE SCHOOL 7기] - 머신러닝(2) 분류

__hseong__ 2025. 4. 8. 19:42
728x90
반응형

 

저번 시간에는 공기질 데이터에 대해서 다루면서, 선형회귀 모델을 그리고 모델을 돌리기 위한 데이터의 이해와 전처리를 했으므로 이번에는 앞서 했던 과정의 일부는 생략하고 중요한 것만 남겨보기로 했다!

# 데이터 읽어오기
path = 'https://raw.githubusercontent.com/Jangrae/csv/master/admission_simple.csv'
data = pd.read_csv(path)
# 상/하위 몇 개 행 확인
data.head()

이번에는 입학한 학생의 데이터를 보여주는 것인데, 앞서 한 데이터랑 다르다면 adimit ,research 의 경우 0 또는 1 언어로치면 True, False와 같은 입학여부를 뜻하므로 이는 수치형이 아닌 범주형 데이터이다! 그래서 해당 결과를 y 값을 잡고 선형회귀를 해버린다면 의미가 없으므로 이를 위해 분류 모델을 사용해보겠다!

# 변수 확인
data.info()
# 기술통계 확인
data.describe()
# 상관관계 확인
data.corr(numeric_only=True)

  • 항상 말하지만 데이터의 전처리를 할 때는 결측치 확인을 하자! 운이 좋게 여기서는 결측치가 없다 
  • 그리고 데이터의 분포를 확인하기 위해 기술통계 describe를 통해서 확인해준다
  • 그리고 상관 관계 즉, 의미있는 변수들을 추출하기 위해 corr 를 위해 확인한다!

  • 현재 y값에 입학여부(범주형)인 ADMIT을 잡고, 나머지를 x값에 넣어서 분류 모델을 진행하려고 한다!
  • 상관관계를 통해서 어느정도 파악을 하고 실행해보자!
# 1단계: 불러오기
from sklearn.tree import DecisionTreeClassifier
# 2단계: 선언하기
model = DecisionTreeClassifier()
# 3단계: 학습하기
model.fit(x_train, y_train)
# 4단계: 예측하기
y_pred = model.predict(x_test)
  • 이번에는 의사결정트리를 이용하고, 모델을 선언한 뒤에 7:3으로 훈련,테스트 데이터를 나누고, 예측을 한다!
# 모듈 불러오기
from sklearn.metrics import confusion_matrix

# 성능 평가
print(confusion_matrix(y_test, y_pred))
# 혼동행렬 시각화
plt.figure(figsize=(8, 5))
sns.heatmap(confusion_matrix(y_test, y_pred), 
            annot=True, 
            cmap='Blues',
            cbar=False,
            square=True,
            annot_kws={'size': 8})
plt.show()

  • 평가 지표로는 confusion matrix를 이용하여 시각화 시켰고, 이를 평가지표로 사용한다.
  • 여기서 Recall은 Actual 값 중 Actual 라고 예측한 값의 비율을 , Precision은 Actual 이라고 예측한 값들 중에 Actual값의 비율을 의미한다
  • F1 score는 2*Recall*Precision / Precision + Recall 을 의미한다.
# 모듈 불러오기
from sklearn.metrics import classification_report

# 성능 평가
print(classification_report(y_test, y_pred))

그리고 classification_report를 통해 일일히 확인안하고 위 그림처럼 지표별 요약이 쭉 나오니 기억해야한다!

728x90
반응형