国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自實現樸素貝葉斯分類器with案例:基于SMS Spam Collection數據集的廣告郵件分類

這篇具有很好參考價值的文章主要介紹了自實現樸素貝葉斯分類器with案例:基于SMS Spam Collection數據集的廣告郵件分類。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


貝葉斯分類器

首先要理解貝葉斯決策的理論依據,引用西瓜書上的原話:對于分類任務,在所有相關概率都已知的理想情形下,貝葉斯決策論考慮如何基于這些概率誤判損失來選擇最優(yōu)的類別標記。

然后引入我們很熟悉的貝葉斯公式:
P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) P(c\mid \boldsymbol{x}) = \frac{P(c)P(\boldsymbol{x} \mid c)}{P(\boldsymbol{x})} P(cx)=P(x)P(c)P(xc)?
其中 c c c 是類別標記, x x x 是樣本點(一個包含n維屬性的向量)。 P ( c ) P(c) P(c)就是所謂的“先驗”概率,這個概率是可以通過數據集統(tǒng)計直接得到的,那么 P ( c ∣ x ) P(c \mid \boldsymbol{x}) P(cx)就是所謂的“后驗“概率,即我們要在已有數據的信息背景下推斷得到的。


與其它機器學習的算法不同,貝葉斯分類算法似乎看不出一個明顯的待訓練參數,但觀察公式也能明白,我們要求出的 P ( c ∣ x ) P(c \mid \boldsymbol{x}) P(cx)是由 P ( c ) 、 P ( x ∣ c ) P(c)、P(\boldsymbol{x} \mid c) P(c)、P(xc)以及 P ( x ) P(\boldsymbol{x}) P(x)三者變量所共同決定的,而這三者的現實意義其實就是給定的信息背景(數據集)——多數情況下,我們在不同的信息背景下總能得到不同的 P ( c ∣ x ) 、 P ( c ) 、 P ( x ∣ c ) P(c \mid \boldsymbol{x})、P(c)、P(\boldsymbol{x} \mid c) P(cx)、P(c)、P(xc),進而推出不同的 P ( c ∣ x ) P(c \mid \boldsymbol{x}) P(cx)。

有些信息背景對于作出決策的貢獻是“好的”,這時 P ( c ∣ x ) P(c \mid \boldsymbol{x}) P(cx)體現出來的意義能很真實地反映出作出某項決策的正確性,而在有些信息背景(比如樣本過于稀疏)下得出的結果就并不能很好地反映待檢測樣本所屬的真實類別,進而造成誤分類。

于是Bayes分類器的訓練意義在于尋求“好的”數據集,使得后驗概率值能較好地反映出決策的真實性。


何為樸素

從概率學原理來講,類條件概率 P ( x ∣ c ) P(\boldsymbol{x} \mid c) P(xc),是所有屬性上的聯(lián)合概率,很難從有限的訓練樣本直接估計而得。那么為避開這個障礙,樸素貝葉斯分類器采用了“屬性條件獨立性假設”:對已知類別假設所有屬性之間相互獨立

此時類條件概率滿足:
P ( x ∣ c ) = ∏ i = 1 d P ( x i ∣ c ) P(\boldsymbol{x} \mid c)=\prod_{i=1}^n5n3t3zP(x_i \mid c) P(xc)=i=1d?P(xi?c)
其中 d d d 代表樣本點的屬性個數, x i x_i xi? 代表 x \boldsymbol{x} x的各個屬性。

于是開頭的貝葉斯公式進一步推:
P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) = P ( c ) ∏ i = 1 d P ( x i ∣ c ) P ( x ) P(c\mid \boldsymbol{x}) = \frac{P(c)P(\boldsymbol{x} \mid c)}{P(\boldsymbol{x})}=\frac{P(c)\prod_{i=1}^n5n3t3zP(x_i \mid c)}{P(\boldsymbol{x})} P(cx)=P(x)P(c)P(xc)?=P(x)P(c)i=1d?P(xi?c)?
于是在此假設前提下,進而大大地簡化了計算,這也正是“樸素(Naive)”一詞修飾的由來。

而且在一般分類任務下,是不會計算 P ( x ) P(\boldsymbol x) P(x)的,而是只計算分子便進行比較。


