欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年02月25日 09:18:50   作者:拓端tecdat  
這篇文章主要介紹了Python如何使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下

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

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

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

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

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

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

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

Python

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

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 = []
 
# 讀取文件中的數(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ù)據(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 = 20
vocab_size = 15000
batch_size = 100
 
# 用Vocab Size定義Tokenizer


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

混淆矩陣

混淆矩陣是可視化模型準(zhǔ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沒有任何實用程序方法可將Tokenizer與模型一起保存。我們必須單獨序列化它。

加載Keras模型

Python

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

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

預(yù)測

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

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

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

結(jié)論

在本文中,我們使用Keras python庫構(gòu)建了一個簡單而強大的神經(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)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pyinstaller的介紹與使用超詳細(xì)講解

    pyinstaller的介紹與使用超詳細(xì)講解

    PyInstaller是一個Python庫,可以將Python應(yīng)用程序轉(zhuǎn)換為獨立的可執(zhí)行文件,下面這篇文章主要給大家介紹了關(guān)于pyinstaller的介紹與使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 利用python繪制數(shù)據(jù)曲線圖的實現(xiàn)

    利用python繪制數(shù)據(jù)曲線圖的實現(xiàn)

    這篇文章主要介紹了利用python繪制數(shù)據(jù)曲線圖的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python tkinter分隔控件(Seperator)的使用

    Python tkinter分隔控件(Seperator)的使用

    這篇文章主要介紹了Python tkinter分隔控件(Seperator)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python排序方法中sort和sorted的區(qū)別詳解

    Python排序方法中sort和sorted的區(qū)別詳解

    在python中常用的排序函數(shù)就是sort()和sorted()這兩個函數(shù),使用 sort() 或內(nèi)建函數(shù) sorted() 對列表進(jìn)行排序,本文將詳細(xì)介紹sorted和sort兩者之間的區(qū)別,感興趣的可以了解一下
    2023-08-08
  • 詳解在OpenCV中實現(xiàn)的圖像標(biāo)注技術(shù)

    詳解在OpenCV中實現(xiàn)的圖像標(biāo)注技術(shù)

    圖像標(biāo)注在計算機視覺中很重要,計算機視覺是一種技術(shù),它允許計算機從數(shù)字圖像或視頻中獲得高水平的理解力,并以人類的方式觀察和解釋視覺信息,本文將重點討論在OpenCV的幫助下創(chuàng)建這些注釋,感興趣的朋友一起看看吧
    2022-06-06
  • Python 3 實現(xiàn)定義跨模塊的全局變量和使用教程

    Python 3 實現(xiàn)定義跨模塊的全局變量和使用教程

    這篇文章主要介紹了Python 3 實現(xiàn)定義跨模塊的全局變量和使用,本文通過實例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 你知道怎么用Python監(jiān)控聊天記錄嗎

    你知道怎么用Python監(jiān)控聊天記錄嗎

    今天有位同事和我吐槽關(guān)于公司 XX 的問題,我告訴他不要在公司電腦上說這些,因為很可能會被狙擊,這位同事剛開始還不信,直到我寫了這邊文章,他才恍然大悟
    2021-10-10
  • Python生成驗證碼實例

    Python生成驗證碼實例

    這篇文章主要介紹了Python生成驗證碼的方法,具有很好的實用價值,代碼結(jié)構(gòu)清晰易懂,需要的朋友可以參考下
    2014-08-08
  • Django框架下在URLconf中指定視圖緩存的方法

    Django框架下在URLconf中指定視圖緩存的方法

    這篇文章主要介紹了Django框架下在URLconf中指定視圖緩存的方法,在Python豐富多彩的web框架中,Django是最具人氣的一個,需要的朋友可以參考下
    2015-07-07
  • 通過代碼簡單了解django model序列化作用

    通過代碼簡單了解django model序列化作用

    這篇文章主要介紹了通過代碼簡單了解django model序列化作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論