亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術(shù)文章
文章詳情頁

Python如何使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類

【字号: 作者:豬豬瀏覽:2日期:2022-06-27 10:37:02

深度學(xué)習(xí)無處不在。在本文中,我們將使用Keras進(jìn)行文本分類。

準(zhǔn)備數(shù)據(jù)集

出于演示目的,我們將使用 20個新聞組 數(shù)據(jù)集。數(shù)據(jù)分為20個類別,我們的工作是預(yù)測這些類別。如下所示:

Python如何使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類

通常,對于深度學(xué)習(xí),我們將劃分訓(xùn)練和測試數(shù)據(jù)。

導(dǎo)入所需的軟件包

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 Path將數(shù)據(jù)從文件加載到Python變量

Python

# 為了復(fù)現(xiàn)性np.random.seed(1237) label_index = files_train.targetlabel_names = files_train.target_nameslabelled_files = files_train.filenames data_tags = ['filename','category','news']data_list = [] # 讀取文件中的數(shù)據(jù)并將其添加到列表 data = pd.DataFrame.from_records(data_list, columns=data_tags)

我們的數(shù)據(jù)無法以CSV格式提供。我們有文本數(shù)據(jù)文件,文件存放的目錄是我們的標(biāo)簽或類別。

我們將使用scikit-learn load_files方法。這種方法可以提供原始數(shù)據(jù)以及標(biāo)簽和標(biāo)簽索引。

最后我們得到一個數(shù)據(jù)框,其中包含文件名,類別和實(shí)際數(shù)據(jù)。

拆分?jǐn)?shù)據(jù)進(jìn)行訓(xùn)練和測試

Python

# 讓我們以80%的數(shù)據(jù)作為訓(xùn)練,剩下的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:]標(biāo)記化并準(zhǔn)備詞匯

Python

# 20個新聞組num_labels = 20vocab_size = 15000batch_size = 100 # 用Vocab Size定義Tokenizertokenizer = Tokenizer(num_words=vocab_size)tokenizer.fit_on_texts(train_posts)

在對文本進(jìn)行分類時,我們首先使用Bag Of Words方法對文本進(jìn)行預(yù)處理。

預(yù)處理輸出標(biāo)簽/類

在將文本轉(zhuǎn)換為數(shù)字向量后,我們還需要確保標(biāo)簽以神經(jīng)網(wǎng)絡(luò)模型接受的數(shù)字格式表示。

建立Keras模型并擬合

PowerShell

model = Sequential()

它為輸入數(shù)據(jù)的維度以及構(gòu)成模型的圖層類型提供了簡單的配置。

這是擬合度和測試準(zhǔn)確性的代碼段

100/8145 [..............................] - ETA: 31s - loss: 1.0746e-04 - acc: 1.0000200/8145 [..............................] - ETA: 31s - loss: 0.0186 - acc: 0.9950 300/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.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方法訓(xùn)練了我們的數(shù)據(jù)集之后,我們將如上所述評估模型。

混淆矩陣

混淆矩陣是可視化模型準(zhǔn)確性的最佳方法之一。

Python如何使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類

保存模型

通常,深度學(xué)習(xí)的用例就像在不同的會話中進(jìn)行數(shù)據(jù)訓(xùn)練,而使用訓(xùn)練后的模型進(jìn)行預(yù)測一樣。

# 創(chuàng)建一個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沒有任何實(shí)用程序方法可將Tokenizer與模型一起保存。我們必須單獨(dú)序列化它。

加載Keras模型

Python

預(yù)測環(huán)境還需要注意標(biāo)簽。

encoder.classes_ #標(biāo)簽二值化預(yù)測

如前所述,我們已經(jīng)預(yù)留了一些文件進(jìn)行實(shí)際測試。

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.graphicsFile -> C:DL20news-bydate20news-bydate-testmisc.forsale76115 Predicted label: misc.forsaleFile -> C:DL20news-bydate20news-bydate-testsoc.religion.christian21329 Predicted label: soc.religion.christian

我們知道目錄名是文件的真實(shí)標(biāo)簽,因此上述預(yù)測是準(zhǔn)確的。

結(jié)論

在本文中,我們使用Keras python庫構(gòu)建了一個簡單而強(qiáng)大的神經(jīng)網(wǎng)絡(luò)。

以上就是Python如何使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類的詳細(xì)內(nèi)容,更多關(guān)于python 神經(jīng)網(wǎng)絡(luò)進(jìn)行文本分類的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲色图激情 | 免费观看情趣v视频网站 | 日韩免费高清视频网站 | 欧美一区二区三区不卡免费 | 精选国产门事件福利在线观看 | m3u8久久国产精品影院 | 在线不卡福利 | 久久久青青草 | 一区二区在线视频 | 免费成人福利视频 | 国产丝袜视频在线观看 | 亚洲在线免费观看视频 | 成人做视频免费 | 欧美一级在线全免费 | 国产成人精品免费视频大全麻豆 | 在线网站cosplay福利视频 | 九九啪| 人人澡人人澡碰人人看软件 | 被免费网站在线视频 | 久久精品看片 | 亚洲永久视频 | 色婷婷中文网 | 国产精品成人久久久久久久 | 国产在线精品一区二区中文 | 日本亚洲欧美 | 欧美精品中文 | 国产黄大片在线视频 | 亚洲午夜影视 | 国产久热美女福利视频 | 午夜精品一区二区三区在线观看 | 欧美日韩成人午夜免费 | 国产精品久久亚洲不卡4k岛国 | 亚洲 欧美 清纯 校园 另类 | 国产在线高清视频 | 日韩欧美国内 | 久久这里只有精品2 | 国产精品偷伦视频免费观看的 | 午夜天堂在线视频 | 亚洲精品第三页 | 久久香蕉国产线看观看8青草 | 精品三级久久久久久久电影 |