最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
沂南县| 筠连县| 榆社县| 百色市| 高阳县| 盐山县| 湟中县| 定结县| 醴陵市| 通化市| 焉耆| 南召县| 武夷山市| 柳林县| 岗巴县| 衡阳市| 平陆县| 濉溪县| 双柏县| 桓台县| 札达县| 惠安县| 和田县| 上犹县| 宣武区| 岳阳市| 清河县| 西峡县| 柯坪县| 德清县| 麻栗坡县| 行唐县| 余干县| 个旧市| 曲沃县| 偃师市| 石阡县| 库尔勒市| 瑞安市| 南昌市| 沧州市|