【问题标题】:How can I run test data against my keras trained model?如何针对我的 keras 训练模型运行测试数据?
【发布时间】:2018-12-30 01:13:36
【问题描述】:

训练我的模型的代码是:

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% 的准确率,但我担心它可能会过度拟合。

【问题讨论】:

  • 您可以在阅读培训文件时只阅读该文件,然后使用model.evaluate
  • @pooyan d'oh。很简单。如果您发布答案,我可以接受。谢谢!

标签: python tensorflow keras neural-network


【解决方案1】:

为了选择最佳模型在测试集上对其进行评估,您应该首先将训练集拆分为训练集和验证集。然后你迭代地训练和验证模型。 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。那么如何在其上运行模型以获得输出值呢?
【解决方案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)

【讨论】:

    猜你喜欢
    • 2018-12-29
    • 2020-12-18
    • 2017-05-29
    • 2020-06-07
    • 2018-04-06
    • 1970-01-01
    • 2018-04-15
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多