머신러닝

[머신러닝] 데이터 분석의 과정 - 개요

서노리 2022. 4. 22. 00:19
반응형

1. 데이터의 적재(로딩)

import pandas as pd
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer()

- 설명변수(X) : 특정 종속변수를 유추하기 위해서 저장된 데이터셋

- 종속변수(y) : 정답 데이터

X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)

 

2. 데이터의 관찰(탐색)

DataFrame.info()를 통해서 데이터의 개수, 컬럼의 개수, 각 컬럼의 데이터 타입을 확인한다.반드시 수치형의 데이터만 머신러닝에 활용할 수 있으므로 문자형인 경우에는 전처리를 통해 수치형으로 변환해주어야 한다.

 

또한 DataFrame.describe()를 통해서 데이터를 구성하는 컬럼들의 기초통계정보들을 확인하고 각 컬럼들의 스케일 부분을 중점적으로 체크한다. 각 컬럼 별 스케일의 오차가 존재하는 경우 머신러닝 알고리즘의 종류에 따라서 전처리가 필요하다.

print(X.info())

# pandas 라이브러리의 옵션을 설정
# - 출력 컬럼의 개수를 제어
pd.options.display.max_columns = 30
# - 출력 컬럼의 행를 제어
# pd.options.display.max_rows = 100

# - 데이터의 개수
# - 평균, 표준편차
# - 최소, 최대값
# - 4분위수
print(X.describe())

 

종속변수의 값이 범주형(남자/여자 처럼 카테고리가 있는 경우)인 경우 값의 개수 비율이 중요하다.

예시를 통해 그 이유를 알아보자. 만약 예측하려는 데이터에서 악성인 케이스 1%와 악성이 아닌 케이스 99%가 있다면 무조건 악성이 아님으로 예측만 수행해도 99%의 정확도를 가지는 문제가 발생한다. 이런 경우 데이터의 비율에서 많은 차이가 발생하는 경우 오버샘플링 / 언더샘플링을 사용하여 해결할 수 있다.

# 범주형 값의 확인 및 개수 체크
print(y.value_counts())

# 범주형 값의 비율 체크
print(y.value_counts() / len(y))

3. 데이터의 분할

머신러닝의 경우 데이터를 학습 데이터 70 ~ 80%, 테스트 데이터 30 ~ 20% 정도의 비율로 분할한다.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size=0.2,
                                                    stratify=y,
                                                    random_state=30)

※ hyper parameter 설명

- test_size:  테스트 데이터의 비율을 의미한다.

- stratify:  데이터가 분류형 데이터셋인 경우에만 사용한다. 각 범주형 값의 비율을 유지하면서 데이터를 분할해준다.

- random_state:  데이터의 분할된 값이 항상 동일하도록 유지해준다. 이를 이용해 머신러닝 알고리즘의 hyper parameter를 테스트할 때 데이터는 고정시키고 학습 방법만 제어해보면서 성능을 테스트할 수 있다.  

 

4. 데이터 전처리

데이터 전처리의 종류는 다음과 같다.

  • 스케일 처리 (MinMax, Standard, Robust)
  • 인코딩 처리 (라벨 인코딩, 원핫 인코딩)
  • 차원 축소
  • 특성 공학

스케일 처리 - MinMaxScaler

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()

사이킷런의 전처리 클래스들은 학습용 클래스와 유사하게 아래와 같은 메소드를 제공한다.

  • fit : 전처리 과정에 필요한 정보를 수집하는 메소드
  • transform : fit 메소드에서 인지한 결과를 바탕으로 데이터를 변환하여 반환하는 메소드
  • fit_transform : fit과 transform 메소드를 하나로 합친 메소드

 

전처리 과정의 데이터 학습은 학습 데이터를 기준으로 수행하고 테스트 데이터는 학습 데이터에 반영된 결과를 수행한다.

MinMaxScaler는 학습 데이터의 최소 / 최댓값을 기준으로 스케일링을 수행한다.

scaler.fit(X_train)

# - 학습 데이터 스케일 처리 수행
X_train = scaler.transform(X_train)
# - 테스트 데이터는 학습 데이터를 기준으로 변환 과정만 수행
X_test = scaler.transform(X_test)

 

다음 단계는 머신러닝 모델의 구축이다. 다음 포스팅에서 계속...


 

반응형