私はhereとhereの例を踏襲しており、Kerasにはまったく新しいものです。それは素晴らしいように見えますが、私は理解できないものにぶち当たっています。ケラス:マルチクラス分類
私は8クラスの分類問題があります。トレーニングセットには5120行と62列があり、最後の列はターゲット変数です。
私のターゲット変数は現在浮動小数点としてエンコードされていますので、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?
EDIT
理由は、私はKerasは文字通り数としてクラスラベルを解釈していることを理解していなかったでした。例えば、私のクラスは1から8のラベルが付けられているので、Kerasはラベル '1'を見て、それは1だと言っています - これを1ホットベクトルの '1'の位置に置きます。 0 0 0 0 0 0 0 '0' 0 0 0 0 0 0、8までと同じことをします:それは余分な列がある理由です: '0'の場合に対処するために、マッピングには存在しません。技術的に受け入れられた答えは、これはちょうど詳細を与えることを説明しました。
チュートリアル(http://machinelearningmastery.com/multi-class-classification-tutorial-keras-deep-learning-library/)しかし、モデルを定義するとき、著者には3つの出力単位があります。 to_categorical結果と同じ次元です。私はそれをすることはできません - 私は私の出力で9クラスを持つことはできません。 – StatsSorceress
あなたはトレーニングの前に 'Y = Y - 1'を使ってラベル(y)を0..7にマッピングすることができます。一度あなたが予測したら、それらを戻してマップしてください –
なぜそれは必要ですか?チュートリアルには3つの出力ノードとto_categoricalで定義された3つのクラスがあります。 – StatsSorceress