五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

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

2021-02-24 09:28 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=8613

?

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

?

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

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

通常,對(duì)于深度學(xué)習(xí),我們將訓(xùn)練和測(cè)試數(shù)據(jù)分開(kāi)。

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

Python

  1. import pandas as pd

  2. import numpy as np

  3. import pickle

  4. from keras.preprocessing.text import Tokenizer

  5. from keras.models import Sequential

  6. from keras.layers import Activation, Dense, Dropout

  7. from sklearn.preprocessing import LabelBinarizer

  8. import sklearn.datasets as skds

  9. from pathlib import Path

?

將數(shù)據(jù)從文件加載到Python變量

Python

  1. # 為了復(fù)現(xiàn)性


  2. np.random.seed(1237)

  3. ??

  4. label_index = files_train.target

  5. label_names = files_train.target_names

  6. labelled_files = files_train.filenames

  7. ?

  8. data_tags = ["filename","category","news"]

  9. data_list = []

  10. ?

  11. # 讀取文件中的數(shù)據(jù)并將其添加到列表



  12. ?

  13. data = pd.DataFrame.from_records(data_list, columns=data_tags)

?

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

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

在以上代碼的結(jié)尾,我們將有一個(gè)數(shù)據(jù)框,其中包含文件名,類別和實(shí)際數(shù)據(jù)。

?

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

Python

  1. # 讓我們以80%的數(shù)據(jù)作為訓(xùn)練,剩下的20%作為測(cè)試。



  2. train_size = int(len(data) * .8)

  3. ?

  4. train_posts = data['news'][:train_size]

  5. train_tags = data['category'][:train_size]

  6. train_files_names = data['filename'][:train_size]

  7. ?

  8. test_posts = data['news'][train_size:]

  9. test_tags = data['category'][train_size:]

  10. test_files_names = data['filename'][train_size:]

?

標(biāo)記化并準(zhǔn)備詞匯

?

Python

  1. # 20個(gè)新聞組



  2. num_labels = 20

  3. vocab_size = 15000

  4. batch_size = 100

  5. ?

  6. # 用Vocab Size定義Tokenizer



  7. tokenizer = Tokenizer(num_words=vocab_size)

  8. tokenizer.fit_on_texts(train_posts)


?

在對(duì)文本進(jìn)行分類時(shí),我們首先使用Bag Of Words方法對(duì)文本進(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)成模型的圖層類型提供了簡(jiǎn)單的配置。

這是一些適合度和測(cè)試準(zhǔn)確性的代碼段

  1. 100/8145 [..............................] - ETA: 31s - loss: 1.0746e-04 - acc: 1.0000

  2. 200/8145 [..............................] - ETA: 31s - loss: 0.0186 - acc: 0.9950????

  3. 300/8145 [>.............................] - ETA: 35s - loss: 0.0125 - acc: 0.9967

  4. 400/8145 [>.............................] - ETA: 32s - loss: 0.0094 - acc: 0.9975

  5. 500/8145 [>.............................] - ETA: 30s - loss: 0.0153 - acc: 0.9960

  6. ...

  7. 7900/8145 [============================>.] - ETA: 0s - loss: 0.1256 - acc: 0.9854

  8. 8000/8145 [============================>.] - ETA: 0s - loss: 0.1261 - acc: 0.9855

  9. 8100/8145 [============================>.] - ETA: 0s - loss: 0.1285 - acc: 0.9854

  10. 8145/8145 [==============================] - 29s 4ms/step - loss: 0.1293 - acc: 0.9854 - val_loss: 1.0597 - val_acc: 0.8742

  11. ?

  12. Test accuracy: 0.8767123321648251

?

評(píng)估模型

?

Python

  1. for i in range(10):

  2. ????prediction = model.predict(np.array([x_test[i]]))

  3. ????predicted_label = text_labels[np.argmax(prediction[0])]

  4. ????print(test_files_names.iloc[i])

  5. ????print('Actual label:' + test_tags.iloc[i])

  6. ????print("Predicted label: " + predicted_label)

