2017-02-15 4 views
1

나는 herehere의 예제를 따르고 있으며 Keras에 완전히 익숙하지 않습니다. 그것은 놀랍습니다 -하지만 난 이해가 안가는 것에 빠져 있습니다.Keras : 멀티 클래스 분류

나는 8 등급 분류 문제가 있습니다. My training set에는 5120 행과 62 열이 있으며, 마지막 열은 대상 변수입니다.

내 대상 변수는 현재 float로 인코딩되어 있으므로 정수로 변환 한 다음 to_categorical을 사용하여 모형의 더미 행렬로 변환합니다. 결과는 모양의 numpy.ndarray (num_samples, num_classes + 1)입니다. 왜 그런지 알아?

import numpy as np 
from keras.utils.np_utils import to_categorical 

dataset = np.loadtxt("train_pl.csv", delimiter=",") 

# split into input (X) and output (Y) variables 
X = dataset[:,0:61] #I have 5120 rows. 
Y = (dataset[:,62]).astype(int) #class labels 1 to 8 inclusive 

#print Y.shape #(5120,) 
#print np.unique(Y) #1 2 3 4 5 6 7 8 

y_binary = to_categorical(Y) 

print y_binary.shape #(5120, 9) - why does this have 9 columns? 

편집

내가 Keras 말 그대로 숫자로 클래스 레이블을 해석하는 것을 이해하지 못했다 된 주어진 대답을 이해하지 못했다 이유 :

여기에 코드입니다. 예를 들어, 클래스는 1부터 8까지 레이블이 붙어 있기 때문에, Keras는 레이블 '1'을보고 '1'이라고 말합니다 - 다음과 같이 one-hot 벡터의 '1'위치에 넣을 것입니다 : 0 1 0 '0 0 0 0 0'0 '0 0 0 0 0 0 0'8 '까지 동일합니다. 그 때문에 추가 열이 있습니다 :'0 번째 '의 경우를 다루는 것은' 매핑에 존재하지 않습니다. 기술적으로 받아 들여진 대답에 따르면 더 자세히 설명 할 것입니다. to_categorical 이진 클래스 매트릭스 클래스 벡터 (0 nb_classes의 정수)를 변환하기 때문에

답변

0

는 categorical_crossentropy 함께 사용 here에 설명한다.

+0

[here] (http://machinelearningmastery.com/multi-class-classification-tutorial-keras-deep-learning-library/) 모델을 정의 할 때 작성자는 3 개의 출력 단위를 갖습니다. to_categorical 결과와 동일한 차원입니다. 나는 그것을 할 수 없다. 나는 내 수업에 9 개의 수업을 가질 수 없다. – StatsSorceress

+0

당신은 훈련 전에'Y = Y - 1'을 사용하여 레이블 (y)를 0..7로 매핑 할 수 있습니다. 일단 당신이 예측하고, 그들을 다시지도 –

+0

그래도 왜 필요합니까? 튜토리얼은 3 개의 출력 노드와 to_categorical ....에 정의 된 3 개의 클래스를 가지고 있습니다. – StatsSorceress

관련 문제