데이터 한 그릇

머신러닝(2)_데이터분리 본문

머신러닝/머신러닝기초

머신러닝(2)_데이터분리

장사이언스 2021. 7. 21. 17:37

머신러닝(2)

 

머신러닝 과정을 이해해보기

머신러닝의 기초단계

 

데이터 로드

 

 

사이킷런 유방암 데이터셋 불러오기

 

데이터 탐색

1. 데이터 프레임 만들기

 

2. Tidy data 확인

 

구조부터 확인하기

 

 

데이터의 기술통계 확인

기술통계 중에 통계 수치 확인하기

 

 

boxplot 그려서 각 데이터의 분포를 확인하기 (이상치도 확인)

 

머신러닝2

 

각 변수의 상관관계 정도를 시각화하여 확인하기.

걸리는 시간이 오래 걸리니 주의!

 

데이터전처리

 

3. 데이터 분리하기

 

본 데이터 셋을 훈련 데이터와 테스트 데이터로 나눈다.

훈련 데이터를 통해서 모델을 학습시키고, 학습된 모델을 테스트 데이터를 통해서 평가한다.

이때 훈련데이터에 들어있는 data와 target 비율은 테스트 데이터의 data와 target 비율과 동일해야만 한다.

또한 훈련데이터와 타겟 데이터는 중복된 데이터가 있으면 안된다.

 

 

데이터 프레임을 넣어서 데이터를 분리한다.

분리된 데이터의 길이를 살펴보면 두 개로 분리가 되어있다.

 

3.1 test_size

test_size = 0.25 로 디폴트값

 

 

test_size = 0.25 가 기본으로 설정되어 있음.

이 말은 만일 record 가 100개인 데이터셋이 있을 때, record를 train 으로 75개, test로 25 개를 배정하라는 뜻.

 

데이터셋 행 배정

X, train data -> 75%

y, test data -> 25 %

 

3.2 shuffle = True

또한

 

shuffle = True 가 default 따라서 순서가 제멋대로이다.

따라서 holdout 할 때 마다, 행의 순서는 달라져서 도출된다. (분리된 데이터 셋을 확인하면)

 

 

셔플을 하지 않으면 정순서대로 나누게 된다.

 

3.3 Random_state

 

 

실행시킬 때 계속 똑같은 결과가 나와야 하는 경우가 있다.

분리의 결과가 계속 똑같이 나온다.

 

3.4 데이터셋을 두 개 넣기

 

 

return => x_train, x_test, y_train, y_teset

x_train 을 보면 데이터 프레임 (data)

x_test 를 보면 데이터 프레임 (data)

y_train을 보면 시리즈 (target)

y_test 를 보면 시리즈 (target)

 

이때 주의해야할 점!

 

 

중요!!

 

train과 test를 분리할 때 앞서 test_size 를 설정해서 데이터 record 개수를 일정한 비율로 쪼개었다.

이때 train과 test에 있는 target 데이터의 각 레이블의 비율이 유지가 된채로 쪼개져야한다.

즉, 본 데이터에서 target 레이블이 0과 1이고, 0과 1의 비율이 5:5 이면,

train 데이터 안에서의 target 데이터의 0과 1의 비율도 5:5 여야 하며, test 데이터 안의 target 도 5:5 여야한다.

 

 

stratify 는 본데이터의 타겟 데이터 레이블 비율을 그대로 유지한채 train과 test 데이터로 분리한다.

y_train 과 y_test 의 레이블 비율을 확인해보니 똑같은 비율을 유지하고 있다.

 

로지스틱 회귀 모형 이용해보기

 

 

  1. 모형을 만든다.
  2. 분리한 데이터로 모형을 학습시킨다.
  3. 예측 결과 값을 predict 를 통해서 확인한다.
  4. 예측된 결과값과 실제 데이터 값과의 일치성을 확인하여 모델을 평가한다.

 

 

결과값의 정확도를 확인해볼 때 함수를 사용한다. lr.score(x_test, y_test) 이용

 

 

Comments