多項式樸素貝葉斯

一、簡介

多項式樸素貝葉斯(Multinomial Naive Bayes)是一種基於貝葉斯定理的分類演算法。它假設每個特徵的概率分布都是多項式分布,因此被稱為多項式樸素貝葉斯。該演算法具有簡單、快速、準確等特點,常應用於文本分類、垃圾郵件過濾和情感分析等領域。

二、貝葉斯定理

首先讓我們了解一下貝葉斯定理,它是概率論的重要理論基礎之一。貝葉斯定理表明,當已知某個假設和一些證據時,可以利用貝葉斯定理計算該假設在給定證據的條件下的後驗概率。其中,P(A|B) 表示在 B 發生的條件下 A 發生的概率,P(B|A) 表示在 A 發生的條件下 B 發生的概率,P(A)P(B) 分別表示 A、B 發生的先驗概率。

    P(A|B) = P(B|A) * P(A) / P(B)

三、多項式樸素貝葉斯演算法

在文本分類問題中,通常將文本表示成詞袋模型,即將每個文本看作一個由詞語構成的集合,忽略詞語的順序和語法。設一個文本包含 n 個詞,表示為 w1, w2, …, wn,其所屬類別為 C。則由貝葉斯定理可以得到:

    P(C|w1,w2,...,wn) = P(C) * P(w1,w2,...,wn|C) / P(w1,w2,...,wn)

其中,P(C) 為文本屬於 C 類的先驗概率,P(w1,w2,…,wn|C) 表示在 C 類下,文本所包含的詞語的聯合概率,可以近似地表示為每個詞語在 C 類中出現的概率的乘積,即:

    P(w1,w2,...,wn|C) ≈ P(w1|C) * P(w2|C) * ... * P(wn|C)

由此可得:

    P(C|w1,w2,...,wn) ≈ P(C) * P(w1|C) * P(w2|C) * ... * P(wn|C) / P(w1,w2,...,wn)

為了簡化計算,通常對分母 P(w1,w2,…,wn) 進行省略,因為它對所有類別的條件概率密度函數都是相同的。因此,最終可得:

    P(C|w1,w2,...,wn) ≈ P(C) * Π P(wi|C)

四、擬合模型

對於擬合文本分類模型,需要進行以下步驟:

1. 準備數據集

首先,需要準備一個文本分類的數據集。可以從網上下載,例如以新聞內容為例的新聞數據集。

2. 構建詞袋模型

對於文本中出現的每個詞,統計它們出現的次數並進行編號。然後將每個文本表示成一個向量,長度為詞典大小,其中每個元素表示對應詞出現的次數。

    import numpy as np
    from sklearn.feature_extraction.text import CountVectorizer
    
    text = ["This is a good product.", "This is a bad product."]
    vectorizer = CountVectorizer()
    X = vectorizer.fit_transform(text)
    print(vectorizer.get_feature_names(), X.toarray())
    # Output: ['bad', 'good', 'is', 'product', 'this'] [[1 1 1 1 1] [1 0 1 1 1]]

3. 計算類別的先驗概率

統計訓練集中每個類別所佔的比例。

    y_train = np.array([0, 1]) # 0表示好評,1表示差評
    prior = np.bincount(y_train) / len(y_train)
    print("prior probability:", prior)
    # Output: [0.5 0.5]

4. 計算每個類別下每個詞出現的概率

統計訓練集中每個類別下每個詞出現的次數,然後計算每個詞在每個類別下的概率。

    X_train = X.toarray()
    cond_prob = np.zeros((2, X_train.shape[1])) # 2表示有兩個類別,shape[1]表示詞典大小
    
    for i in range(2):
        cond_prob[i] = X_train[y_train==i].sum(axis=0) / X_train[y_train==i].sum()
    print("conditional probability:", cond_prob)
    # Output: [[0. 0.16666667 0.16666667 0.16666667 0.16666667 0.16666667 0.16666667]
              [0.14285714 0.14285714 0.14285714 0.14285714 0.21428571 0.14285714 0.07142857]]

5. 預測結果

