午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:11日期:2022-06-27 10:37:02

深度學習無處不在。在本文中,我們將使用Keras進行文本分類。

準備數(shù)據(jù)集

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

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

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

導入所需的軟件包

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

# 為了復現(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ù)文件,文件存放的目錄是我們的標簽或類別。

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

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

拆分數(shù)據(jù)進行訓練和測試

Python

# 讓我們以80%的數(shù)據(jù)作為訓練,剩下的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方法對文本進行預處理。

預處理輸出標簽/類

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

建立Keras模型并擬合

PowerShell

model = Sequential()

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

這是擬合度和測試準確性的代碼段

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方法訓練了我們的數(shù)據(jù)集之后,我們將如上所述評估模型。

混淆矩陣

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

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

保存模型

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

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

加載Keras模型

Python

預測環(huán)境還需要注意標簽。

encoder.classes_ #標簽二值化預測

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

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

我們知道目錄名是文件的真實標簽,因此上述預測是準確的。

結(jié)論

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

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

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲天堂色 | 免费萌白酱国产一区二区三区 | 亚洲女同av | 午夜国产精品视频 | 国产51页 | 国产刺激对白 | 亚洲精品日韩丝袜精品 | 高清性爱视频 | 亚洲午夜在线播放 | 超碰久热| 男女视频一区 | 久久久精品久久 | 亚洲视频在线观看一区二区 | 成人a网站 | 亚洲14p| 亚洲精品一区二区三区区别 | 国产美女一区二区三区 | 久久超级碰 | 中文一区在线 | 超碰人操| 色综合一区 | 蜜臀av粉嫩av懂色av | 午夜日韩精品 | 色图av | 国产午夜精品一区二区三区视频 | 综合狠狠| 国产精品二三区 | 综合五月婷婷 | 特黄特色大片免费播放器使用方法 | 欧美男人亚洲天堂 | 国产福利小视频在线观看 | 人人超碰人人 | 成人免费黄色 | 国产精选第一页 | 亚洲天堂色图 | 成人免费激情视频 | 日韩精品一二三四区 | 成人影片在线免费观看 | 一区二区三区精品在线 | 成人福利视频网站 | 少妇又色又爽又黄的视频 |