Im attempting to find model performance metrics (F1 score, accuracy, recall) following this guide https://machinelearningmastery.com/howtocalculateprecisionrecallf1andmorefordeeplearningmodels/
This exact code was working a few months ago but now returning all sorts of errors, very confusing since i havent changed one character of this code. Maybe a package update has changed things?
I fit the sequential model with model.fit, then used model.evaluate to find test accuracy. Now i am attempting to use model.predict_classes to make class predictions (model is a multiclass classifier). Code shown below:
model = Sequential()
model.add(Dense(24, input_dim=13, activation='relu'))
model.add(Dense(18, activation='relu'))
model.add(Dense(6, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, batch_size = 256, epochs = 10, verbose = 2, validation_split = 0.2)

score, acc = model.evaluate(X_test, y_test,verbose=2, batch_size= 256)
print('test accuracy:', acc)

yhat_classes = model.predict_classes(X_test)
last line returns error "AttributeError: 'Sequential' object has no attribute 'predict_classes'"
This exact code was working not long ago so struggling a bit, thanks for any help
This function were removed in TensorFlow version 2.6. According to the keras in rstudio reference
update to
predict_x=model.predict(X_test)
classes_x=np.argmax(predict_x,axis=1)
Or use TensorFlow 2.5 or later.
If you are using TensorFlow version 2.5, you will receive the following warning:
tensorflow\python\keras\engine\sequential.py:455: UserWarning:
model.predict_classes()
is deprecated and will be removed after 20210101. Please use instead:*np.argmax(model.predict(x), axis=1)
, if your model does multiclass classification (e.g. if it uses asoftmax
lastlayer activation).*(model.predict(x) > 0.5).astype("int32")
, if your model does binary classification (e.g. if it uses asigmoid
lastlayer activation).
I experienced the same error, I use this following code, and succeed
Replaced:
predictions = model.predict_classess(x_test)
With this one:
predictions = (model.predict(x_test) > 0.5).astype("int32")
Type of python packages : Tensorflow 2.6.0
This works well
We can replace the problematic code line with the following:
y_predict = np.argmax(model.predict(x_test), axis=1)