写一个用excel里的文本数据,基于tf-idf模型,用BP神经网络进行文本分类的代码
时间: 2024-02-25 20:53:52 浏览: 153
【BP分类】基于BP神经网络实现数据分类代码.zip
好的,以下是一个简单的基于tf-idf模型和BP神经网络的文本分类代码:
```python
import pandas as pd
import numpy as np
import jieba
import re
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense, Dropout
# 读取数据
data = pd.read_excel('text_data.xlsx')
# 分词
def cut_words(text):
text = re.sub('[^\u4e00-\u9fa5]', '', text)
return ' '.join(jieba.cut(text))
data['cut_text'] = data['text'].apply(cut_words)
# tf-idf特征提取
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(data['cut_text'])
y = data['label']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 建立BP神经网络模型
model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=X_train.shape[1]))
model.add(Dropout(0.5))
model.add(Dense(units=32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 测试模型
loss, accuracy = model.evaluate(X_test, y_test)
print('Test accuracy:', accuracy)
```
需要注意的是,这段代码中使用的是中文文本数据,因此需要对文本进行分词和清洗。如果是英文文本数据,则可以直接使用sklearn中的TfidfVectorizer进行特征提取。同时,根据实际情况需要修改模型的参数和结构,以达到更好的分类效果。
阅读全文