Как использовать горячее кодирование tenorflow one с нейронной сетью на основе керас? - PullRequest
0 голосов
/ 29 декабря 2018

Мой код:

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.То же самое относится к Breed1, Breed2 и т. Д.

Похоже, я могу сделать какое-то кодирование с помощью:

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

Но, похоже, это не очень многои во-вторых, как мне поставить его как вход в сеть?

1 Ответ

0 голосов
/ 29 декабря 2018

Я бы не использовал один метод горячего кодирования от Tensorflow.Поскольку я вижу, что вы загружаете набор данных с помощью Pandas, почему бы просто не использовать:

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

Затем просто обучите сеть так же, как вы делаете это сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...