다중 분류 문제를 해결하기 위한 학습 모델을 만들 때, 학습에 사용할 데이터를 준비하는 단계에서 데이터를 벡터로 변환하는 과정을 거쳐야 하는데요, 아래와 같이 데이터를 벡터로 만들어주는 함수를 만들어서 사용할 수 있습니다.
import numpy as np
def vectorize_sequences(sequences, dimension=10000):
results = np.zeros((len(sequences), dimension))
for i, sequence in enumerate(sequences):
results[i, sequence] = 1.
return results
만약, train_data = [1, 42, 323, 34,66, 85]라는 정수 인코딩이 된 데이터가 있다고 가정할 때, 이 함수를 사용하여 벡터로 변환해보겠습니다.
train_data = [1, 42, 323, 34,66, 85]
x_train = vectorize_sequences(train_data)
print(x_train)
#output :
array([[0., 1., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]])
벡터로 변환한 결과, 마치 원-핫 인코딩이 된 것과 같은 결과가 출력된 것을 확인할 수 있습니다. 이제 이 데이터를 이용하여 모델에 학습시키면 된답니다.
'BLOG > 머신러닝' 카테고리의 다른 글
[머신러닝] 케라스로 RNN 순환 층 구현하기 (파이썬 코드) (0) | 2021.03.23 |
---|---|
[자연어 처리] RNN 텍스트 분류 모델, 어떠한 활성화 함수 & 손실 함수를 사용하는게 좋을까요? (0) | 2021.03.23 |
[머신러닝] GRU란? 케라스로 GRU 은닉층 추가하기 (코드) (0) | 2021.03.23 |
[머신러닝] 의사결정나무 : 엔트로피, 지니 계수란? (0) | 2021.03.23 |
[머신러닝] CNN 층에 dropout(드롭아웃) 추가하기 (텐서플로) (0) | 2021.03.23 |