?

在Fit方法訓(xùn)練了我們的數(shù)據(jù)集之后,我們將如上所述評(píng)估模型。

混淆矩陣

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

?

保存模型

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

  1. # 創(chuàng)建一個(gè)HDF5文件'my_model.h5'



  2. model.model.save('my_model.h5')

  3. ?

  4. # 保存令牌生成器,即詞匯表



  5. with open('tokenizer.pickle', 'wb') as handle:

  6. ????pickle.dump(tokenizer, handle, protocol=pickle.HIGHEST_PROTOCOL)

?

Keras沒(méi)有任何實(shí)用程序方法可將Tokenizer與模型一起保存。我們必須單獨(dú)序列化它。

?

加載Keras模型

?

?

Python

?

??

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

encoder.classes_ #標(biāo)簽二值化

?

預(yù)測(cè)

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

?

?

Python

  1. ?

  2. labels = np.array(['alt.atheism', 'comp.graphics', 'comp.os.ms-windows.misc',

  3. 'comp.sys.ibm.pc.hardware', 'comp.sys.mac.hardware', 'comp.windows.x',

  4. 'misc.forsale', 'rec.autos', 'rec.motorcycles', 'rec.sport.baseball',

  5. 'rec.sport.hockey', 'sci.crypt', 'sci.electronics', 'sci.med', 'sci.space',

  6. 'soc.religion.christian', 'talk.politics.guns', 'talk.politics.mideast',

  7. 'talk.politics.misc', 'talk.religion.misc'])

  8. ?...

  9. for x_t in x_tokenized:

  10. ????prediction = model.predict(np.array([x_t]))

  11. ????predicted_label = labels[np.argmax(prediction[0])]

  12. ????print("File ->", test_files[i], "Predicted label: " + predicted_label)

  13. ????i += 1

?

輸出量

  1. File -> C:\DL\20news-bydate\20news-bydate-test\comp.graphics\38758 Predicted label: comp.graphics

  2. File -> C:\DL\20news-bydate\20news-bydate-test\misc.forsale\76115 Predicted label: misc.forsale

  3. File -> C:\DL\20news-bydate\20news-bydate-test\soc.religion.christian\21329 Predicted label: soc.religion.christian

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

?

結(jié)論

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

?

最受歡迎的見(jiàn)解

1.r語(yǔ)言用神經(jīng)網(wǎng)絡(luò)改進(jìn)nelson-siegel模型擬合收益率曲線分析

2.r語(yǔ)言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)和結(jié)果可視化

3.python用遺傳算法-神經(jīng)網(wǎng)絡(luò)-模糊邏輯控制算法對(duì)樂(lè)透分析

4.用于nlp的python:使用keras的多標(biāo)簽文本lstm神經(jīng)網(wǎng)絡(luò)分類

5.用r語(yǔ)言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)股票實(shí)例

6.R語(yǔ)言基于Keras的小數(shù)據(jù)集深度學(xué)習(xí)圖像分類

7.用于NLP的seq2seq模型實(shí)例用Keras實(shí)現(xiàn)神經(jīng)機(jī)器翻譯

8.python中基于網(wǎng)格搜索算法優(yōu)化的深度學(xué)習(xí)模型分析糖

9.matlab使用貝葉斯優(yōu)化的深度學(xué)習(xí)


Python使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡(jiǎn)單文本分類的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
淮阳县| 丰城市| 太谷县| 建昌县| 苏尼特左旗| 许昌市| 彰化市| 呼图壁县| 班戈县| 兰坪| 乐都县| 阆中市| 齐河县| 镶黄旗| 西宁市| 清水河县| 鄢陵县| 巢湖市| 武宁县| 黄冈市| 湖北省| 阿拉善左旗| 旅游| 手游| 四子王旗| 华宁县| 太仓市| 仁化县| 库伦旗| 新乐市| 屏边| 黔西县| 龙南县| 上思县| 于田县| 鄂托克前旗| 南岸区| 周宁县| 青海省| 兴山县| 油尖旺区|