案例:基于SMS Spam Collection數據集的廣告郵件分類

SMS數據集

SMS Spam Collection是用于廣告短信識別的經典數據集,完全來自真實短信內容,包括4831條正常短信和747條廣告短信。

其內容如下,每一個line都表示一段郵件,"ham"和"spam"分別表示郵件的類別“正常郵件”和“廣告郵件”,然后以'\t'為間隔右邊的長字符串為郵件內容。

自實現樸素貝葉斯分類器with案例:基于SMS Spam Collection數據集的廣告郵件分類


詞向量表示

  • 每個詞語的出現各看成一個事件,先分別計算單個詞語的事件概率進行訓練,然后將一個完整的郵件看成這些事件的交事件。

給定一系列郵件的文本,將每個郵件的關鍵詞提取出來,我們認為長度>2的單詞才為關鍵詞,然后將這些關鍵詞轉換為小寫,其組成的列表作為一個數據樣本,所以加載數據集如下

# 創(chuàng)建數據集,加載數據
adClass = 1  # 廣告,垃圾標識

def textParse(bigString):
    '''接收一個長字符串解析成字符串列表'''
    #將特殊符號作為劃分標志進行字符串切分,即非字母,非數字
    listOfTokens = re.split(r'\W+', bigString)
    #除單字母  其它單詞全變成小寫
    return [tok.lower() for tok in listOfTokens if len(tok) > 2]

def loadDataSet():
    '''加載數據集合及其對應的分類'''
    classVec = []    #0-1列表 第i個元素標識了wordList第i行類別
    wordList = []    #提取出的詞矩陣,每一行是對應一個郵件的單詞列表
    
    smss = open("./SMSSpamCollection.txt", 'r', encoding = 'utf-8')
    data = csv.reader(smss, delimiter = '\t')
    for line in data:      #line:左邊一個"ham" or "spam",右邊一個大字符串
        if line[0] == "ham":
            classVec.append(0)
        else:
            classVec.append(1)
        wordList.append(textParse(line[1]))

    return wordList, classVec

打印數據樣本,可以看到郵件文本以及它的關鍵詞列表:

自實現樸素貝葉斯分類器with案例:基于SMS Spam Collection數據集的廣告郵件分類


然后,將這些詞全放在一起,構成一個“語料庫”。

def doc2VecList(docList):		#docList是一個二維矩陣,每行表示一個郵件的關鍵詞組成的列表
    """數據進行并集操作,最后返回一個詞不重復的并集"""
    a = list(reduce(lambda x, y:set(x) | set(y), docList))
    return a

這么做的意義在于我們要改變這個數據樣本的表示方式(否則不利于概率計算),在這里就是用詞向量的表示方法:

對于一個數據樣本,將其視作一個長度為 n = ∣ 語料庫中詞的個數 ∣ n=\left | 語料庫中詞的個數 \right | n=語料庫中詞的個數 的01向量,如果樣本某個詞在語料庫中出現了,那就在這個詞的對應位置記1,否則記0.

于是該詞向量就有了n個屬性,每個屬性取值∈{0,1}。

def words2Vec(vecList, inputWords):     #vecList:語料庫,inputWords:輸入的詞組
    '''把單詞轉化為詞向量'''
    dimensions = len(vecList)
    resultVec = [0] * dimensions
    for i in range(dimensions):
        if vecList[i] in inputWords:
            resultVec[i] += 1
    #轉化為一維數組
    return array(resultVec)

Laplacian平滑

接下來就是計算

  1. P ( c ) P(c) P(c)
  2. P ( x ∣ c ) = ∏ i = 1 d P ( x i ∣ c ) P(\boldsymbol{x} \mid c)=\prod_{i=1}^n5n3t3zP(x_i \mid c) P(xc)=i=1d?P(xi?c)

但這里尤其需要注意的是待分類樣本詞向量中可能存在“詞沒有記錄在語料庫”中的情況,也即它屬于任何類別的概率值為0,顯然會導致 ∏ i = 1 d P ( x i ∣ c ) \prod_{i=1}^n5n3t3zP(x_i \mid c) i=1d?P(xi?c)直接變成0不合理,因此進行**+1的Laplacian平滑處理**:
P ^ ( c ) = ∣ D c ∣ + 1 ∣ D ∣ + N \hat{P}{(c)} = \frac{|D_c| + 1} {|D|+N} P^(c)=D+NDc?+1?

