日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sklearn朴素贝叶斯分类器_朴素贝叶斯原理

發(fā)布時間:2024/10/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sklearn朴素贝叶斯分类器_朴素贝叶斯原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

貝葉斯分類算法是統(tǒng)計學(xué)是一種概率分類方法,樸素貝葉斯分類時貝葉斯分類中最簡單的一種。利用貝葉斯公式根據(jù)某特征的先驗概率計算出其后延概率,然后選擇具有最大后延概率的類作為該特征所屬的類。樸素貝葉斯,稱之為“樸素”,是因為整個形式化過程只做了最原始、最簡單的假設(shè),具體假設(shè)如下:

  • 特征之間相互獨立
  • 每個特征同等重要
  • 1. 概率相關(guān)

    先驗概率: 比如向女生表白成功的概率是20%,記為P(A)=20%

    條件概率:在事件B發(fā)生的情況下,事件A發(fā)生的概率,用P(A|B)表示,具體計算公式如下。如帥的前提下,向女生表白成功的概率為50%,記為P(A|B)=50%。

    同理可得:在事件A發(fā)生的情況下,事件B發(fā)生的概率,用P(B|A)表示,具體計算公式如下:

    聯(lián)合概率:事件A和B同時發(fā)生的概率 。比如,長得帥且向女生表白成功的概率為1%,記為P(A∩B)=1%

    條件概率和聯(lián)合概率之間的關(guān)系,可用下式表示:

    所以就會有:

    全概率: 如果事件A不是一個條件,而是一堆條件,這些條件互斥且能窮盡所有可能 。則對任意一個事件B則有

    2. 貝葉斯準(zhǔn)則

    如果已知P(B|A_i),要求P(A_i|B),應(yīng)用貝葉斯準(zhǔn)則得到:

    要求解

    ,只需要知道 和 。因為對于同一個數(shù)據(jù)集,P(B)是一個常量,可以不參與計算。

    先驗概率

    的計算公式如下:

    其中,

    表示數(shù)據(jù)集D中 類樣本組成的樣本數(shù),|D|表示數(shù)據(jù)集D的樣本數(shù)。

    如果B是多維屬性,那么可以假設(shè)

    對應(yīng)的事件是彼此獨立的,這些值連乘在一起得到 ,具體計算公式如下:

    3. 使用條件概率來分類

    如果給定某個由

    屬性表示的數(shù)據(jù)點,那么該數(shù)據(jù)點來自類別 的概率是多少?數(shù)據(jù)點來自類別 的概率有事多少?可以應(yīng)用貝葉斯準(zhǔn)則得到:

    使用這些定義,可以定義貝葉斯分類準(zhǔn)則:

    • 如果 , 則屬于類別
    • 如果 , 則屬于類別

    使用貝葉斯準(zhǔn)測,可以通過已知的三個概率值來計算未知的概率值。

    4. 嫁還是不嫁?

    通過嫁還是不嫁這個二分類問題,來更加了解樸素貝葉斯。假設(shè)由顏值,性格,是否上進這三個屬性來決定最終嫁還是不嫁。如果現(xiàn)在有一個男生是:帥 & 性格不好 & 不上進,預(yù)測女生嫁還是不嫁該男生呢?

    ? 數(shù)據(jù)集如下:

    由于樸素貝葉斯公式如下:

    換種更清楚的表達如下:

    在這個例子中,就是要求

    和 這兩個概率,選取概率大的來做決策。

    通過樸素貝葉斯公式:

    在這兩個公式里,因為 P(帥,性格不好,不上進)都是一樣的,所以,想要獲取 P(嫁|帥,性格不好,不上進) 和 P(不嫁|帥,性格不好,不上進) 這兩個概率中的最大值,就等價于求P(帥,性格不好,不上進|嫁)P(嫁)和P(帥,性格不好,不上進|不嫁)P(不嫁)中的最大值。只需計算出P(帥,性格不好,不上進|嫁)、P(帥,性格不好,不上進|不嫁)、P(嫁)、P(不嫁)這四個概率,即可求出P(嫁|帥,性格不好,不上進)和P(不嫁|帥,性格不好,不上進)這個兩個概率中最大概率對應(yīng)的類別。

    由于

    則有

    由于

    所以, 根據(jù)樸素貝葉斯算法可以給這個女生答案,是不嫁

    5. 樸素貝葉斯種類

    在sklearn中,樸素貝葉斯種類有三種,分別是GaussianNB、MultinomialNB和BernoulliNB。

    5.1 高斯樸素貝葉斯(GaussianNB)

    GaussianNB是先驗為高斯分布(正態(tài)分布)的樸素貝葉斯,假設(shè)每個標(biāo)簽的數(shù)據(jù)都服從高斯分布(正態(tài)分布)。正態(tài)分布的概率密度函數(shù)計算公式如下:

    其中,

    為Y的第k類類別。 和 為第k類樣本在第i個屬性上的取值的均值和方差。

    sklearn中的GaussianNB實現(xiàn)

    下面采用sklearn中的鸞尾花數(shù)據(jù)集,由于數(shù)據(jù)集都是連續(xù)屬性,所以采用GaussianNB來進行實現(xiàn),看下預(yù)測情況。

    # 導(dǎo)入包

    運行結(jié)果如下

    測試集準(zhǔn)確率為: 0.9736842105263158

    可以看到,測試集準(zhǔn)確率97%,準(zhǔn)確率挺高。

    5.2 多項式樸素貝葉斯(MultinomialNB)

    多項式樸素貝葉斯是先驗為多項式分布的樸素貝葉斯。 它假設(shè)特征是由一個簡單多項式分布生成的。多項分布可以描述各種類型樣本出現(xiàn)次數(shù)的概率,因此多項式樸素貝葉斯非常適合用于描述出現(xiàn)次數(shù)的特征。該模型常用于文本分類,特征表示的是次數(shù),例如某個詞語的出現(xiàn)次數(shù)。

    多項式分布

    多項式分布來源于統(tǒng)計學(xué)中的多項式實驗,這種實驗可以解釋為:實驗包括n次重復(fù)試驗,每次試驗都有不同的可能結(jié)果。在任何給定的試驗中,特定結(jié)果發(fā)生的概率是不變的。

    多項式分布公式:

    其中,

    表示c類別下第i個屬性上取值為 的條件概率。 是c類別下第i個屬性上取值為 的樣本數(shù), 是c類的樣本數(shù)。 表示第i個屬性可能的取值數(shù)。λ被稱為平滑系數(shù),令λ>0來防止訓(xùn)練數(shù)據(jù)中出現(xiàn)過的一些詞匯沒有出現(xiàn)在測試集中導(dǎo)致的0概率。如果λ=1,則這個平滑叫做拉普拉斯平滑,λ<1,叫做利德斯通平滑。

    sklearn中的MultinomialNB實現(xiàn)

    多項式所涉及的特征往往是次數(shù),頻率,計數(shù)這樣的概念,這些概念都是離散的正整數(shù),因此,sklearn中的MultinomialNB不接受負值的輸入。

    MultinomialNB包含如下的參數(shù)和屬性:

    class

    其中

    • alpha : 浮點數(shù), 可不填 【默認(rèn)為1.0】

    平滑系數(shù)λ,如果為0,則表示完全沒有平滑選項。需注意,平滑相當(dāng)于人為給概率加上一些噪音,因此λ設(shè)置得越大,精確性會越低(雖然影響不是非常大)

    • fit_prior : 布爾值, 可不填【默認(rèn)為True】

    是否學(xué)習(xí)先驗概率P(Y=c)。如果為False,則所有的樣本類別輸出都有相同的類別先驗概率。即認(rèn)為每個標(biāo)簽類出現(xiàn)的概率是1/總類別數(shù)

    • class_prior:形似數(shù)組的結(jié)構(gòu),結(jié)構(gòu)為(n_classes,),可不填【默認(rèn)為None】 表示類的先驗概率P(Y=c)。如果沒有給出具體的先驗概率則自動根據(jù)數(shù)據(jù)來進行計算。

    總結(jié)如下:

    其中,k為總類別數(shù),m為訓(xùn)練集樣本總數(shù)量,

    為輸出為第k個類別的訓(xùn)練集樣本數(shù)。

    實例

    建一個簡單多項式樸素貝葉斯(讓所有的參數(shù)保持默認(rèn))的例子。

    # 導(dǎo)?入需要的模塊和庫

    運行結(jié)果如下:

    5.3 伯努利樸素貝葉斯(BernoulliNB)

    BernoulliNB就是先驗為伯努利分布的樸素貝葉斯。假設(shè)特征的先驗概率為二元伯努利分布,在文本分類中 ,就是一個特征有沒有在一個文檔中出現(xiàn)。

    伯努利分布公式如下:

    此時,

    只能取0和1。

    由于

    ,所以上式可變?yōu)?p>

    是c類別下第i個屬性上取值為1的樣本數(shù), 是c類的樣本數(shù)。2表示第i個屬性可能的取值數(shù),這里只有0和1兩種取值,所以是2。

    sklearn中的BernoulliNB實現(xiàn)

    類BernoulliNB包含如下的參數(shù)和屬性:

    class

    其中

    binarize:將數(shù)據(jù)特征二值化的閾值,大于binarize的值處理為1 ,小于等于binarize的值處理為0;

    其他參數(shù)說明見5.2中多項式的參數(shù)說明;

    實例

    先來建一個簡單伯努利樸素貝葉斯的例子。

    import

    打印相關(guān)屬性語句如下:

    # class_log_prior_:類先驗概率對數(shù)值

    運行結(jié)果如下

    小結(jié)

    • 如果樣本特征的分布大部分是連續(xù)值(如人的身高,體重等),建議使用GaussianNB會比較好;
    • 如果樣本特征的分布大部分是多元離散值(如在文檔分類中特征是單詞出現(xiàn)次數(shù)),建議使用MultinomialNB比較好;
    • 如果樣本特征是二元離散值(如在文檔分類中特征是單詞是否出現(xiàn)) ,建議使用BernoulliNB比較好。

    樸素貝葉斯算法優(yōu)缺點

    優(yōu)點: 在屬性相關(guān)性較小時效果較好,可以處理多類別問題;算法邏輯簡單,易于實現(xiàn) ;

    缺點: 在屬性個數(shù)比較多或者屬性之間相關(guān)性較大時,分類效果不好;

    總結(jié)

    以上是生活随笔為你收集整理的sklearn朴素贝叶斯分类器_朴素贝叶斯原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。