• 머신러닝의 기본 흐름

1. 문제정의

   >> 어떤 문제에 머신러닝을 이용할 것인지 선택

 

2. 데이터수집 및 전처리

  >> 문제에 맞는 데이터 수집 및 결측치, 이상치 등 데이터 전처리

 

3. 모델 선택

  >> 데이터에 알맞은 머신러닝 모델 선택 보통 클래스의 개수, 데이터의 종류에 맞춰서 모델을 선택한다.

 

4. 학습

  >> 선택한 모델을 활용하여 학습

 

5. 평가

  >> 학습이 잘 되었는지 평가 Accuracy, F1-score, Recall, Precision 평가지표 활용

 

6. 고도화

  >> 고도화는 모델을 평가하고 결과가 좋지 않다면, 다시 데이터 전처리 과정으로 돌아가 다른 방법을 시도


Python 코드

import os
import pandas as pd
import numpy as np

from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_score
from sklearn.metrics import classification_report, confusion_matrix

LR 참고 : [https://eunsukimme.github.io/ml/2019/10/22/Logistic-Regression/]

위 블로그에서 개념을 이해해보자..

 

문제 정의 및 데이터 수집, 전처리를 하고나면 데이터를 문제와 답, 학습과 훈련 셋으로 나눠준다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=42)

train_test_split 함수를 사용하여 test_size를 0.2로 하여 데이터를 나눈다.

 * test_size : test의 비율을 정함

 * random_state : 데이터를 나누는 방법(번호를 지정하면 다시 해도 같은 데이터로 나눈다)

 

모델 선택 및 파라미터 설정

param = {"C":[0.001, 0.01, 0.1, 1, 10, 100, 1000],
         "solver" : ['newton-cg','lbfgs','liblinear','sag','saga']
        }

gs = GridSearchCV(LogisticRegression(),param_grid=param,cv=5,verbose=2,n_jobs=-1)
gs.fit(X_train,y_train)

lr_model = LogisticRegression(C=gs.best_params_["C"],max_iter=100,solver=gs.best_params_["solver"])
lr_model.fit(X_train,y_train)
predict = lr_model.predict(X_test)

GridSearchCV를 통해 파라미터를 찾는다. (모델과 모델에 들어갈 파라미터를 설정해서 넣어준다.)

 * n_jobs = -1 : cpu를 최대로 사용 (빠르게 하기위한 설정)

LR모델을 사용중인데 대부분 비슷하게 사용한다.

 

모델 평가

from sklearn.metrics import confusion_matrix
predict = lr_model.predict(X_test)
confusion_matrix(y_test,predict)

 [out] ( confusion_matrix )  [[TP, FN], [FP, TN]]

array([[ 0, 60],
       [ 0, 84]])

from sklearn.metrics import classification_report
print(classification_report(y_test,predict))

[out] ( 좋은 결과는 아니지만 .. 이런식으로 나온다..) 

              precision    recall  f1-score   support

           0       0.00      0.00      0.00        60
           1       0.58      1.00      0.74        84

    accuracy                           0.58       144
   macro avg       0.29      0.50      0.37       144
weighted avg       0.34      0.58      0.43       144

위와 같이 결과를 보고 좋은 결과가 아니면 다시 전처리 작업을 통해 성능을 좋게 해보자!

+ Recent posts