搜尋
首頁後端開發Python教學Python中的樸素貝葉斯演算法實例

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

Jun 10, 2023 am 08:23 AM
python演算法樸素貝葉斯

樸素貝葉斯演算法是經典的機器學習演算法之一,其應用廣泛,特別是在文字分類、垃圾郵件過濾等領域,具有較高的準確率和效率。本文將介紹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
Python腳本可能無法在UNIX上執行的一些常見原因是什麼?Python腳本可能無法在UNIX上執行的一些常見原因是什麼?Apr 28, 2025 am 12:18 AM

Python腳本在Unix系統上無法運行的原因包括:1)權限不足,使用chmod xyour_script.py賦予執行權限;2)Shebang行錯誤或缺失,應使用#!/usr/bin/envpython;3)環境變量設置不當,可打印os.environ調試;4)使用錯誤的Python版本,可在Shebang行或命令行指定版本;5)依賴問題,使用虛擬環境隔離依賴;6)語法錯誤,使用python-mpy_compileyour_script.py檢測。

舉一個場景的示例,其中使用Python數組比使用列表更合適。舉一個場景的示例,其中使用Python數組比使用列表更合適。Apr 28, 2025 am 12:15 AM

使用Python數組比列表更適合處理大量數值數據。 1)數組更節省內存,2)數組對數值運算更快,3)數組強制類型一致性,4)數組與C語言數組兼容,但在靈活性和便捷性上不如列表。

在Python中使用列表與數組的性能含義是什麼?在Python中使用列表與數組的性能含義是什麼?Apr 28, 2025 am 12:10 AM

列表列表更好的forflexibility andmixDatatatypes,何時出色的Sumerical Computitation sand larged數據集。 1)不可使用的列表xbilese xibility xibility xibility xibility xibility xibility xibility xibility xibility xibility xibles and comply offrequent elementChanges.2)

Numpy如何處理大型數組的內存管理?Numpy如何處理大型數組的內存管理?Apr 28, 2025 am 12:07 AM

numpymanagesmemoryforlargearraysefefticefticefipedlyuseviews,副本和內存模擬文件.1)viewsAllowSinglicingWithOutCopying,直接modifytheoriginalArray.2)copiesCanbecopy canbecreatedwitheDedwithTheceDwithThecevithThece()methodervingdata.3)metservingdata.3)memore memore-mappingfileShessandAstaStaStstbassbassbassbassbassbassbassbassbassbassbb

哪個需要導入模塊:列表或數組?哪個需要導入模塊:列表或數組?Apr 28, 2025 am 12:06 AM

Listsinpythondonotrequireimportingamodule,helilearraysfomthearraymoduledoneedanimport.1)列表列表,列表,多功能和canholdMixedDatatatepes.2)arraysaremoremoremoremoremoremoremoremoremoremoremoremoremoremoremoremoremeremeremeremericdatabuteffeftlessdatabutlessdatabutlessfiblesible suriplyElsilesteletselementEltecteSemeTemeSemeSemeSemeTypysemeTypysemeTysemeTypysemeTypepe。

可以在Python數組中存儲哪些數據類型?可以在Python數組中存儲哪些數據類型?Apr 27, 2025 am 12:11 AM

pythonlistscanStoryDatatepe,ArrayModulearRaysStoreOneType,and numpyArraySareSareAraysareSareAraysareSareComputations.1)列出sareversArversAtileButlessMemory-Felide.2)arraymoduleareareMogeMogeNareSaremogeNormogeNoreSoustAta.3)

如果您嘗試將錯誤的數據類型的值存儲在Python數組中,該怎麼辦?如果您嘗試將錯誤的數據類型的值存儲在Python數組中,該怎麼辦?Apr 27, 2025 am 12:10 AM

WhenyouattempttostoreavalueofthewrongdatatypeinaPythonarray,you'llencounteraTypeError.Thisisduetothearraymodule'sstricttypeenforcement,whichrequiresallelementstobeofthesametypeasspecifiedbythetypecode.Forperformancereasons,arraysaremoreefficientthanl

Python標準庫的哪一部分是:列表或數組?Python標準庫的哪一部分是:列表或數組?Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器