如何对我的Keras训练模型运行测试数据?

3

训练模型的代码如下:

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'])

X = pd.get_dummies(X, columns=["Type", "Breed1",
                               "Breed2", 'Color1', 'Color2', 'Color3', 'Gender', 'MaturitySize', 'FurLength'])
print(X)

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

input_units = X.shape[1]

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

我有一个名为test.csv的文件。如何测试该集合以查看我的模型效果如何?

似乎在训练数据上有97%的准确率,但我担心可能出现过度拟合。


1
你可以像读取训练文件一样读取该文件,然后使用 model.evaluate - pouyan
@pooyan 哦。很简单。如果您发布答案,我可以接受它。谢谢! - Shamoon
2个回答

9

为了选择最佳模型并在测试集上进行评估,您应首先将训练集分成训练集和验证集。然后,您可以迭代地训练和验证模型。Keras的fit方法可以自动完成这一过程。

model.fit(X, Y, epochs=250, batch_size=1000, validation_split=0.2)

如您所见,这将分配训练集的20%用于验证模型。

接下来,您应该仅使用您拥有的test.csv文件来衡量您选择的模型好坏。但是,千万不要使用测试集进行模型选择。测试集用于您能够做出无偏差的估计,以了解您的模型在真实世界中的表现如何。

然后,我会加载test.csv文件并使用:

model.evaluate(x=X_test, y=Y_test)

否则,如果你只想对测试集执行推理,你可以这样做:
predictions = model.predict(X_test)

这个方法会返回你测试集的预测结果。

问题是我的test.csv没有AdoptionSpeed。那么我怎样才能在上面运行模型以获得输出值呢? - Shamoon

2
您可以按照以下培训方法来完成此操作:
f = "test.csv"
X = pd.read_csv(
    f, 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(
    f, header=0, usecols=['AdoptionSpeed'])

X = pd.get_dummies(X, columns=["Type", "Breed1",
                               "Breed2", 'Color1', 'Color2', 'Color3', 'Gender', 'MaturitySize', 'FurLength'])
print(X)

Y = Y['AdoptionSpeed'].apply(lambda v: v / 4)
scores = model.evaluate(X, Y)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接