Estoy tratando de encontrar métricas de rendimiento del modelo (puntaje F1, precisión, recuperación) siguiendo esta guía https://machinelearningmastery.com/how-to-calculate-precision-recall-f1-and-more-for-deep-learning-models/
Este código exacto funcionaba hace unos meses pero ahora devuelve todo tipo de errores, muy confuso ya que no he cambiado un carácter de este código. ¿Quizás una actualización de paquete ha cambiado las cosas?
Ajusté el modelo secuencial con model.fit, luego usé model.evaluate para encontrar la precisión de la prueba. Ahora estoy intentando usar model.predict_classes para hacer predicciones de clase (el modelo es un clasificador de varias clases). Código que se muestra a continuación:
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)
la última línea devuelve el error "AttributeError: el objeto 'secuencial' no tiene el atributo 'predict_classes'"
Este código exacto funcionaba no hace mucho, así que tuve problemas, gracias por cualquier ayuda.
Esta función se eliminó en TensorFlow versión 2.6. Según la referencia de keras en rstudio
actualización para
predict_x=model.predict(X_test) classes_x=np.argmax(predict_x,axis=1)
O use TensorFlow 2.5 o posterior.
Si está utilizando la versión 2.5 de TensorFlow, recibirá la siguiente advertencia:
tensorflow\python\keras\engine\secuential.py:455: UserWarning:
model.predict_classes()
está en desuso y se eliminará después del 01-01-2021. Utilice en su lugar:*np.argmax(model.predict(x), axis=-1)
, si su modelo realiza una clasificación multiclase (por ejemplo, si utiliza una activación de última capasoftmax
).*(model.predict(x) > 0.5).astype("int32")
, si su modelo hace una clasificación binaria (por ejemplo, si usa una activación de la última capasigmoid
).
Experimenté el mismo error, utilizo el siguiente código y lo conseguí.
Sustituido:
predictions = model.predict_classess(x_test)
Con este:
predictions = (model.predict(x_test) > 0.5).astype("int32")
Tipo de paquetes de python: Tensorflow 2.6.0
esto funciona bien
Podemos reemplazar la línea de código problemática con lo siguiente:
y_predict = np.argmax(model.predict(x_test), axis=-1)