完整代码是什么
时间: 2023-08-07 10:05:47 浏览: 98
以下是一个使用CNN模型进行文本分类的完整代码示例,包括构建模型、训练模型和使用模型进行分类。
```
import tensorflow as tf
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
# 读取数据
data = pd.read_csv("data.csv")
# 将标签转换为one-hot编码
labels = pd.get_dummies(data["label"]).values
# 划分训练集和测试集
train_texts, test_texts, train_labels, test_labels = train_test_split(data["text"], labels, test_size=0.2)
# 构建词典
tokenizer = Tokenizer(num_words=10000)
tokenizer.fit_on_texts(train_texts)
# 将文本转换为数字序列
train_sequences = tokenizer.texts_to_sequences(train_texts)
test_sequences = tokenizer.texts_to_sequences(test_texts)
# 对数字序列进行padding
train_sequences = pad_sequences(train_sequences, maxlen=100)
test_sequences = pad_sequences(test_sequences, maxlen=100)
# 构建CNN模型
model = tf.keras.Sequential([
tf.keras.layers.Embedding(input_dim=10000, output_dim=100, input_length=100),
tf.keras.layers.Conv1D(filters=128, kernel_size=5, activation="relu"),
tf.keras.layers.GlobalMaxPooling1D(),
tf.keras.layers.Dense(10, activation="relu"),
tf.keras.layers.Dense(2, activation="softmax")
])
# 定义损失函数、优化器和评价指标
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
# 训练模型
model.fit(train_sequences, train_labels, validation_split=0.2, epochs=10, batch_size=32)
# 评估模型
test_loss, test_acc = model.evaluate(test_sequences, test_labels)
print("Test loss:", test_loss)
print("Test accuracy:", test_acc)
# 使用模型进行分类
texts = ["This is a positive text.", "This is a negative text."]
sequences = tokenizer.texts_to_sequences(texts)
sequences = pad_sequences(sequences, maxlen=100)
predictions = model.predict(sequences)
labels = np.argmax(predictions, axis=1)
print("Predicted labels:", labels)
```
在上面的代码中,我们首先读取数据并将标签转换为one-hot编码。然后,我们使用sklearn库将数据划分为训练集和测试集,并使用Keras的Tokenizer对象和pad_sequences函数将文本转换为数字序列并进行padding。接下来,我们使用Keras的Sequential对象构建CNN模型,并使用compile函数定义损失函数、优化器和评价指标。然后,我们使用fit函数训练模型,并使用evaluate函数评估模型在测试集上的性能。最后,我们使用predict函数对新的文本进行分类。
阅读全文