日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

神经网络python实例分类_Python使用神经网络进行简单文本分类

發布時間:2025/3/20 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 神经网络python实例分类_Python使用神经网络进行简单文本分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

準備數據集

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

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

導入所需的軟件包

Pythonimport 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# For reproducibility

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 = []

# Read and add data from file to a list

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

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

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

在以上代碼的結尾,我們將有一個數據框,其中包含文件名,類別和實際數據。

拆分數據進行訓練和測試

Python# lets take 80% data as training and remaining 20% for test.

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 news groups

num_labels = 20

vocab_size = 15000

batch_size = 100

# define Tokenizer with Vocab Size

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

評估模型

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

混淆矩陣

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

保存模型

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

# creates a HDF5 file 'my_model.h5'

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

# Save Tokenizer i.e. Vocabulary

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

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

Keras沒有任何實用程序方法可將Tokenizer與模型一起保存。我們必須單獨序列化它。

加載Keras模型

Python

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

encoder.classes_ #LabelBinarizer

預測

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

Pythonlabels = 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:\DL\20news-bydate\20news-bydate-test\comp.graphics\38758 Predicted label: comp.graphics

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

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

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

結論

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

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的神经网络python实例分类_Python使用神经网络进行简单文本分类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。