如何将 tensorflow one 热编码与基于 keras 的神经网络一起使用?
How can I use tensorflow one hot encoding with a keras based neural network?
我的代码是:
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])
但这似乎并没有太大作用,其次,我如何将它作为网络的输入?
我不会使用 Tensorflow 中的一种热门编码方法。因为我可以看到您正在使用 Pandas 加载数据集,为什么不使用:
X = pd.get_dummies(X, columns=["Type", "Breed1", "Breed2"])
然后像现在一样训练网络。
我的代码是:
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])
但这似乎并没有太大作用,其次,我如何将它作为网络的输入?
我不会使用 Tensorflow 中的一种热门编码方法。因为我可以看到您正在使用 Pandas 加载数据集,为什么不使用:
X = pd.get_dummies(X, columns=["Type", "Breed1", "Breed2"])
然后像现在一样训练网络。