P ^ ( x i ∣ c ) = ∣ D c , x i ∣ + 1 ∣ D c ∣ + N i \hat{P}({x_i\mid c}) = \frac{|D_{c,x_i}| + 1} {|D_c|+N_i} P^(xi?c)=Dc?+Ni?Dc,xi??+1?

  • 也就是令沒出現過的詞“所屬類別0和類別1的次數均+1”,“類別0的樣本數和類別1的樣本數均+2(類別數)”。

在代碼中體現為:

'''Laplacian +1平滑'''
# 全部都初始化為1(全1數組), 防止出現概率為0的情況
p0Num = ones(numWords)
p1Num = ones(numWords)
# 相應的單詞初始化為2
p0Words = 2.0
p1Words = 2.0

訓練過程

:這里的訓練過程跟測試集的內容無關系,而是一種預存儲*。

首先,根據訓練集計算從 i ∈ i\in i[1~ n ] n] n]所有 P ( x i ∣ 0 ) P(x_i \mid 0) P(xi?0) P ( x i ∣ 1 ) P(x_i \mid 1) P(xi?1),在這里 x i x_i xi?指代的語料庫中第 i i i個詞,然后存到兩個數組里——p0Vecp1Vec,在這里有個小技巧就是在存儲時對每個P值都取了一個log運算,這樣可以擴大數值域,方便后面的計算。

# 統(tǒng)計每個分類的詞的總數
    for i in range(numTrainClass):
        if trainClass[i] == 1:
            # 數組在對應的位置上相加
            p1Num += trainMatrix[i]
            p1Words += sum(trainMatrix[i])
        else:
            p0Num += trainMatrix[i]
            p0Words += sum(trainMatrix[i])

    # 計算每種類型里面, 每個單詞出現的概率
    # 在計算過程中,由于概率的值較小,于是取對數擴大數值域
    p0Vec = log(p0Num / p0Words)	#P(所有xi|0)
    p1Vec = log(p1Num / p1Words)	#P(所有xi|1)
    # 計算在類別中1出現的概率,0出現的概率可通過1-p得到
    pClass1 = sum(trainClass) / float(numTrainClass)	#P(c=1)

分類過程

對于測試集的詞向量testVec存在如下關系:
∏ i = 1 d P ( x i ∣ 1 或 0 ) = ∏ i ∈ { i ∣ t e s t V e c [ i ] = 1 } P ( x i ∣ 1 或 0 ) \prod_{i=1}^n5n3t3zP(x_i \mid 1或0)=\prod_{i\in\{i\mid testVec[i] = 1\}}P(x_i \mid 1或0) i=1d?P(xi?10)=i{itestVec[i]=1}?P(xi?10)
也就是說,只需要testVec * p0VectestVec * p1Vec 便可分別得到在testVec第i個位置上為1 P ( x i ∣ 0 ) P(x_i \mid 0) P(xi?0) P ( x i ∣ 1 ) P(x_i \mid 1) P(xi?1)了!

所以只要計算 P ( c ) ∏ i ∈ { i ∣ t e s t V e c [ i ] = 1 } P ( x i ∣ 1 或 0 ) P(c)\prod_{i\in\{i\mid testVec[i] = 1\}}P(x_i \mid 1或0) P(c)i{itestVec[i]=1}?P(xi?10)便得到兩個后驗概率,同樣根據對數特性 l n [ P ( c ) × P ( X 1 ∣ c ) × P ( X 2 ∣ c ) × . . . × P ( X n ∣ c ) ] = l n P ( c ) + l n P ( X 1 ∣ c ) + . . . + l n P ( X n ∣ c ) ln[{ P(c)×P(X1|c)×P(X2|c)×...×P(Xn|c)}] = lnP(c) + lnP(X1|c) + ... + lnP(Xn|c) ln[P(c)×P(X1∣c)×P(X2∣c)×...×P(Xnc)]=lnP(c)+lnP(X1∣c)+...+lnP(Xnc),將乘法改成加法:文章來源地址http://www.zghlxwxcb.cn/news/detail-465076.html

