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

機器學(xué)習期末復(fù)習 貝葉斯分類器

這篇具有很好參考價值的文章主要介紹了機器學(xué)習期末復(fù)習 貝葉斯分類器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

先驗概率與后驗概率

先驗概率:對于某一個概率事件,我們都會有基于自己已有的知識,對于這個概率事件會分別以什么概率出現(xiàn)各種結(jié)果會有一個預(yù)先的估計,而這個估計并未考慮到任何相關(guān)因素。

對于分類數(shù)據(jù)來說,先驗概率就是取某一類的概率。

(基于自己已有的知識->已有的數(shù)據(jù))

(預(yù)先的估計->統(tǒng)計概率)

假如你考試沒及格,老師要求大家拿卷子回家給爸媽簽字,假如你考試沒及格過10次,你每次都用小本記下來后果:

  • 被胖揍一頓:7次
  • 被簡單地數(shù)落一下:2次
  • 被溫情地鼓勵:1次

那么先驗概率:

  • 被胖揍一頓:70%
  • 被簡單地數(shù)落一下:20%
  • 被溫情地鼓勵:10%

后驗概率:在先驗概率的基礎(chǔ)上加了一層“考慮”:結(jié)合我們已有的知識,將與待檢驗事件(即我們正在估計概率的隨機事件)相關(guān)的因素也考慮進去后,我們對隨機事件的概率的預(yù)估。

我的理解是,通過結(jié)果估計條件。就西瓜數(shù)據(jù)集來說,結(jié)果是好瓜還是壞瓜,條件是色澤,敲聲等等的屬性,所以后驗概率就是,我們已經(jīng)知道這個西瓜是好瓜了,在他是好瓜的前提下估計他的色澤時青綠的概率,即P(青綠|好瓜),用字符表示就是P(x | c)。

那么,落實到實際的問題當中,我們想獲得的核心結(jié)果其實也就是P(c|x),即在x數(shù)據(jù)集上,是好瓜的概率P(c=好瓜|x)和是壞瓜P(c=壞瓜|x)的概率,通過貝葉斯公式:

機器學(xué)習期末復(fù)習 貝葉斯分類器

即可通過P(x | c)求得P(c?| x),但是,求P(x | c)并不容易,所以引出下面的樸素貝葉斯。

詳細分析后驗概率看這篇博文吧:

樸素貝葉斯分類器(Naive Bayesian Classifier)

重點:樸素貝葉斯

樸素貝葉斯方法是基于貝葉斯定理的一組有監(jiān)督學(xué)習算法

樸素->所有屬性相互獨立,就西瓜數(shù)據(jù)集來說,顏色與敲聲沒有任何關(guān)系。(實際情況下是有聯(lián)系的,但是為了簡化,假設(shè)他們沒關(guān)系)

公式:

機器學(xué)習期末復(fù)習 貝葉斯分類器文章來源地址http://www.zghlxwxcb.cn/news/detail-457975.html

?公式中的P(x)可以忽略。

因為這個公式最后求出來的是一個數(shù),比如西瓜數(shù)據(jù)集,我們最后求出的是P(c=好瓜 | X)=0.4

P(c=壞瓜 | X)=0.8,然后通過比較這兩個數(shù)的大小來判斷測試集是好瓜還是壞瓜。

P(x)在計算P(c=好瓜 | X)和P(c=壞瓜 | X)都有,而且相同。所以去掉P(x)并不影響

P(c=好瓜 | X)和P(c=壞瓜 | X)之間的大小關(guān)系。

分類準則:

機器學(xué)習期末復(fù)習 貝葉斯分類器

思路:

具體分析還請看:樸素貝葉斯分類器(Naive Bayesian Classifier)

假設(shè)我們有了一個數(shù)據(jù)集D,那么p( c )的獲得其實也較為簡單:計算D中c的各個情況出現(xiàn)的頻率即可。(這里用到了大數(shù)定律:當訓(xùn)練集包含充足的獨立同分布樣本時,P( c )可通過各類樣本出現(xiàn)的頻率來進行估計。)

樸素貝葉斯+拉普拉斯修正實現(xiàn)代碼:

