首頁  >  文章  >  後端開發  >  Python中的樸素貝葉斯演算法實例

Python中的樸素貝葉斯演算法實例

王林
王林原創
2023-06-10 08:23:181359瀏覽

樸素貝葉斯演算法是經典的機器學習演算法之一,其應用廣泛,特別是在文字分類、垃圾郵件過濾等領域,具有較高的準確率和效率。本文將介紹Python中樸素貝葉斯演算法的實現,並以實例說明其應用。

一、樸素貝葉斯演算法簡介
樸素貝葉斯演算法是一種基於貝葉斯定理和特徵獨立性假設的分類演算法。其基本想法是透過已知類別資料的條件機率,來推斷新資料的分類。具體來說,在分類前需要訓練模型,也就是計算出每個類別下各特徵的條件機率。然後在進行分類時,根據貝葉斯定理計算新資料屬於各個類別的機率,並選取最大機率對應的類別作為預測結果。由於特徵間被假設為獨立,因此該演算法得名為「樸素貝葉斯」。

二、Python中的樸素貝葉斯實作
Python中有多個函式庫或模組可以用來實作樸素貝葉斯演算法,例如scikit-learn、nltk、gensim等。本文將介紹使用scikit-learn函式庫來實作樸素貝葉斯演算法的方法。

1.準備資料集
首先需要準備一個資料集,以便訓練和測試分類器。在本例中,我們選取UCI Machine Learning Repository上的“Spambase Data Set”,該資料集包含4601封郵件,其中1813封為垃圾郵件,2788封為正常郵件。可以將該資料集下載並存放為CSV格式。

2.匯入資料並劃分訓練集和測試集
使用pandas庫的read_csv函數將CSV檔案讀入為DataFrame格式,並將其劃分為訓練集和測試集,程式碼如下:

import pandas as pd
from sklearn.model_selection import train_test_split

導入資料

df = pd.read_csv('spambase.csv')

分割訓練集與測試集

X = df.iloc[:, :-1]
y = df.iloc[:, -1]
X_train, X_test, y_train, y_test = train_test_split (X, y, test_size=0.3, random_state=42)

#3.訓練模型
使用sklearn庫的MultinomialNB類別初始化一個樸素貝葉斯分類模型,並使用訓練資料進行模型訓練,程式碼如下:

from sklearn.naive_bayes import MultinomialNB

訓練模型

clf = MultinomialNB()
clf.fit(X_train, y_train)

4.測試模型
使用測試集對分類器進行測試,計算分類準確率,程式碼如下:

from sklearn.metrics import accuracy_score

測試模型

y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('Accuracy: {:.2f}%'.format(acc*100))

#5.應用模型
使用訓練好的模型對新資料進行分類,並輸出預測結果,程式碼如下:

應用模型

new_data = [[0.05, 0.08, 0.00, 0.00, 0.04, 0.00, 0.00, 0.14, 0.03, 0.10, 0.05, 0.00, 0.02, 0.04, 0.00, 0.10, 0.05, 0.01, 0.0, 0, 0.10, 0.05, 0.01, 0.0, 0. 0.96, 0.00, 0.00, 0.00, 0.32, 0.01]]
prediction = clf.predict(new_data)
print('Prediction:', prediction)

三、實例分析
本例中使用的是分類問題,特徵為郵件中的詞彙頻率,目標是將郵件分為垃圾郵件和正常郵件。經過培訓,使用樸素貝葉斯演算法進行分類並獲得了正確率為90.78%的結果。從結果可以看出,在特定應用場合下,樸素貝葉斯的分類效果優秀。

四、結論
樸素貝葉斯演算法是一種簡單而有效的分類方法,尤其在文字分類、垃圾郵件過濾等領域有廣泛應用。 Python中的scikit-learn函式庫提供了方便的樸素貝葉斯分類器實現,可以很好地支援模型的訓練、測試和應用。

以上是Python中的樸素貝葉斯演算法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn