-
[Fundamentals]원-핫 인코딩(One-Hot Encoding)Engineering/AI 2021. 4. 18. 00:47
- 원-핫 인코딩(One-Hot Encoding)
우리가 앞서 살펴본 데이터들은 상수로 대소관계나 비율을 구할 수 있었다. 그러나 범주가 남자, 여자, 어린이와 같이 string 형태, 혹은 글자 형태로 되어있는 정보는 이러한 대소관계나 비율을 구할 수 없다. 이러한 비선형 데이터를 처리하기 위해 고안된 방법이 바로 원-핫 인코딩이다. 원-핫 인코딩은 성별 정보나 동물 종류 같이 글자로 표현된 정보를 수치로 변환해주는 작업이다.
위의 예시를 보면 M, F, C라는 변수를 만들었고 이러한 변수에 해당 정보가 해당된다면 1, 해당되지 않는다면 0을 넣어 구분할 수 있게 된다. 아래는 추후에 살펴볼 회귀 분석에서 사용되는 원-핫 인코딩 기법이다.
# Data load, one-hot encoding def load_dataset(): # Loading datasets with open('./datasets/abalone.csv') as csvfile: csvreader = csv.reader(csvfile) next(csvreader, None) # 첫 번째 index 건너뛰고 none으로 반환 rows = [] for row in csvreader: rows.append(row) # Global Variable : 함수 구축 시 주요하게 사용되는 변수를 확인하기 위한 장점때문에 사용 global data, input_cnt, output_cnt input_cnt, output_cnt = 10, 1 # 독립변수의 크기와 종속변수의 크기 # Buffer data = np.zeros([len(rows), input_cnt + output_cnt]) # One-hot encoding for index, row in enumerate(rows): if row[0] == 'I' : data[index, 0] = 1 elif row[0] == 'M' : data[index, 1] = 1 elif row[0] == 'F' : data[index, 2] = 1 data[index, 3:] = row[1:]
index 정보에 따라 I, M, F로 나누었고, I는 유충, M, F는 각각 암수 성충이다. 글자로 표현된 정보의 양에 따라 데이터셋의 범주 역시 늘어난다.
- Reference
Figure 1 및 설명 참고 : Likelion k-digital training 2nd
반응형'Engineering > AI' 카테고리의 다른 글
[Regression]확률적 경사하강법(Stochastic Gradient Descent)과 미니배치 경사하강법(Mini-Batch Gradient Descent) (0) 2021.04.17 [Regression]회귀(Regression)와 경사하강법(Gradient Descent) (0) 2021.04.17 [Regression]최소제곱법(Least-Square Method)과 목적함수(Objective Function) (0) 2021.04.17 [Fundamentals]파라미터(Parameter)와 하이퍼파라미터(Hyperparameter) (0) 2021.04.15 [Fundamentals]단층 퍼셉트론(Single-Layer Perceptron) (0) 2021.04.15