def classifyNB(testVec, p0Vec, p1Vec, pClass1):
    """分類, 返回分類結果 0 or 1"""
    # 因為概率的值太小了,所以乘法改加法,可以簡化計算且不失精度
    p1 = sum(testVec * p1Vec) + log(pClass1)
    p0 = sum(testVec * p0Vec) + log(1 - pClass1)
    if p0 > p1:
        return 0
    return 1

完整代碼

#導入所需庫文件
from numpy import *
from functools import reduce
import re
import csv

def textParse(bigString):
    '''接收一個長字符串解析成字符串列表'''
    #將特殊符號作為劃分標志進行字符串切分,即非字母,非數字
    listOfTokens = re.split(r'\W+', bigString)
    #除單字母  其它單詞全變成小寫
    return [tok.lower() for tok in listOfTokens if len(tok) > 2]

# 創(chuàng)建數據集,加載數據
adClass = 1  # 廣告,垃圾標識

def loadDataSet():
    '''加載數據集合及其對應的分類'''
    classVec = []  # 0-1列表 第i個元素標識了wordList第i行類別
    wordList = []  # 提取出的詞矩陣,每一行是對應一個郵件的單詞列表

    smss = open("./SMSSpamCollection.txt", 'r', encoding='utf-8')
    data = csv.reader(smss, delimiter='\t')
    for line in data:  # line:左邊一個"ham" or "spam",右邊一個大字符串
        if line[0] == "ham":
            classVec.append(0)
        else:
            classVec.append(1)
        wordList.append(textParse(line[1]))

    return wordList, classVec

def doc2VecList(docList):
    """函數說明:數據進行并集操作,最后返回一個詞不重復的并集"""
    #reduce(function, iterable[, initializer]): 從左至右積累地應用到 iterable 的條目,以便將該可迭代對象縮減為單一的值
    a = list(reduce(lambda x, y:set(x) | set(y), docList))
    return a  #['','',...,'']

def words2Vec(vecList, inputWords):     #所有詞,輸入的詞組
    '''把單詞轉化為詞向量'''
    dimensions = len(vecList)
    resultVec = [0] * dimensions
    for i in range(dimensions):
        if vecList[i] in inputWords:
            resultVec[i] += 1
    #轉化為一維數組
    return array(resultVec)


def trainNB(trainMatrix, trainClass):
    """函數說明:計算,生成每個詞對于類別上的概率"""
    # 類別行數
    numTrainClass = len(trainClass)
    # 列數
    numWords = len(trainMatrix[0])

    # 全部都初始化為1(全1數組), 防止出現概率為0的情況出現
    p0Num = ones(numWords)
    p1Num = ones(numWords)

    # 相應的單詞初始化為2
    p0Words = 2.0
    p1Words = 2.0

    # 統(tǒng)計每個分類的詞的總數
    for i in range(numTrainClass):
        if trainClass[i] == 1:
            # 數組在對應的位置上相加
            p1Num += trainMatrix[i]
            p1Words += sum(trainMatrix[i])
        else:
            p0Num += trainMatrix[i]
            p0Words += sum(trainMatrix[i])

    # 計算每種類型里面, 每個單詞出現的概率
    # 在計算過程中,由于概率的值較小,所以我們就取對數進行比較,其中l(wèi)n可替換為log的任意對數底
    p0Vec = log(p0Num / p0Words)
    p1Vec = log(p1Num / p1Words)

    # 計算在類別中1出現的概率,0出現的概率可通過1-p得到
    pClass1 = sum(trainClass) / float(numTrainClass)
    return p0Vec, p1Vec, pClass1

def classifyNB(testVec, p0Vec, p1Vec, pClass1):
    """分類, 返回分類結果 0 or 1"""
    # 因為概率的值太小了,所以乘法改加法
    # 根據對數特性ln{ P(c)×P(X1|c)×P(X2|c)×...×P(Xn|c) } = lnP(c) + lnP(X1|c) + ... + lnP(Xn|c)
    # 可以簡化計算且不失精度
    '''test * pVec已經在trainNB中取過對數了直接相加'''
    p1 = sum(testVec * p1Vec) + log(pClass1)
    p0 = sum(testVec * p0Vec) + log(1 - pClass1)
    if p0 > p1:
        return 0
    return 1

