I built the DNN model for predicting the survivability of breast cancer patients, I Want to predict class label (Died or Survive)for new cases, how to implement it? In summary: What I would like to apply is to predict a new case, without conducting the training process directly, just I want to show the result of the class label either died from breast cancer (1) or survived(0).
dataset=pd.read_csv("C:/Users/User/Desktop/mixed 7 12-2-2020.csv",encoding='cp1252')
array = dataset.values
X = array[:, 0:33]
y = array[:, 33]
n_features, n_outputs = X.shape[1], 1
def create_model():
model = Sequential()
model.add(Input(n_features))
model.add(BatchNormalization())
model.add(Dense(51, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(68, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(85, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(85, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(68, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(51, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(n_outputs, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='Adam',
metrics=['accuracy'])
#model.summary()
return model
checkpoint = tf.keras.callbacks.ModelCheckpoint(
"model.{epoch:02d}-{val_loss:.2f}.hdf5",
monitor='val_accuracy',
verbose=1,
save_best_only=True)
EPOCHS = 50
BATCH_SIZE = 128
N_FOLDS = 10
ACC_array = np.array([])
sensitivity_array = np.array([])
specificity_array = np.array([])
kf = KFold(n_splits=N_FOLDS, shuffle=True)
kf = kf.split(X, y)
for train_index, valid_index in kf:
X_train, X_valid = X[train_index], X[valid_index]
y_train, y_valid = y[train_index], y[valid_index]
model = create_model()
# fit network
model.fit(X_train, y_train, validation_data=(X_valid, y_valid),
epochs=EPOCHS, batch_size=BATCH_SIZE,
# callbacks=[checkpoint]
)
#model.load_weights("model.best.hdf5")
X_valid = X_valid.astype(np.float32)
predictions = model.predict(X_valid, batch_size=BATCH_SIZE)
y_pred = np.round(predictions[:, 0])
confusion = skl.metrics.confusion_matrix(y_valid, y_pred)
TP = confusion[1, 1]
TN = confusion[0, 0]
FP = confusion[0, 1]
FN = confusion[1, 0]
# Accuracy
accuracy = (TP + TN) / float(TP + TN + FP + FN)
# Sensitivity
sensitivity = TP / float(FN + TP)
# Specificity
specificity = TN / float(TN + FP)
ACC_array = np.append(ACC_array, accuracy)
sensitivity_array = np.append(sensitivity_array, sensitivity)
specificity_array = np.append(specificity_array, specificity)
ACC_mean = np.mean(ACC_array, axis=0)
print('mean Accuracy', ACC_mean * 100)
sensitivity_mean = np.mean(sensitivity_array, axis=0)
print('mean sensitivity', sensitivity_mean * 100)
specificity_mean = np.mean(specificity_array, axis=0)
print('mean specificity', specificity_mean * 100)