时间:2021-05-22
深度学习无处不在。在本文中,我们将使用Keras进行文本分类。
出于演示目的,我们将使用20个新闻组数据集。数据分为20个类别,我们的工作是预测这些类别。如下所示:
通常,对于深度学习,我们将划分训练和测试数据。
Python
import pandas as pdimport numpy as npimport picklefrom keras.preprocessing.text import Tokenizerfrom keras.models import Sequentialfrom keras.layers import Activation, Dense, Dropoutfrom sklearn.preprocessing import LabelBinarizerimport sklearn.datasets as skdsfrom pathlib import PathPython
# 为了复现性np.random.seed(1237)label_index = files_train.targetlabel_names = files_train.target_nameslabelled_files = files_train.filenamesdata_tags = ["filename","category","news"]data_list = []# 读取文件中的数据并将其添加到列表data = pd.DataFrame.from_records(data_list, columns=data_tags)我们的数据无法以CSV格式提供。我们有文本数据文件,文件存放的目录是我们的标签或类别。
我们将使用scikit-learn load_files方法。这种方法可以提供原始数据以及标签和标签索引。
最后我们得到一个数据框,其中包含文件名,类别和实际数据。
Python
# 让我们以80%的数据作为训练,剩下的20%作为测试。train_size = int(len(data) * .8)train_posts = data['news'][:train_size]train_tags = data['category'][:train_size]train_files_names = data['filename'][:train_size]test_posts = data['news'][train_size:]test_tags = data['category'][train_size:]test_files_names = data['filename'][train_size:]Python
# 20个新闻组num_labels = 20vocab_size = 15000batch_size = 100# 用Vocab Size定义Tokenizertokenizer = Tokenizer(num_words=vocab_size)tokenizer.fit_on_texts(train_posts)在对文本进行分类时,我们首先使用Bag Of Words方法对文本进行预处理。
在将文本转换为数字向量后,我们还需要确保标签以神经网络模型接受的数字格式表示。
PowerShell
model = Sequential()它为输入数据的维度以及构成模型的图层类型提供了简单的配置。
这是拟合度和测试准确性的代码段
100/8145 [..............................] - ETA: 31s - loss: 1.0746e-04 - acc: 1.0000200/8145 [..............................] - ETA: 31s - loss: 0.0186 - acc: 0.9950300/8145 [>.............................] - ETA: 35s - loss: 0.0125 - acc: 0.9967400/8145 [>.............................] - ETA: 32s - loss: 0.0094 - acc: 0.9975500/8145 [>.............................] - ETA: 30s - loss: 0.0153 - acc: 0.9960...7900/8145 [============================>.] - ETA: 0s - loss: 0.1256 - acc: 0.98548000/8145 [============================>.] - ETA: 0s - loss: 0.1261 - acc: 0.98558100/8145 [============================>.] - ETA: 0s - loss: 0.1285 - acc: 0.98548145/8145 [==============================] - 29s 4ms/step - loss: 0.1293 - acc: 0.9854 - val_loss: 1.0597 - val_acc: 0.8742Test accuracy: 0.8767123321648251Python
for i in range(10):prediction = model.predict(np.array([x_test[i]]))predicted_label = text_labels[np.argmax(prediction[0])]print(test_files_names.iloc[i])print('Actual label:' + test_tags.iloc[i])print("Predicted label: " + predicted_label)在Fit方法训练了我们的数据集之后,我们将如上所述评估模型。
混淆矩阵是可视化模型准确性的最佳方法之一。
通常,深度学习的用例就像在不同的会话中进行数据训练,而使用训练后的模型进行预测一样。
# 创建一个HDF5文件'my_model.h5'model.model.save('my_model.h5')# 保存令牌生成器,即词汇表with open('tokenizer.pickle', 'wb') as handle:pickle.dump(tokenizer, handle, protocol=pickle.HIGHEST_PROTOCOL)Keras没有任何实用程序方法可将Tokenizer与模型一起保存。我们必须单独序列化它。
Python
预测环境还需要注意标签。
encoder.classes_ #标签二值化如前所述,我们已经预留了一些文件进行实际测试。
Python
labels = np.array(['alt.atheism', 'comp.graphics', 'comp.os.ms-windows.misc','comp.sys.ibm.pc.hardware', 'comp.sys.mac.hardware', 'comp.windows.x','misc.forsale', 'rec.autos', 'rec.motorcycles', 'rec.sport.baseball','rec.sport.hockey', 'sci.crypt', 'sci.electronics', 'sci.med', 'sci.space','soc.religion.christian', 'talk.politics.guns', 'talk.politics.mideast','talk.politics.misc', 'talk.religion.misc'])...for x_t in x_tokenized:prediction = model.predict(np.array([x_t]))predicted_label = labels[np.argmax(prediction[0])]print("File ->", test_files[i], "Predicted label: " + predicted_label)i += 1我们知道目录名是文件的真实标签,因此上述预测是准确的。
在本文中,我们使用Keras python库构建了一个简单而强大的神经网络。
以上就是Python如何使用神经网络进行简单文本分类的详细内容,更多关于python 神经网络进行文本分类的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Python利用神经网络解决非线性回归问题。分享给大家供大家参考,具体如下:问题描述现在我们通常使用神经网络进行分类,但是有时我们也会进行回归分析
本文用于利用Pytorch实现神经网络的分类!!!1.训练神经网络分类模型importtorchfromtorch.autogradimportVariable
python实现简单神经网络算法,供大家参考,具体内容如下python实现二层神经网络包括输入层和输出层importnumpyasnp#sigmoidfunct
神经网络在机器学习中有很大的应用,甚至涉及到方方面面。本文主要是简单介绍一下神经网络的基本理论概念和推算。同时也会介绍一下神经网络在数据分类方面的应用。首先,当
本篇文章主要通过一个简单的例子来实现神经网络。训练数据是随机产生的模拟数据集,解决二分类问题。下面我们首先说一下,训练神经网络的一般过程:1.定义神经网络的结构