def printClass(words, testClass):
    if testClass == adClass:
        print(words, '推測為:廣告郵件')
    else:
        print(words, '推測為:正常郵件')


def tNB():
    # 加載訓練數據集
    docList, classVec = loadDataSet()  # 單詞矩陣、 01向量

    # 生成包含所有單詞的list
    allWordsVec = doc2VecList(docList)

    # 構建詞向量矩陣
    '''lambda中的x對應docList的每一行詞組'''
    trainMat = list(map(lambda x: words2Vec(allWordsVec, x), docList))  # 和docList對應的行(詞)向量組

    # 訓練計算每個詞在分類上的概率
    # 其中p0V:每個單詞在“非”分類出現的概率, p1V:每個單詞在“是”分類出現的概率  pClass1:類別中是1的概率
    p0V, p1V, pClass1 = trainNB(trainMat, classVec)

    # 測試數據集
    text1 = "As a valued cutomer, I am pleased to advise you that following recent review of your Mob No"
    testwords1 = textParse(text1)
    testVec1 = words2Vec(allWordsVec, testwords1)
    # 通過將單詞向量testVec代入,根據貝葉斯公式,比較各個類別的后驗概率,判斷當前數據的分類情況
    testClass1 = classifyNB(testVec1, p0V, p1V, pClass1)
    # 打印出測試結果
    printClass(testwords1, testClass1)

    text2 = "Please don't text me anymore. I have nothing else to say"
    testwords2 = textParse(text2)
    testVec2 = words2Vec(allWordsVec, testwords2)
    testClass2 = classifyNB(testVec2, p0V, p1V, pClass1)
    printClass(testwords2, testClass2)

if __name__ == '__main__':
    tNB()

