婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python如何使用神經網絡進行簡單文本分類

Python如何使用神經網絡進行簡單文本分類

熱門標簽:螳螂科技外呼系統怎么用 舉辦過冬奧會的城市地圖標注 正安縣地圖標注app 400電話申請資格 qt百度地圖標注 遼寧智能外呼系統需要多少錢 地圖地圖標注有嘆號 電銷機器人系統廠家鄭州 阿里電話機器人對話

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

準備數據集

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

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

導入所需的軟件包

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

將數據從文件加載到Python變量

Python

# 為了復現性

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 = []
 
# 讀取文件中的數據并將其添加到列表


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

我們的數據無法以CSV格式提供。我們有文本數據文件,文件存放的目錄是我們的標簽或類別。

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

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

拆分數據進行訓練和測試

Python

# 讓我們以80%的數據作為訓練,剩下的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 = 20
vocab_size = 15000
batch_size = 100
 
# 用Vocab Size定義Tokenizer


tokenizer = Tokenizer(num_words=vocab_size)
tokenizer.fit_on_texts(train_posts) 

在對文本進行分類時,我們首先使用Bag Of Words方法對文本進行預處理。

預處理輸出標簽/類

在將文本轉換為數字向量后,我們還需要確保標簽以神經網絡模型接受的數字格式表示。

建立Keras模型并擬合

PowerShell

model = Sequential()

它為輸入數據的維度以及構成模型的圖層類型提供了簡單的配置。

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

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

混淆矩陣

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

保存模型

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

# 創建一個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

預測環境還需要注意標簽。

encoder.classes_ #標簽二值化

預測

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

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

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

結論

在本文中,我們使用Keras python庫構建了一個簡單而強大的神經網絡。

以上就是Python如何使用神經網絡進行簡單文本分類的詳細內容,更多關于python 神經網絡進行文本分類的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • numpy創建神經網絡框架
  • 教你使用Python建立任意層數的深度神經網絡
  • python神經網絡編程之手寫數字識別
  • python機器學習之神經網絡
  • pytorch動態神經網絡(擬合)實現
  • pytorch之深度神經網絡概念全面整理

標簽:興安盟 隨州 昭通 信陽 合肥 阜新 濟源 淘寶好評回訪

巨人網絡通訊聲明:本文標題《Python如何使用神經網絡進行簡單文本分類》,本文關鍵詞  Python,如何,使用,神經網絡,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python如何使用神經網絡進行簡單文本分類》相關的同類信息!
  • 本頁收集關于Python如何使用神經網絡進行簡單文本分類的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 平顺县| 宜章县| 定南县| 苍南县| 邵武市| 麟游县| 镇宁| 巴东县| 贵德县| 宁武县| 民丰县| 大荔县| 海城市| 高尔夫| 汤阴县| 宿迁市| 裕民县| 镇雄县| 岱山县| 蒲城县| 邢台市| 杭锦后旗| 堆龙德庆县| 贡山| 乌鲁木齐县| 长乐市| 昭通市| 咸阳市| 祁阳县| 霞浦县| 那曲县| 桑日县| 通州区| 娱乐| 黄石市| 仪陇县| 高平市| 天门市| 大庆市| 赤城县| 林州市|