"""
    利用打網(wǎng)球數(shù)據(jù)集PlayTenis構(gòu)建決策樹,該數(shù)據(jù)集的特性如下:
    屬性包括天氣(outlook)、溫度(temperature)、濕度(humidity)、是否有風(windy),樣本個數(shù)為14。
    標簽為今天是否去打網(wǎng)球(play)。
    具體數(shù)據(jù)如下:
    NO. Outlook temperature humidity   windy  play
    1   sunny      hot       high      FALSE  no
    2   sunny      hot       high      TRUE   no
    3   overcast   hot       high      FALSE  yes
    4   rainy      mild      high      FALSE  yes
    5   rainy      cool      normal    FALSE  yes
    6   rainy      cool      normal    TRUE   no
    7   overcast   cool      normal    TRUE   yes
    8   sunny      mild      high      FALSE  no
    9   sunny      cool      normal    FALSE  yes
    10  rainy      mild      normal    FALSE  yes
"""

# 讀入數(shù)據(jù)函數(shù)  返回正例,反例,總例,數(shù)據(jù)
def readFile():
    f = open('D:\\PythonProject_Class\\test_Data\\PlayTennis.txt', 'r')
    lk = 10
    preData = [[] for i in range(lk)]
    dict_PlusFeatures = {}  # 保存屬性的名稱,并為求信息增益做準備,也就是把初值賦值為0
    dict_NegativeFeatures = {}  # 上一個保存的是正例,這個保存的的是反例
    sum_Features = {}

    for i in range(0, 4):  # 把前幾行的文字描述跳過
        s = f.readline()

    s = f.readline()  # 讀入屬性
    #    NO. Outlook temperature humidity   windy  play
    # strip函數(shù)是去除這行的開頭和結(jié)尾的換行符和空格的
    s = s.strip('\n')
    s = s.strip(' ')
    x = s.split(' ')
    # 初始化字典
    for i in range(1, len(x)):  # 從1開始是要跳過NO.
        if x[i] == 'play':
            dict_PlusFeatures[x[i]] = 0
            dict_NegativeFeatures[x[i]] = 0
            sum_Features[x[i]] = 0
        elif x[i] != '':
            dict_PlusFeatures[x[i]] = {}
            dict_NegativeFeatures[x[i]] = {}
            sum_Features[x[i]] = {}

    ls = [i for i in dict_PlusFeatures.keys()]  # 提取字典中的特征名稱
    ls.pop(len(ls) - 1)  # 去掉play
    # s=set()不能kidls=[s for i in range(len(ls))],這樣列表中的一個集合改變,其他的也會改變
    # kidls = [set() for i in range(len(ls))]  # 保存每個特征的屬性值,使用沒有重復(fù)元素的集合set

    flag = 0  # 用于標記是正例還是反例
    index = 0  # 用于指向 保存所有讀入數(shù)據(jù)的predata 的下標
    for i in range(lk):
        cnt = 0
        s = f.readline()  # 讀入屬性
        s = s.strip('\n')
        s = s.strip(' ')
        x = s.split(' ')
        if x[len(x) - 1] == 'no':  # 首先處理是正例還是反例,同時統(tǒng)計正反例個數(shù)
            flag = -1
            dict_NegativeFeatures['play'] += 1
        elif x[len(x) - 1] == 'yes':
            flag = 1
            dict_PlusFeatures['play'] += 1
        sum_Features['play'] += 1
        for j in range(2, len(x) - 1):  # 跳過編號以及最后的正反例
            if x[j] != '':
                if flag == 1:
                    if x[j] not in dict_PlusFeatures[ls[cnt]].keys():
                        dict_PlusFeatures[ls[cnt]][x[j]] = 1
                    else:
                        dict_PlusFeatures[ls[cnt]][x[j]] += 1
                elif flag == -1:
                    if x[j] not in dict_NegativeFeatures[ls[cnt]].keys():
                        dict_NegativeFeatures[ls[cnt]][x[j]] = 1
                    else:
                        dict_NegativeFeatures[ls[cnt]][x[j]] += 1

                if x[j] not in sum_Features[ls[cnt]].keys():
                    sum_Features[ls[cnt]][x[j]] = 1
                else:
                    sum_Features[ls[cnt]][x[j]] += 1

                # kidls[cnt].add(x[j])
                preData[index].append(x[j])
                cnt += 1
        preData[index].append(x[len(x) - 1])
        index += 1

    for i in dict_PlusFeatures.keys():
        if i != 'play':
            for j in dict_PlusFeatures[i].keys():
                if j not in dict_NegativeFeatures[i].keys():
                    dict_NegativeFeatures[i][j] = 0

    for i in dict_NegativeFeatures.keys():
        if i != 'play':
            for j in dict_NegativeFeatures[i].keys():
                if j not in dict_PlusFeatures[i].keys():
                    dict_PlusFeatures[i][j] = 0

    preData.insert(0, ls)  # 在split中發(fā)現(xiàn)需要表頭
    preData[0].append('play')
    return dict_PlusFeatures, dict_NegativeFeatures, sum_Features, preData