到了這里,關于自實現樸素貝葉斯分類器with案例:基于SMS Spam Collection數據集的廣告郵件分類的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • python:基于樸素貝葉斯算法的垃圾郵件過濾分類

    python:基于樸素貝葉斯算法的垃圾郵件過濾分類

    目錄 一、樸素貝葉斯算法 1.概述 2.推導過程 二、實現垃圾郵件過濾分類 1.垃圾郵件問題背景 2.樸素貝葉斯算法實現垃圾郵件分類的步驟 3.python實現 參考學習網址:https://blog.csdn.net/weixin_59450364/article/details/124343350 1.概述 ? ? ? ?樸素貝葉斯法(Naive Bayes model)是基于貝葉斯定

    2024年02月07日
    瀏覽(26)
  • 基于樸素貝葉斯分類器的西瓜數據集(實戰(zhàn))

    基于樸素貝葉斯分類器的西瓜數據集(實戰(zhàn))

    最近剛開始學習機器學習中的樸素貝葉斯分類器,用西瓜數據集做了一下,最后結果預測正確率75%,其中運用到的python語法并不復雜,適合小白觀看。 目錄 樸素貝葉斯分類器思想的自然語言描述: 詳細步驟在代碼中說明 樸素貝葉斯分類器其實就是計算先驗概率和每一個屬性

    2024年02月11日
    瀏覽(18)
  • 機器學習:基于樸素貝葉斯(Naive Bayes)的分類預測

    機器學習:基于樸素貝葉斯(Naive Bayes)的分類預測

    目錄 一、簡介和環(huán)境準備 簡介: 環(huán)境: 二、實戰(zhàn)演練 2.1使用葡萄(Wine)數據集,進行貝葉斯分類 1.數據導入 2.模型訓練 3.模型預測 2.2模擬離散數據集–貝葉斯分類 1.數據導入、分析 2.模型訓練、預測 ?三、原理解析 樸素貝葉斯算法 優(yōu)缺點: 樸素貝葉斯(Naive Bayes, NB)?是

    2023年04月19日
    瀏覽(24)
  • 【機器學習實戰(zhàn)】-基于概率論的分類方法:樸素貝葉斯

    【機器學習實戰(zhàn)】-基于概率論的分類方法:樸素貝葉斯

    【機器學習實戰(zhàn)】讀書筆記 **樸素貝葉斯:**稱為“ 樸素 ”的原因,整個形式化過程只做最原始、最簡單的假設,特征之間沒有關聯(lián),是統(tǒng)計意義上的獨立。 **優(yōu)點:**在數據較少的情況下仍然有效,可以處理多類別問題。 **缺點:**對于輸入數據的準備方式較為敏感。 **適

    2024年03月25日
    瀏覽(24)
  • 第四章 基于概率論的分類方法:樸素貝葉斯

    樸素貝葉斯 優(yōu)點:在數據較少的情況下仍然有效,可以處理多類別問題。 缺點:對于輸?數據的準備?式較為敏感。 適?數據類型:標稱型數據。 假設類別為 c 1 , c 2 c_1,c_2 c 1 ? , c 2 ? : 如果 p 1 ( x , y ) p 2 ( x , y ) p1(x,y) p2(x,y) p 1 ( x , y ) p 2 ( x , y ) ,那么類別為 c 1 c_1 c

    2024年02月13日
    瀏覽(24)
  • 【Sklearn】基于樸素貝葉斯算法的數據分類預測(Excel可直接替換數據)

    模型原理: 樸素貝葉斯分類是基于貝葉斯定理的一種分類方法。它假設特征之間相互獨立(樸素性),從而簡化計算過程。樸素貝葉斯分類器適用于文本分類、垃圾郵件過濾、情感分析等多種應用場景。 貝葉斯定理: 在樸素貝葉斯分類中,我們使用貝葉斯定理來計算后驗概

    2024年02月13日
    瀏覽(23)
  • 基于機器學習算法:樸素貝葉斯和SVM 分類-垃圾郵件識別分類系統(tǒng)(含Python工程全源碼)

    基于機器學習算法:樸素貝葉斯和SVM 分類-垃圾郵件識別分類系統(tǒng)(含Python工程全源碼)

    本項目采用樸素貝葉斯和支持向量機(SVM)分類模型作為基礎,通過對垃圾郵件和正常郵件的數據進行訓練,旨在實現垃圾郵件的自動識別功能。 通過訓練這兩個分類模型,我們的目標是建立一個高效準確的垃圾郵件識別系統(tǒng)。當接收到新的郵件時,系統(tǒng)將對郵件文本進行預

    2024年02月09日
    瀏覽(32)
  • 機器學習——使用樸素貝葉斯分類器實現垃圾郵件檢測(python代碼+數據集)

    機器學習——scikit-learn庫學習、應用 機器學習——最小二乘法擬合曲線、正則化 機器學習——使用樸素貝葉斯分類器實現垃圾郵件檢測(python代碼+數據集) 貝葉斯公式: P ( A ∣ B ) = P ( A ) P ( B ∣ A ) P ( B ) P(A mid B)=frac{P(A) P(B mid A)}{P(B)} P ( A ∣ B ) = P ( B ) P ( A ) P ( B ∣ A )

    2024年02月10日
    瀏覽(29)
  • 大數據分析案例-基于高斯樸素貝葉斯算法構建良惡性腫瘤識別器

    大數據分析案例-基于高斯樸素貝葉斯算法構建良惡性腫瘤識別器

    ???♂? 個人主頁:@艾派森的個人主頁 ???作者簡介:Python學習者 ?? 希望大家多多支持,我們一起進步!?? 如果文章對你有幫助的話, 歡迎評論 ??點贊???? 收藏 ??加關注+ 喜歡大數據分析項目的小伙伴,希望可以多多支持該系列的其他文章 大數據分析案例合集

    2024年02月04日
    瀏覽(46)
  • 機器學習算法——貝葉斯分類器3(樸素貝葉斯分類器)

    機器學習算法——貝葉斯分類器3(樸素貝葉斯分類器)

    基于貝葉斯公式來估計后驗概率P(c|x)的主要困難在于:類條件概率P(x|c)是所有屬性上的聯(lián)合概率,難以從有限的訓練樣本直接估計而得。 為避開這個障礙,樸素貝葉斯分類器(Naive Bayes classfier)采用了“ 屬性條件獨立性假設 ”:對已知類別,假設所有屬性相互獨立。換句話

    2023年04月22日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包