首頁 後端開發 Python教學 Python中的樸素貝葉斯實例

Python中的樸素貝葉斯實例

Jun 09, 2023 pm 11:36 PM
Python直式程式設計 樸素貝葉斯 實例演示

Python是一種簡單易學的程式語言,擁有豐富的科學計算庫和資料處理工具。其中,樸素貝葉斯(Naive Bayes)演算法作為一種經典的機器學習方法,在Python語言中也擁有廣泛的應用。本文將結合實例,介紹Python中樸素貝葉斯的使用方法與步驟。

  1. 樸素貝葉斯介紹

樸素貝葉斯演算法是一種基於貝葉斯定理的分類演算法,它的核心思想是透過已知訓練數據集的特徵,來推論新資料的分類結果。在實際應用中,樸素貝葉斯演算法常用於文字分類、垃圾郵件過濾、情緒分析等場景。

樸素貝葉斯演算法的特徵在於它假設各個特徵之間是互相獨立的,這種假設在實際情況中往往不成立,因此樸素貝葉斯演算法有「樸素」之稱。儘管有這種假設,樸素貝葉斯在短文本分類等問題上的表現仍然很好。

  1. 使用樸素貝葉斯分類器

在Python中,使用樸素貝葉斯分類器的步驟可以歸納為以下幾個:

2.1 準備資料

首先需要準備待分類的訓練資料和測試資料。這些數據可以是文字、圖片、音訊等形式,但需要將其轉換為能夠被電腦理解的形式。在文字分類問題中,通常需要將文字轉換為向量表示。

2.2 訓練模型

接下來,需要使用訓練資料集來建立樸素貝葉斯分類器。 Python中常用的樸素貝葉斯分類器有三種:

  • GaussianNB:適用於連續資料的分類。
  • BernoulliNB:適用於二元資料的分類。
  • MultinomialNB:適用於多元資料的分類。

以文字分類為例,可以使用sklearn函式庫提供的TfidfVectorizer類別將文字轉換為向量表示,並使用MultinomialNB分類器進行訓練。

2.3 測試模型

訓練完成後,需要使用測試資料集來評估模型的效能。通常情況下,測試資料集和訓練資料集是獨立的。要注意的是,在測試過程中不能使用訓練資料集中的資料。可以使用sklearn函式庫提供的accuracy_score函數來計算模型的準確率。

  1. 範例:基於樸素貝葉斯的文本分類

為了示範樸素貝葉斯分類器的實際應用,本文以基於樸素貝葉斯的文本分類為例。

3.1 準備資料

首先,從網路上找到兩個文字資料集,分別為“體育新聞”和“科技新聞”,每個資料集包含1000個文字。將兩個資料集放到不同的資料夾中,並將這些文字分別標註為「體育」和「科技」。

3.2 使用sklearn函式庫進行分類

接下來,使用sklearn函式庫提供的樸素貝葉斯分類器進行分類。

(1)導入相關函式庫

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
import os
登入後複製

(2)讀取文字資料及其標註

def read_files(path):
    text_list = []
    label_list = []
    for root, dirs, files in os.walk(path):
        for file in files:
            file_path = os.path.join(root, file)
            with open(file_path, 'r', encoding='utf-8') as f:
                text = ''.join(f.readlines())
                text_list.append(text)
                if '体育' in file_path:
                    label_list.append('体育')
                elif '科技' in file_path:
                    label_list.append('科技')
    return text_list, label_list
登入後複製

(3)將文字轉換為向量表示

def text_vectorizer(text_list):
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(text_list)
    return X, vectorizer
登入後複製

(4)訓練模型並返回準確率

def train(text_list, label_list):
    X, vectorizer = text_vectorizer(text_list)
    y = label_list
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    clf = MultinomialNB()
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    acc = accuracy_score(y_test, y_pred)
    return clf, vectorizer, acc
登入後複製

(5)測試模型

def predict(clf, vectorizer, text):
    X = vectorizer.transform(text)
    y_pred = clf.predict(X)
    return y_pred[0]
登入後複製

3.3 結果分析

運行上述程式碼,可以得到分類器的準確率為0.955。在進行實際分類時,只需要將待分類文字輸入predict函數,即可傳回其所屬類別。例如,輸入一則文字「iPhone 12終於發布了!」即可回到「科技」類別。

  1. 總結

樸素貝葉斯演算法作為一種簡單而有效的分類演算法,在Python中也有著廣泛的應用。本文介紹了樸素貝葉斯分類器的使用方法和步驟,並以基於樸素貝葉斯的文本分類為例,示範了分類器的實際應用。在實際應用過程中,還需要對資料進行預處理、特徵選擇等操作,以提高分類器的準確率。

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

AssertionError:如何解決Python斷言錯誤? AssertionError:如何解決Python斷言錯誤? Jun 25, 2023 pm 11:07 PM

