圆月山庄资源网 Design By www.vgjia.com
深度学习无处不在。在本文中,我们将使用Keras进行文本分类。
准备数据集
出于演示目的,我们将使用 20个新闻组 数据集。数据分为20个类别,我们的工作是预测这些类别。如下所示:
通常,对于深度学习,我们将划分训练和测试数据。
导入所需的软件包
Python
import pandas as pd import numpy as np import pickle from keras.preprocessing.text import Tokenizer from keras.models import Sequential from keras.layers import Activation, Dense, Dropout from sklearn.preprocessing import LabelBinarizer import sklearn.datasets as skds from pathlib import Path
将数据从文件加载到Python变量
Python
# 为了复现性 np.random.seed(1237) label_index = files_train.target label_names = files_train.target_names labelled_files = files_train.filenames data_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 = 20 vocab_size = 15000 batch_size = 100 # 用Vocab Size定义Tokenizer tokenizer = Tokenizer(num_words=vocab_size) tokenizer.fit_on_texts(train_posts)
在对文本进行分类时,我们首先使用Bag Of Words方法对文本进行预处理。
预处理输出标签/类
在将文本转换为数字向量后,我们还需要确保标签以神经网络模型接受的数字格式表示。
建立Keras模型并拟合
PowerShell
model = Sequential()
它为输入数据的维度以及构成模型的图层类型提供了简单的配置。
这是拟合度和测试准确性的代码段
100/8145 [..............................] - ETA: 31s - loss: 1.0746e-04 - acc: 1.0000 200/8145 [..............................] - ETA: 31s - loss: 0.0186 - acc: 0.9950 300/8145 [>.............................] - ETA: 35s - loss: 0.0125 - acc: 0.9967 400/8145 [>.............................] - ETA: 32s - loss: 0.0094 - acc: 0.9975 500/8145 [>.............................] - ETA: 30s - loss: 0.0153 - acc: 0.9960 ... 7900/8145 [============================>.] - ETA: 0s - loss: 0.1256 - acc: 0.9854 8000/8145 [============================>.] - ETA: 0s - loss: 0.1261 - acc: 0.9855 8100/8145 [============================>.] - ETA: 0s - loss: 0.1285 - acc: 0.9854 8145/8145 [==============================] - 29s 4ms/step - loss: 0.1293 - acc: 0.9854 - val_loss: 1.0597 - val_acc: 0.8742 Test accuracy: 0.8767123321648251
评估模型
Python
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与模型一起保存。我们必须单独序列化它。
加载Keras模型
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
输出
File -> C:DL20news-bydate20news-bydate-testcomp.graphics38758 Predicted label: comp.graphics File -> C:DL20news-bydate20news-bydate-testmisc.forsale76115 Predicted label: misc.forsale File -> C:DL20news-bydate20news-bydate-testsoc.religion.christian21329 Predicted label: soc.religion.christian
我们知道目录名是文件的真实标签,因此上述预测是准确的。
结论
在本文中,我们使用Keras python库构建了一个简单而强大的神经网络。
以上就是Python如何使用神经网络进行简单文本分类的详细内容,更多关于python 神经网络进行文本分类的资料请关注其它相关文章!
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
更新日志
2024年11月01日
2024年11月01日
- 群星《狐妖小红娘月红篇 电视剧原声带》[320K/MP3][233.61MB]
- 英雄联盟s14四强淘汰赛规则是什么 全球总决赛四强淘汰赛规则详解
- 英雄联盟s14四强赛怎么分组 S14全球总决赛四强赛分组规则详解
- 英雄联盟s14四强赛抽签规则是什么 S14全球总决赛四强抽签规则详解
- ButterQuartet-ScintillaEarlyItalianStringQuartets(DeLuxe)(2024)[24Bit-WAV]
- 草原最美情歌《迷醉女中音》2CD/DTS-ES[WAV]
- 爵士女伶何芸妮《靡靡之音》(香港版)[WAVCUE]
- 游戏中辱骂他人同样侵犯名誉权 一玩家被判道歉
- 老游戏远程共享申请失败 美国版权局拒绝豁免请愿
- 通过本地化支付解决方案,解锁150亿美元拉美和非洲游戏市场
- 群星《狐妖小红娘月红篇 电视剧原声带》[FLAC/分轨][574.68MB]
- 群星《红色冲浪板 电影配乐专辑》[320K/MP3][106.63MB]
- 罗艺恒《What Could've Been》[320K/MP3][50.62MB]
- 于台烟.1989-人间山水【银河唱片】【WAV+CUE】
- 杨克强.1992-特制的面具【恩华声视】【WAV+CUE】