對於一個新的文本,將它表示成一個向量,然後根據貝葉斯定理計算它屬於每個類別的後驗概率,最終選擇後驗概率最大的類別。

    X_test = vectorizer.transform(["This is a very good product."]).toarray()
    posterior = np.zeros(2)

    for i in range(2):
        posterior[i] = prior[i] * np.prod(X_test ** cond_prob[i] * (1 - X_test) ** (1-cond_prob[i]))
    pred = np.argmax(posterior)
    print("predicted class:", pred)
    # Output: predicted class: 0 (即好評)

五、總結

多項式樸素貝葉斯演算法是一種簡單、快速、準確的分類演算法,可應用於文本分類、垃圾郵件過濾和情感分析等領域。該演算法的核心思想是基於貝葉斯定理和樸素貝葉斯假設,通過統計訓練集中每個類別下每個詞出現的概率來計算後驗概率,從而實現分類。通過構建詞袋模型、計算先驗概率和條件概率,可以訓練出一個文本分類模型。預測時,將測試集表示成一個向量,根據模型計算後驗概率後選擇後驗概率最大的類別。如果是多分類問題,可以採用一對多的方法來處理。

原創文章,作者:QCBEA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/368632.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
QCBEA的頭像QCBEA
上一篇 2025-04-12 01:13
下一篇 2025-04-12 01:13

相關推薦

  • 樸素貝葉斯原理詳解

    一、樸素貝葉斯基礎 樸素貝葉斯是一種基於貝葉斯定理的演算法,用於分類和預測。貝葉斯定理是一種計算條件概率的方法,即已知某些條件下,某事件發生的概率,求某條件下另一事件發生的概率。樸素…

    編程 2025-04-25
  • 紮實基礎:多項式函數

    多項式函數是初中、高中數學中的重要內容,也是數學建模和科學研究中常用的工具。其在實際應用中廣泛使用,如在物理學、化學、生物學、經濟學、工程學等學科中都有著廣泛應用。 一、多項式函數…

    編程 2025-04-23
  • GaussianNB:探究樸素貝葉斯分類器

    一、 GaussianNB概述 GaussianNB是樸素貝葉斯分類器的一種類型,它基於貝葉斯定理和高斯分布,用於處理多維度數據的分類問題。GaussianNB是一個簡單而有效的算…

    編程 2025-04-23
  • 樸素貝葉斯演算法及其在Python中的應用

    一、什麼是樸素貝葉斯演算法? 樸素貝葉斯演算法是一種基於”貝葉斯定理”與”特徵獨立性假設”的分類演算法。簡單來說,它是一種統計學方法,用於…

    編程 2025-04-13
  • 貝葉斯規則:理解和應用

    一、基本概念 貝葉斯規則(Bayes Rule)是一種基於概率論的數學方法,用來求解條件概率。它的核心思想是:在已知某個條件下,求另一個事件發生的概率。 用數學符號表示,如果A和B…

    編程 2025-02-25
  • 樸素貝葉斯演算法詳解

    樸素貝葉斯(Naive Bayes)是一種基於概率論和特徵條件獨立假設的簡單有監督學習演算法,用於分類和回歸問題。 一、基本概念 1、貝葉斯定理(Bayes’ theor…

    編程 2025-02-24
  • 貝葉斯分類器及python實現的簡單介紹

    本文目錄一覽: 1、貝葉斯分類器(3)樸素貝葉斯分類器 2、python scikit-learn 有什麼演算法 3、python 如何得到準確率最高的貝葉斯分類器 4、哪些機器學習…

    編程 2025-01-13
  • 貝葉斯學習及其應用

    一、貝葉斯學習的基本概念 貝葉斯學習是一種基於貝葉斯理論的機器學習方法。其基本思想是利用已有的經驗,通過貝葉斯公式不斷更新模型的先驗概率分布,從而得到後驗概率分布,進而進行預測和決…

    編程 2025-01-07
  • 擬合c語言,多項式擬合 c語言

    本文目錄一覽: 1、C語言線性曲線擬合 2、c語言怎麼把數據擬合成函數並畫線 3、c語言曲線擬合問題 4、想用C語言編寫多項式擬合的程序 C語言線性曲線擬合 可以直接在線進行擬合,…

    編程 2024-12-31
  • 多項式變異

    一、多項式變異是什麼意思 多項式變異是指將一個多項式通過某種變化方式,得到另一個多項式的過程。多項式變異可以從多個方面進行操作,如變因式分解,進行高斯變異,進行時間變換,將多項式變…

    編程 2024-12-26

發表回復

登錄後才能評論