Hippo's data
머신러닝 주요 모델 모델링(Scikit-learn) 본문
오늘은 머신러닝에 쓰이는 주요 모델들의 모델링 방법에 대해 알아보겠습니다!!!
특히 머신러닝에서 유용하게 사용되는 라이브러리인 사이킷런(Scikit-learn)을 이용해보겠습니다
모델을 처음부터 구현하는 것은 굉장히 어려운 일인데요 사이킷런 라이브러리를 활용하면 간단한 코드 몇줄만으로 모델링을 진행할 수 있습니다!
모델링은 크게 4가지 단계로 구성되는데요
1) 불러오기
2) 모델 생성
3) 모델 학습
4) 예측
### 모델링 이전 X(학습데이터)와 y(정답데이터)를 생성하고 train(학습), test(검증) 데이터셋을 생성하는 작업이 필요합니다!!
y = df['타겟변수'] # 타겟변수(종속변수)가 존재하는 데이터 생성
X = df.drop('타겟변수' , axis = 1) # 타겟변수(종속변수)가 제외된 데이터 생성
from sklearn.model_selection import train_test_split # 사이킷런 validation set 생성 위한 라이브러리 불러오기
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2, # 훈련 : 검증 데이터 비율 8:2
stratify=y, # 층화추출 -> 각 클래스 분포비율고려 분할
random_state=42)
이제 각 모델에 대해 소개하겠습니다!
1. 선형 회귀(Linear Regression)
-> 데이터를 설명하는 최적의 직선을 기반으로 예측 진행
- coef_ : 학습된 모델 변수 가중치(W_1 ~ W_P)
- intercept_ : 학습된 모델 절편(W_0)
1) 불러오기
from sklearn.linear_model import LinearRegression
2) 모델 생성
reg = LinearRegression( fit_intercept=True )
# 하이퍼파라미터 (fit_intercept)
fit_intercept=True -> 절편계산O
fit_intercept=False -> 절편계산X, 원점지날때
3) 모델 학습
reg.fit(X_train, y_train)
4) 예측
y_pred = reg.predict(X_test)
2. 로지스틱 회귀 (Logistic Regression)
-> 시그모이드(sigmoid)함수를 이용하여 예측 / 이름에 회귀가 있지만 분류문제!!!!
1) 불러오기
from sklearn.linear_model import LogisticRegression
2) 모델 생성
lg = LogisticRegression(C=1.0,max_iter=2000, penalty='l1')
# 하이퍼파라미터 (C, max_iter, penalty)
C -> 규제(regularization) 강도 조절 / 큰값(규제약해짐, 과적합 위험), 작은값(규제강해짐, 과소적합 위험)
penalty -> 규제(regularization) 종류 선택('l1'(Lasso), 'l2'(Ridge), 'elasticnet', 'none')
max_iter -> 알고리즘 수렴위한 최대 반복계산 횟수
3) 모델 학습
lg.fit(X_train, y_train)
4) 예측
y_pred = lg.predict(X_test)
3. 의사결정나무(DecisionTree)
-> 스무고개 하듯이 참, 거짓으로 질문하며 학습진행
-> 결과 설명용이함 / 예측과 분류 문제 모두 사용 가능 / 과적합 확률 높음
1) 불러오기
from sklearn.tree import DecisionTreeClassifier
2) 모델 생성
dt = DecisionTreeClassifier(max_depth=10, max_features=10, min_samples_split=2, random_state=42 )
# 하이퍼파라미터 ( max_depth , max_features, min_samples_split )
max_depth -> 최대 깊이 / 과적합 방지
max_features -> 최대로 사용할 변수 개수 / 과적합 방지
min_samples_split -> 트리 노드 최소 샘플수 / 과적합 방지
3) 모델 학습
dt.fit(X_train, y_train)
4) 예측
y_pred = dt.predict(X_test)
# matplotlib / graphviz 이용해서 트리구조 시각화 가능
< 최종평가 >
-> 최종적으로 모델링 후 모델의 성능 평가를 해야함
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 사이킷런 다양한 평가지표이용가능
accuracy_score(y_test, y_pred) # 정확도 지표 이용하여 최종 평가
'ML(Machine Learning)' 카테고리의 다른 글
하이퍼파라미터(Hyperparameter) 튜닝 - 그리드서치, 랜덤서치 (0) | 2024.01.11 |
---|---|
앙상블(Ensemble) (0) | 2024.01.08 |
모델 평가 - 회귀(Regression) 모델 (0) | 2024.01.07 |
모델 평가 - 분류(Classification) 모델 (0) | 2024.01.06 |
변수 선택(Feature selection) - RFE/RFE-CV/UFS (1) | 2024.01.02 |