본 포스팅은 작업형 2유형의 실습을 위해 작성하겠습니다.
이번 시간에는 평가 함수, 사용 라이브러리 import에 대해 알아보겠습니다.
실습 코드 위주로 작성하였으며 필요한 부분을 숙지하시어 실기 시험에 주요 키 포인트로 쓰시길 바라겠습니다.
작업형 2유형의 경우 여러 함수가 쓰입니다.
그 중 문제에 따라, 2항 분류, 다항 분류, 회귀로 문제가 설정이 됩니다.
각각의 특징에 따라 사용되는 함수가 달라집니다.
평가 함수
1. 2항 분류
#2항 분류
from sklearn.metrics import roc_auc_score, f1_score
def get_scores(model, x_train, x_test, y_train, y_test):
A = model.score(x_train, y_train) # accuracy
B = model.score(x_test, y_test) # accuracy
y_pred = model.predict(x_test)
C = f1_score(y_test, y_pred)
y_proba = model.predict_proba(x_test)[:, 1]
D = roc_auc_score(y_test, y_proba)
return f'ACC: {A:.4f} {B:.4f} F1: {C:.4f} AUC: {D:.4f}'
2. 다항 분류
#다항 분류
from sklearn.metrics import f1_score, roc_auc_score
def get_scores(model, x_train, x_test, y_train, y_test):
A = model.score(x_train, y_train)
B = model.score(x_test, y_test)
y_pred = model.predict(x_test)
C = f1_score(y_test, y_pred, average='macro')
y_proba = model.predict_proba(x_test)
D = roc_auc_score (y_test, y_proba, average='macro', multi_class='ovo')
return f'ACC: {A:.4f} {B:.4f} F1: {C:.4f} AUC: {D:.4f}'
3. 회귀
#회귀
from sklearn.metrics import mean_squared_error as mse
from sklearn.metrics import mean_absolute_percentage_error as mape
from sklearn.metrics import mean_squared_log_error as msle
# msle, rmsle -> 음수가 있어서는 안됨
# rmse, rmsle -> sklearn.metrics에 없음
# -> mse ** 0.5 -> rmse, msle ** 0.5 -> rmsle
def get_scores(model, x_train, x_test, y_train, y_test):
A = model.score(x_train, y_train) # r2_score
B = model.score(x_test, y_test)
y_pred = model.predict(x_test)
y_pred = np.where(y_pred > 0, y_pred, -y_pred) # 음수처리 방법
C = mse(y_test, y_pred) ** 0.5
D = mape(y_test, y_pred)
E = msle(y_test, y_pred) ** 0.5 # 음수가 있어서는 안됨
return f'R2 : {A:.4f} {B:.4f} rmse : {C:.4f}, mape: {D:.4f}, rmsle {E:.4f}'
사용되는 라이브러리 import
주요하게 쓰이는 라이브러리만 추가하였습니다.
1. 분류
#분류
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
#모델링 시 과대적합 해결하기 위해 acc값이 비슷해져야하며 f1, auc는 1에 가까워져야함.
model1 = DecisionTreeClassifier(max_depth=3, random_state=1234)
model1.fit(x_train, y_train)
print(model1.get_depth()) #처음 depth를 찍어보고 점점 줄여가보기
print(get_scores(model1, x_train, x_test, y_train, y_test))
model2 = RandomForestClassifier(max_depth=3, n_estimators=100, random_state=1234) #n_estimators 늘렸다 줄였다해보기
model2.fit(x_train, y_train)
print(get_scores(model2, x_train, x_test, y_train, y_test))
model3 = KNeighborsClassifier(3) #1은 넣으면 안됨. 점차 높은 숫자 넣어보기
model3.fit(x_train, y_train)
print(get_scores(model3, x_train, x_test, y_train, y_test))
2. 회귀
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
#rmse 값이 작을 수록 평가가 좋음.
model = RandomForestRegressor(max_depth=30, n_estimator=100, random_state=1234)
#max_depth, n_estimator 값은 계속 바꿔주며서 scores 체크해준다.
model.fit(x_train, y_train)
print(get_scores(model, x_train, x_test, y_train, y_test))
'IT.데이터' 카테고리의 다른 글
빅데이터 분석기사 실기 - 작업형 1유형 준비 / 2회, 3회, 4회, 5회 기출 변형 핵심 코드 공유 (0) | 2023.06.22 |
---|---|
빅데이터 분석기사 실기 - 작업형 2유형 준비 / 2회 기출 변형 해설 (0) | 2023.06.22 |
빅데이터 분석기사 실기 - 작업형 3유형 준비 / 카이제곱, 피셔의 정확 검정 (Fisher's Exact Test), 비모수 검정 (0) | 2023.06.20 |
빅데이터 분석기사 실기 - 작업형 3유형 준비 / t-test, ANOVA (0) | 2023.06.19 |
빅데이터 분석기사 실기 - 작업형 3유형 준비 / 예상문제 풀이 (0) | 2023.06.19 |
댓글