비전공자를 위한 개쉬운 인공지능 코딩- 딥러닝용 데이터 라벨링하기 (2-3)
지난 시간엔 어디서 어떤 종류의 데이터를 가져오는 간단한 방법, 데이터 전처리의 개념과 간단한 예제를 다루어보았다.
이번엔 지난 시간의 숙제 데이터였던 인디언들의 당뇨병 여부를 포함한 5년동안의 의료기록을 이후 당뇨병 확률을 예측하기 위한 데이터 라벨링 기법을 다루어본다.
데이터 라벨링이란 우리가 가져온 '인디언 의료기록 데이터' 나 '캘리포니아 주택동향' 데이터와 같이 사람이 만든 데이터를 AI가 학습할 수 있도록 0과 1등으로 가공하는 과정으로 전처리의 일종이기도 하다.
자료의 설명란을 보면 알 수 있지만, 인디언 데이터를 처음 가져오면
이런 형태로, 각 열은 아래와 같다 (다운받을 때 다 설명이 쓰여있다)
A: 임신횟수
B: 경구 포도당 내성검사에서의 2시간 동안 혈장 포도당 농도
C : 이완기 혈압
D : 삼두근 피부 주름 두께
E : 2시간 혈청 인슐린
F : 체질량 지수
G: 당뇨병 가계도 기능
H: 나이
I: 당뇨병 판정 여부 ( 1: 양성, 0: 음성)
딥러닝, 머신러닝 을 포함한 인공지능 알고리즘 대부분이 'input data' 를 받아 학습해 'output data' 의 형태로 결과를 내뱉는다
따라서 이번의 인디언 의료 데이터는 A~H 까지는 input 데이터 X 변수로 , I는 output 데이터 y로 사용한다.
이를 통해 우리가 개발할 딥러닝 프로그램은 X를 y에 mapping 하는 모델이며 이전 장에서 배웠던 데이터 슬라이싱을 이용해 아래와 같이 나눌 수 있다.
X = dataset[:,0:8]
y = dataset[:,8]
인디언 의료기록 데이터셋과 같은 Kaggle이 제공하는 오픈소스 데이터의 종속변수 (y) 는 보통 0과 1로 잘 라벨링되어 공개된다.
하지만 우리가 실제로 다른 경우에서 자기만의 딥러닝 모델을 사용할때 필요한 데이터에는 라벨링이 되어있지 않을 가능성이 크고, 실제로 엑셀을 열어서 한땀한땀 하기에 굉장히 노동력이 많이 필요하고 실수할 가능성이 높다.
이를 위해 keras.util 레고 상자의 to_categorical 이라는 함수(레고)가 있다.
이는 데이터의 종속 변수를 0/1과 같이 one-hot encodeing을 해주는 함수로, 10진 정수 형식을 2진 바이너리 형식으로 바꿔준다.
from keras.utils import np_utils
y_data = tf.keras.utils.to_categorical(종속변수)
위와 같은 방식으로 사용하면 된다
댓글
댓글 쓰기