训练我的模型的代码是:
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%,但我担心它可能过拟合。
答案 0 :(得分:1)
您可以按照以下培训方法进行操作:
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)
答案 1 :(得分: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)
此方法将返回测试集的预测。