对整个测试集进行预测

时间:2020-08-18 14:29:06

标签: python machine-learning keras scikit-learn deep-learning

我想对整个测试集进行预测,这里的测试集仅占数据集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)

2 个答案:

答案 0 :(得分: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的特征列

答案 1 :(得分:0)

据我了解,您在这里问两个问题:

首先,您可以在生产线上手动将“数据集B”拆分为火车和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

如果在使用“数据集B”时要在“数据集B”的所有数据点上测试分类器,则不必进行此火车测试拆分,只需通过{{1 }}值作为分类器的“数据集B”。

关于如何执行此操作,就第二个问题而言,它与对“数据集A”的测试集所做的操作相同:

X将使用已经在“数据集A”上学到的适合度进行预测,假设您不重新编译或再次调用classifier.predict(X)