用python写一个基于CNN的文本分类程序,要求利用精度、召回率和F1以及混淆矩阵等来评判分类精度
时间: 2024-05-06 09:18:56 浏览: 104
好的,以下是基于CNN的文本分类程序的代码示例:
```python
import numpy as np
from keras.datasets import imdb
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Embedding, Conv1D, GlobalMaxPooling1D, Dense
from sklearn.metrics import confusion_matrix, precision_recall_fscore_support
# 加载IMDB数据集
max_features = 5000
max_len = 400
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
x_train = sequence.pad_sequences(x_train, maxlen=max_len)
x_test = sequence.pad_sequences(x_test, maxlen=max_len)
# 定义CNN模型
model = Sequential()
model.add(Embedding(max_features, 128, input_length=max_len))
model.add(Conv1D(32, 7, activation='relu'))
model.add(GlobalMaxPooling1D())
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=128, validation_split=0.2)
# 测试模型
y_pred = model.predict(x_test)
y_pred = np.round(y_pred)
cm = confusion_matrix(y_test, y_pred)
precision, recall, f1, _ = precision_recall_fscore_support(y_test, y_pred)
# 输出分类结果
print('Confusion matrix:\n', cm)
print('Precision:', precision)
print('Recall:', recall)
print('F1 score:', f1)
```
在这个示例中,我们使用Keras库中的IMDB数据集进行文本分类。我们使用了一个包含嵌入层、卷积层、全局最大池化层和全连接层的CNN模型。我们在训练过程中使用了验证集验证模型的性能,并在测试集上评估了模型的分类性能。我们使用混淆矩阵、精度、召回率和F1值来评估模型的性能。
请注意,这只是一个示例,实际的文本分类任务可能需要更复杂的模型和更多的数据预处理步骤。
阅读全文