请帮我写出基于keras搭建的CNN实现二分类并且输出准确率、精确率、召回率、F1值和AUC
时间: 2023-12-25 20:04:08 浏览: 81
当然可以帮您实现基于Keras搭建的CNN进行二分类,并输出准确率、精确率、召回率、F1值和AUC。以下是一个示例代码:
```python
import numpy as np
import tensorflow as tf
from tensorflow import keras
from sklearn.metrics import classification_report, roc_auc_score
# 加载数据集(假设已经准备好了训练集和测试集)
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0
# 数据预处理
num_classes = 2
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
# 构建CNN模型
model = keras.Sequential([
keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
keras.layers.MaxPooling2D((2, 2)),
keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.MaxPooling2D((2, 2)),
keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.Flatten(),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(num_classes, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=64, verbose=1)
# 在测试集上进行预测
y_pred = model.predict(x_test)
y_pred = np.argmax(y_pred, axis=-1)
y_test = np.argmax(y_test, axis=-1)
# 输出准确率、精确率、召回率、F1值和AUC
classification_result = classification_report(y_test, y_pred)
auc_score = roc_auc_score(y_test, y_pred)
print(classification_result)
print("AUC:", auc_score)
```
这段代码与之前的示例代码基本相同,只是在最后加入了计算AUC的部分。运行完后,会输出准确率、精确率、召回率、F1值和AUC的报告。
需要注意的是,AUC通常用于二分类问题,因此您的数据集应该是二分类数据集。如果您的数据集是多分类数据集,需要进行相应的修改。
希望对您有帮助!如有其他问题,请随时提问。
阅读全文