Python中的斷言(assert)是程式設計師用來偵錯程式碼的有用工具。它用於驗證程式的內部狀態是否滿足預期,並在這些條件為假時引發一個斷言錯誤(AssertionError)。在開發過程中,測試和偵錯階段都使用斷言來檢查程式碼的狀態和預期結果是否相符。本文將討論AssertionError的原因、解決方法以及如何在程式碼中正確使用斷言。斷言錯誤的原因斷言錯誤通

Python中的分層抽樣技巧 Python中的分層抽樣技巧 Jun 10, 2023 pm 10:40 PM

Python中的分層抽樣技巧抽樣是統計學中常用的資料收集方法,它可以從資料集中選擇一部分樣本進行分析,以此推斷出整個資料集的特徵。在大數據時代,數據量龐大,使用全樣本進行分析既耗費時間又不夠經濟實際。因此,選擇合適的抽樣方法可以提高資料分析效率。本文主要介紹Python中的分層抽樣技巧。什麼是分層抽樣?在抽樣中,分層抽樣(stratifiedsampl

Python開發漏洞掃描器的方法 Python開發漏洞掃描器的方法 Jul 01, 2023 am 08:10 AM

如何透過Python開發漏洞掃描器概述在當今網路安全威脅增加的環境下,漏洞掃描器成為了保護網路安全的重要工具。 Python是一種流行的程式語言,簡潔易讀且功能強大,適合開發各種實用工具。本文將介紹如何使用Python開發漏洞掃描器,為您的網路提供即時保護。步驟一:確定掃描目標在開發漏洞掃描器之前,您需要確定要掃描的目標。這可以是您自己的網路或任何您有權限測

如何使用Python在Linux中進行腳本編寫和執行 如何使用Python在Linux中進行腳本編寫和執行 Oct 05, 2023 am 11:45 AM

如何使用Python在Linux中進行腳本編寫和執行在Linux作業系統中,我們可以使用Python編寫並執行各種腳本。 Python是一種簡潔而強大的程式語言,它提供了豐富的函式庫和工具,使得腳本編寫變得更加簡單和有效率。以下我們將介紹在Linux中如何使用Python進行腳本編寫和執行的基本步驟,同時提供一些具體的程式碼範例來幫助你更好地理解和運用。安裝Pytho

Python中sqrt()函數用法 Python中sqrt()函數用法 Feb 21, 2024 pm 03:09 PM

Python中sqrt()函數用法及程式碼範例一、sqrt()函數的功能及介紹在Python程式設計中,sqrt()函數是math模組中的一個函數,其功能是計算一個數的平方根。平方根是指一個數與自己相乘等於這個數的平方,即x*x=n,則x就是n的平方根。程式中可以使用sqrt()函數來實現對平方根的計算。二、sqrt()函數的使用方法在Python中,sq

Python程式實戰:利用百度地圖API產生靜態地圖功能的方法 Python程式實戰:利用百度地圖API產生靜態地圖功能的方法 Jul 30, 2023 pm 09:05 PM

Python程式實戰:利用百度地圖API產生靜態地圖功能的方法導語:在現代社會中,地圖已成為人們生活中不可缺少的一部分。在使用地圖時,我們常常需要取得特定區域的靜態地圖,以便在網頁、行動應用程式或報告中進行展示。本文將介紹如何利用Python程式語言和百度地圖API來產生靜態地圖,並提供相關的程式碼範例。一、準備工作要實現利用百度地圖API產生靜態地圖的功能,我

Python程式設計解析百度地圖API文件中的座標轉換功能 Python程式設計解析百度地圖API文件中的座標轉換功能 Aug 01, 2023 am 08:57 AM

Python程式解析百度地圖API文件中的座標轉換功能導讀:隨著網路的快速發展,地圖定位功能已成為現代人生活中不可或缺的一部分。而百度地圖作為國內最受歡迎的地圖服務之一,提供了一系列的API供開發者使用。本文將透過Python編程,解析百度地圖API文件中的座標轉換功能,並給出對應的程式碼範例。一、引言在開發中,我們有時會涉及到座標的轉換問題。百度地圖AP

如何用Python寫PCA主成分分析演算法? 如何用Python寫PCA主成分分析演算法? Sep 20, 2023 am 10:34 AM

如何用Python寫PCA主成分分析演算法? PCA(PrincipalComponentAnalysis)是一種常用的無監督學習演算法,用於降低資料維度,從而更好地理解和分析資料。在這篇文章中,我們將學習如何使用Python編寫PCA主成分分析演算法,並提供具體的程式碼範例。 PCA的步驟如下:標準化資料:將資料每個特徵的平均值歸零,並調整變異數到相同的範圍,以確保

See all articles