提问人:user13919384 提问时间:8/18/2020 最后编辑:user13919384 更新时间:8/18/2020 访问量:71
对整个测试集进行预测
making prediction on the entire testset
问:
我想对整个测试集进行预测,这里的测试集只有数据集 A 的 20%,我理解这是因为它仅用于训练目的,当我保存权重然后在另一个数据集 B 上进行预测时,它也会拆分测试集数据集 B。 如何使用训练数据集 A 的权重对整个测试集数据集 B 进行预测。 谢谢。
x = dataset.iloc[:, :-1].values
# Dependent Variable:
y = dataset.iloc[:, -1].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
# Initialising the ANN
classifier = Sequential()
# Adding the input layer and the first hidden layer
classifier.add(Dense(units = 27, kernel_initializer = 'uniform', activation = 'relu', input_dim = 6))
# Adding the second hidden layer
classifier.add(Dense(units = 27, kernel_initializer = 'uniform', activation = 'relu'))
# Adding the output layer
classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))
# Compiling the ANN
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
# Fitting the ANN to the Training set
classifier.fit(X_train, y_train, batch_size = 10, epochs = 20)
#making predictions on test data
classifier.predict(X_test)
答:
1赞
jtsw1990
8/18/2020
#1
如果我理解正确,您想在全新的数据集上使用经过训练的模型吗?
Keras 提供了几种方法来执行此操作,但我认为最常见的方法是使用命令将训练好的模型导出到 .hd5 文件中
model.save("filepath/model.hd5")
现在,您可以使用命令加载模型并将其用于任何您想要的位置
model = model.load("filepath/model.hd5")
score = model.evaluate(X, Y)
其中 X 是数据集 B 的特征列,Y 是获取评分的响应。如果数据集 B 位于同一实例中,则始终可以只使用
model.predict(X)
其中 X 现在是数据集 B 的特征列
0赞
R Balasubramanian
8/18/2020
#2
据我了解,您在这里问了 2 个问题:
首先,将“数据集 B”拆分为训练集和测试集由您在行中手动完成。X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
如果在使用“数据集 B”时,想要在“数据集 B”的所有数据点上测试分类器,则不必进行此训练测试拆分,只需将“数据集 B”的值传递给分类器即可。X
至于如何做到这一点,根据您的第二个问题,它与您已经使用“数据集 A”的测试集所做的相同:
classifier.predict(X)
将使用它已经在“数据集 A”上学习到的拟合进行预测,假设您不重新编译或再次调用。.fit()
评论
0赞
R Balasubramanian
8/19/2020
这是您描述的两个不同步骤 - train_test_split与保存模型的权重完全分开。关于这个问题的另一个答案显示了一种流行的保存权重的方法,如果这是你想做的,或者你可以直接使用 .您使用的 predict ON 是一个单独的问题,您可以选择仅在“数据集 B”的另一个子集或整个数据集上使用它。.predict()
0赞
R Balasubramanian
8/19/2020
这取决于你想做什么 - 从我的回答中回想一下,调用将重新训练权重。如果你想保留你在“数据集 A”上训练的权重,你也应该跳过拟合和直接跳跃的调用.fit()
y_pred = ann.predict(x)
评论