본문 바로가기

KT AIVLE SCHOOL

[4주차] 머신러닝

목차

1. 분류

2. 회귀

3. 정리 및 예시

 

 

1. 분류

1.1 분류 모델

DecisionTreeClassifier from sklearn.tree import DecisionTreeClassifier
KNeighborsClassifier from sklearn.neighbors import KNeighborsClassifier
LogisticRegression from sklearn.linear_model import LogisticRegression
RandomForestClassifier from sklearn.ensemble import RandomForestClassifier
XGBClassifier from xgboost import XGBClassifier 
LGBMClassifier from lightgbm import LGBMClassifier

 

# knn모델선언 예시
model = KNeighborsRegressor(n_neighbors=5)

# 학습
model.fit(x_train, y_train)

# 예측
y_pred = model.predict(x_test)

# 평가(r2)
print(r2_score(y_test,y_pred))

 

1.2 분류 평가

accuracy_score from sklearn.metrics import accuracy_score 실제 값을 정확히 예측한 비율
(TP+TN) / (전체)
recall_score from sklearn.metrics import recall_score 실제인 것중 예측한 비율
TP / (TP+FN)
precision_score from sklearn.metrics import precision_score 예측한 것중 실제인 비율
TP / (TP +FP)
classification_report from sklearn.metrics import classification_report 각 클래스별 평가지표
confusion_matrix from sklearn.metrics import confusion_matrix 혼동 행렬

 

 

2. 회귀

2.1 회귀 모델

LinearRegression from sklearn.linear_model import LinearRegression
KNeighborsRegressor from sklearn.neighbors import KNeighborsRegressor
DecisionTreeRegressor from sklearn.tree import DecisionTreeRegressor
RandomForestRegressor from sklearn.ensemble import RandomForestRegressor
XGBRegressor from xgboost import XGBRegressor
LGBMRegressor from lightgbm import LGBMRegressor

 

2.2 회귀 평가

mean_absolute_error from sklearn.metrics
import mean_absolute_error
오차 절대값의 평균
mean_squared_error from sklearn.metrics
import mean_squared_error
오차제곱(SSE)의 평균
root mean_squared_error mse에서 math.sqrt 혹은 **(1/2) MSE에 루트
mean_absolute_percentage_error from sklearn.metrics
import mean_absolute_percentage_error
오차 비율
r2_score from sklearn.metrics
import r2_score
전체 오차 중에서 회귀식이 잡아낸 오차 비율 (MSE의 표준화된 버전, R2=1이면 MSE=0, R2 = SSR/SST = 1 - SSE/SST)

 

 

3. 정리 및 예시

 

그 외에 필요한 것

가중치
확인
coef_ model.coef_ 회귀계수(=가중치)
intercept_ model.intercept_ 편향
스케일링 정규화 (Normalization) from sklearn.preprocessing
import MinMaxScaler
각 변수의 값이 0과 1사이 값이 됨
(X-Xmin) / (Xmax - Xmin)
표준화 (Standardization) from sklearn.preprocessing
import StandardScaler
각 변수의 평균이 0, 표준편차가 1이 됨
(X-Xmean) / X(std)
하이퍼파라미터 튜닝 Random Search from sklearn.model_selection
import RandomizedSearchCV
파라미터 값 범위에서 몇 개 선택 후 최선을 찾아냄
(n_iter 수행)
Grid Search from sklearn.model_selection
import GridSearchCV
파라미터 값 범위를 모두 사용 후 최선을 찾아냄
결측치
처리
ffill / bfill data.fillna(method='ffill', inplace=True)
data.fillna(method='bfill', inplace=True)
ffill : 바로 앞의 값으로 채우기
bfill : 바로 뒤의 값으로 채우기
선형 보간법 data.interpolate(method='linear', inplace=True) 선형을 유지하게 결측치 채움
가변수화
(원핫인코딩)
get_dummies pd.get_dummies(titanic, columns=dumm_cols, drop_first=True) 다중공선성을 없애기 위해 drop_first
OneHotEncoder from sklearn.preprocessing
import OneHotEncoder
ohe = OneHotEncoder(sparse=False)
sparse=True가 디폴트(매트릭스를 반환)

스케일링 예시

# 정규화
scaler = MinMaxScaler()
sclaer.fit(x_train)
x_train_s = scaler.transform(x_train)
x_test_s = scaler.transform(x_test)

하이퍼파라미터 튜닝 예시

from sklearn.svm import SVR

param_grid = {
    'C': [0.1, 1, 10],  # C 파라미터 범위 설정 (작은 값부터 큰 값까지)
    'kernel': ['linear', 'rbf', 'poly'],  # 커널 함수 설정
    'epsilon': [0.1, 0.2, 0.5],  # epsilon 파라미터 범위 설정
}

# SVR 모델 생성
model_dt = SVR()

# Grid Search 모델 생성
model = GridSearchCV(
    model_dt,  # 기본 모델 설정
    param_grid,  # 탐색할 하이퍼파라미터 범위
    cv=5,  # 5-폴드 교차 검증 사용
    scoring='neg_mean_absolute_error',  # 평가 지표 설정 (MAE의 음수값)
)

# 최적 파라미터
model.best_params_

# 최고 성능
model.best_score_