def method(dict_PlusFeatures, dict_NegativeFeatures, sum_Features, preData):
    dict_PlusFeatures['play'] = dict_PlusFeatures['play'] / sum_Features['play']
    dict_NegativeFeatures['play'] = dict_NegativeFeatures['play'] / sum_Features['play']
    for i in dict_PlusFeatures:
        if i != 'play':
            for j in dict_PlusFeatures[i]:
                dict_PlusFeatures[i][j] = (dict_PlusFeatures[i][j] + 1) / (
                            dict_PlusFeatures['play'] + len(dict_PlusFeatures[i]))
    for i in dict_NegativeFeatures:
        if i != 'play':
            for j in dict_NegativeFeatures[i]:
                dict_NegativeFeatures[i][j] = (dict_NegativeFeatures[i][j] + 1) / (
                            dict_NegativeFeatures['play'] + len(dict_NegativeFeatures[i]))

    for i in range(1, len(preData)):
        ls = [dict_PlusFeatures['play'], dict_NegativeFeatures['play']]
        for j in range(len(preData[0]) - 1):
            ls[0] *= dict_PlusFeatures[preData[0][j]][preData[i][j]]
            ls[1] *= dict_NegativeFeatures[preData[0][j]][preData[i][j]]
        key = ls.index(max(ls))
        if key == 0 and preData[i][-1] == 'yes':
            print("數(shù)據(jù){}預(yù)測正確".format(i))
        elif key == 1 and preData[i][-1] == 'no':
            print("數(shù)據(jù){}預(yù)測正確".format(i))
        else:
            print("數(shù)據(jù){}預(yù)測錯誤".format(i))


if __name__ == '__main__':
    dict_PlusFeatures, dict_NegativeFeatures, sum_Features, preData = readFile()
    method(dict_PlusFeatures, dict_NegativeFeatures, sum_Features, preData)


1.什么是樸素貝葉斯分類器?

1.不同于其它分類器,樸素貝葉斯是一種基于概率理論的分類算法;

2.特征之間的條件獨立性假設(shè),顯然這種假設(shè)顯得“粗魯”而不符合實際,這也是名稱中“樸素”的由來。然而事實證明,樸素貝葉斯在有些領(lǐng)域很有用,比如垃圾郵件過濾;

3.總體上來說,樸素貝葉斯原理和實現(xiàn)都比較簡單,學(xué)習和預(yù)測的效率都很高,是一種經(jīng)典而常用的分類算法。

2.樸素貝葉斯的分類準則?

機器學(xué)習期末復(fù)習 貝葉斯分類器

