最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

深度學(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ù)。

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

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

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

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

Python

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


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個(gè)新聞組


num_labels = 20
vocab_size = 15000
batch_size = 100
 
# 用Vocab Size定義Tokenizer


tokenizer = Tokenizer(num_words=vocab_size)
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)確性的代碼段

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

評(píng)估模型

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ù)集之后,我們將如上所述評(píng)估模型。

混淆矩陣

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

保存模型

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

# 創(chuàng)建一個(gè)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沒(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

 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

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

結(jié)論

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

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

相關(guān)文章

  • python執(zhí)行js代碼的方法

    python執(zhí)行js代碼的方法

    現(xiàn)在為了防止反爬,前端使用的反爬技術(shù)比較多的是js代碼混淆。python作為爬蟲(chóng)界的扛把子,免不了和js打交道,因此我們需要了解如何使用Python執(zhí)行js代碼
    2021-05-05
  • python ImageDraw類實(shí)現(xiàn)幾何圖形的繪制與文字的繪制

    python ImageDraw類實(shí)現(xiàn)幾何圖形的繪制與文字的繪制

    這篇文章主要介紹了python ImageDraw類實(shí)現(xiàn)幾何圖形的繪制與文字的繪制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Python編程使用DRF實(shí)現(xiàn)一次性驗(yàn)證碼OTP

    Python編程使用DRF實(shí)現(xiàn)一次性驗(yàn)證碼OTP

    今天講一下如何用 Django REST framework[1](DRF) 來(lái)實(shí)現(xiàn) OTP,閱讀本文需要一定的 DRF 的基礎(chǔ)知識(shí),有需要的朋友可以借鑒參考下
    2021-09-09
  • Python拆分大型CSV文件代碼實(shí)例

    Python拆分大型CSV文件代碼實(shí)例

    這篇文章主要介紹了Python拆分大型CSV文件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 在tensorflow以及keras安裝目錄查詢操作(windows下)

    在tensorflow以及keras安裝目錄查詢操作(windows下)

    這篇文章主要介紹了在tensorflow以及keras安裝目錄查詢操作(windows下),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python3+Appium安裝使用教程

    Python3+Appium安裝使用教程

    這篇文章主要介紹了Python3+Appium安裝使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn)

    python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn)

    散點(diǎn)圖是一種常用的圖表類型,可以用來(lái)展示兩個(gè)變量之間的關(guān)系,本文主要介紹了python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Python實(shí)現(xiàn)的登錄驗(yàn)證系統(tǒng)完整案例【基于搭建的MVC框架】

    Python實(shí)現(xiàn)的登錄驗(yàn)證系統(tǒng)完整案例【基于搭建的MVC框架】

    這篇文章主要介紹了Python實(shí)現(xiàn)的登錄驗(yàn)證系統(tǒng),結(jié)合完整實(shí)例形式分析了Python基于搭建的MVC框架進(jìn)行登錄驗(yàn)證操作的相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2019-04-04
  • Blueprint實(shí)現(xiàn)路由分組及Flask中session的使用詳解

    Blueprint實(shí)現(xiàn)路由分組及Flask中session的使用詳解

    這篇文章主要為大家介紹了Blueprint實(shí)現(xiàn)路由分組及Flask中session的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Pandas保存csv數(shù)據(jù)的三種方式詳解

    Pandas保存csv數(shù)據(jù)的三種方式詳解

    CSV文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本),是一種通用的、相對(duì)簡(jiǎn)單的文件格式,被用戶、商業(yè)和科學(xué)廣泛應(yīng)用。本文介紹了三種Pandas保存CSV文件數(shù)據(jù)的方法,需要的可以參考一下
    2022-03-03

最新評(píng)論

贡嘎县| 南京市| 颍上县| 柘荣县| 安阳县| 松桃| 荆州市| 湖南省| 威远县| 宁都县| 贵溪市| 公安县| 百色市| 普格县| 四川省| 衡南县| 二连浩特市| 汪清县| 陈巴尔虎旗| 普宁市| 化州市| 海盐县| 伽师县| 林西县| 都江堰市| 土默特右旗| 正蓝旗| 忻城县| 龙南县| 内黄县| 南丹县| 郧西县| 吴旗县| 石狮市| 虹口区| 台州市| 乌兰察布市| 阿拉尔市| 上蔡县| 东宁县| 新平|