如何在基于keras的神经网络中使用Tensorflow一种热编码?

时间:2018-12-29 16:15:19

标签: python tensorflow keras one-hot-encoding

我的代码是:

from keras.models import Sequential
from keras.layers import Dense
import numpy
import pandas as pd

X = pd.read_csv(
    "data/train.csv", header=0, usecols=['Type', 'Age', 'Breed1', 'Breed2', 'Gender', 'Color1', 'Color2', 'Color3', 'MaturitySize', 'FurLength',    'Vaccinated',   'Dewormed', 'Sterilized',   'Health',   'Quantity', 'Fee', 'VideoAmt', 'PhotoAmt'])
Y = pd.read_csv(
    "data/train.csv", header=0, usecols=['AdoptionSpeed'])

Y = Y['AdoptionSpeed'].apply(lambda v: v / 4)

model = Sequential()
model.add(Dense(18, input_dim=18, activation='relu'))
model.add(Dense(18, activation='relu'))
model.add(Dense(18, activation='relu'))
model.add(Dense(18, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
              optimizer='adam', metrics=['accuracy'])
model.fit(X, Y, epochs=150, batch_size=100)
scores = model.evaluate(X, Y)

但是,Type可以是1或2,因此我认为使用one hot encoding是有意义的。 Breed1Breed2等也是如此。

看起来我可以使用以下方式进行编码:

typehot = tf.one_hot([0, 1])

但这似乎并没有太大作用,其次,我如何将其作为网络输入?

1 个答案:

答案 0 :(得分:1)

我不会使用Tensorflow中的一种热编码方法。因为我可以看到您正在使用Pandas加载数据集,所以为什么不使用:

X = pd.get_dummies(X, columns=["Type", "Breed1", "Breed2"])

然后像现在一样训练网络。