到了這里,關(guān)于機器學(xué)習期末復(fù)習 貝葉斯分類器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 機器學(xué)習之概率學(xué)習樸素貝葉斯(NB)

    機器學(xué)習之概率學(xué)習樸素貝葉斯(NB)

    依據(jù)概率原則進行分類。如天氣預(yù)測概率。 樸素貝葉斯(Naive Bayes, NB)適合場景:為估計一個結(jié)果的概率,從眾多屬性中提取的信息應(yīng)該被同時考慮。 很多算法忽略了弱影響的特征(若有大量弱影響的特征,它們組合在一起的影響可能會很大),但NB算法利用了所有可以獲得

    2024年02月20日
    瀏覽(28)
  • 概率論與機器學(xué)習:從樸素貝葉斯到深度學(xué)習

    概率論和機器學(xué)習是計算機科學(xué)和人工智能領(lǐng)域的基本概念。概率論是用于描述不確定性和隨機性的數(shù)學(xué)框架,而機器學(xué)習則是利用數(shù)據(jù)來訓(xùn)練計算機程序以進行自動化決策的方法。這兩個領(lǐng)域密切相連,因為機器學(xué)習算法通常需要使用概率論來描述和處理數(shù)據(jù)的不確定性。

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

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

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

    2023年04月22日
    瀏覽(27)
  • 機器學(xué)習--樸素貝葉斯分類器

    第1關(guān):條件概率 什么是條件概率 概率指的是某一事件 A 發(fā)生的可能性,表示為 P(A) 。而條件概率指的是某一事件 A 已經(jīng)發(fā)生了條件下,另一事件 B 發(fā)生的可能性,表示為 P(B|A) ,舉個例子: 今天有 25% 的可能性下雨,即 P(下雨)=0.25 ; 今天 75% 的可能性是晴天,即 P(晴天)=0.7

    2024年02月08日
    瀏覽(18)
  • 機器學(xué)習實驗 - 樸素貝葉斯分類器

    機器學(xué)習實驗 - 樸素貝葉斯分類器

    報告內(nèi)容僅供學(xué)習參考,請獨立完成作業(yè)和實驗喔~ 1.1 實驗要求 (1)了解樸素貝葉斯與半樸素貝葉斯的區(qū)別與聯(lián)系,掌握高斯分布、多項式分布和伯努利分布的樸素貝葉斯計算方法。 (2)編程實現(xiàn)樸素貝葉斯分類器,基于多分類數(shù)據(jù)集,使用樸素貝葉斯分類器實現(xiàn)多分類預(yù)

    2024年02月09日
    瀏覽(19)
  • 【機器學(xué)習】【期末復(fù)習】有關(guān)機器學(xué)習的計算題可供期末復(fù)習參考(帶本人手寫解答與思考)

    【機器學(xué)習】【期末復(fù)習】有關(guān)機器學(xué)習的計算題可供期末復(fù)習參考(帶本人手寫解答與思考)

    本文為學(xué)校課程《機器學(xué)習》的期末復(fù)習材料,主要是關(guān)于一些機器學(xué)習模型的計算題的解答過程。 給定一個二維空間的數(shù)據(jù)集: T={(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},請構(gòu)造一個平衡 KD 樹。 拓展: k近鄰-如何構(gòu)造平衡kd樹? 構(gòu)建KD樹 利用 ID3 與 C4.5 算法構(gòu)建決策樹模型,要求寫出

    2024年02月11日
    瀏覽(41)
  • 機器學(xué)習——基于樸素貝葉斯分類算法實現(xiàn)垃圾郵件分類

    機器學(xué)習——基于樸素貝葉斯分類算法實現(xiàn)垃圾郵件分類

    貝葉斯定理: 貝葉斯理論指的是,根據(jù)一個已發(fā)生事件的概率,計算另一個事件的發(fā)生概率。貝葉斯理論從數(shù)學(xué)上的表示可以寫成這樣:? ,在這里A和B都是事件,?P(B)P(B)不為0。 在貝葉斯定理中: 1. P(A) 稱為”先驗概率”,即在B事件發(fā)生之前,我們對A事件概率的一個判斷。如

    2024年02月04日
    瀏覽(29)
  • 機器學(xué)習筆記07---樸素貝葉斯分類器

    機器學(xué)習筆記07---樸素貝葉斯分類器

    貝葉斯決策論是概率框架下實施決策的基本方法。對分類任務(wù)來說,在所有相關(guān)概率都已知的理想情形下,貝葉斯決策論考慮如何基于這些概率和誤判損失來選擇最優(yōu)的類別標記。 ? ? 貝葉斯公式: ?其中,P(c)是類\\\"先驗\\\"概率;P(x|c)是樣本x相對于類標記c的類條件概率,或稱

    2024年02月07日
    瀏覽(28)
  • 【機器學(xué)習】分類算法 - 樸素貝葉斯 MultinomialNB

    「作者主頁」: 士別三日wyx 「作者簡介」: CSDN top100、阿里云博客專家、華為云享專家、網(wǎng)絡(luò)安全領(lǐng)域優(yōu)質(zhì)創(chuàng)作者 「推薦專欄」: 對網(wǎng)絡(luò)安全感興趣的小伙伴可以關(guān)注專欄《網(wǎng)絡(luò)安全入門到精通》 md5() 可以計算字符串的 「MD5散列值」 。 語法 參數(shù) $str :需要計算的字符串

    2024年02月14日
    瀏覽(31)
  • 機器學(xué)習——樸素貝葉斯算法(垃圾郵件分類)

    機器學(xué)習——樸素貝葉斯算法(垃圾郵件分類)

    先驗概率 :指的是 事件發(fā)生前 的預(yù)判概率,可以根據(jù)歷史數(shù)據(jù)/經(jīng)驗估算得到。例如,當我們需要判斷西瓜是不是好瓜的時候,對紋理、根蒂等特征都不了解,只是平常我們買西瓜的時候買到好瓜的概率是70%,那么這個西瓜是好瓜的概率我們也可以認為是70%。這個概率70%就是

    2024年02月03日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包