Scikit-Learn樸素貝葉斯

Scikit-Learn樸素貝葉斯

    • 1、樸素貝葉斯
      • 1.1、貝葉斯分類
      • 1.2、貝葉斯定理
      • 1.3、貝葉斯定理的推導
      • 1.4、樸素貝葉斯及原理
      • 1.5、樸素貝葉斯的優缺點
    • 2、Scikit-Learn樸素貝葉斯
      • 2.1、Sklearn中的貝葉斯分類器
      • 2.2、Scikit-Learn樸素貝葉斯API
      • 2.3、Scikit-Learn樸素貝葉斯實踐(新聞分類與預測)




1、樸素貝葉斯


貝葉斯分類法是基于貝葉斯定理的統計學分類方法。它通過預測一組給定樣本屬于一個特定類的概率來進行分類。貝葉斯分類在機器學習知識結構中的位置如下:

在這里插入圖片描述

1.1、貝葉斯分類


貝葉斯分類的歷史可以追溯到18世紀,當時英國統計學家托馬斯·貝葉斯發展了貝葉斯定理,這個定理為統計決策提供了理論基礎。不過,貝葉斯分類得到廣泛實際應用是在20世紀80年代,當時計算機技術的進步使得大規模數據處理成為可能

在眾多機器學習分類算法中,貝葉斯分類和其他絕大多數分類算法都不同

例如,KNN、邏輯回歸、決策樹等模型都是判別方法,也就是直接學習出輸出Y和特征X之間的關系,即決策函數 Y Y Y= f ( X ) f(X) f(X)或決策函數 Y Y Y= P ( Y ∣ X ) P(Y|X) P(YX)

但是,貝葉斯是生成方法,它直接找出輸出Y和特征X的聯合分布 P ( X , Y ) P(X,Y) P(X,Y),進而通過 P ( Y ∣ X ) P(Y|X) P(YX)= P ( X , Y ) P ( X ) \frac{P(X,Y)}{P(X)} P(X)P(X,Y)?計算得出結果判定

貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。而樸素貝葉斯(Naive Bayes)分類是貝葉斯分類中最簡單,也是常見的一種分類方法

樸素貝葉斯算法的核心思想是通過特征考察標簽概率來預測分類,即對于給定的待分類樣本,求解在此樣本出現的條件下各個類別出現的概率,哪個最大,就認為此待分類樣本屬于哪個類別

例如,基于屬性和概率原則挑選西瓜,根據經驗,敲擊聲清脆說明西瓜還不夠成熟,敲擊聲沉悶說明西瓜成熟度好,更甜更好吃。所以,壞瓜的敲擊聲是清脆的概率更大,好瓜的敲擊聲是沉悶的概率更大。當然這并不絕對——我們千挑萬選的沉悶瓜也可能并沒熟,這就是噪聲了。當然,在實際生活中,除了敲擊聲,我們還有其他可能特征來幫助判斷,例如色澤、根蒂、品類等

樸素貝葉斯把類似敲擊聲這樣的特征概率化,構成一個西瓜的品質向量以及對應的好瓜/壞瓜標簽,訓練出一個標準的基于統計概率的好壞瓜模型,這些模型都是各個特征概率構成的。這樣,在面對未知品質的西瓜時,我們迅速獲取了特征,分別輸入好瓜模型和壞瓜模型,得到兩個概率值。如果壞瓜模型輸出的概率值更大一些,那這個瓜很有可能就是個壞瓜

1.2、貝葉斯定理


貝葉斯定理(Bayes Theorem)也稱貝葉斯公式,其中很重要的概念是先驗概率、后驗概率和條件概率

1.2.1、先驗概率

先驗概率是指事件發生前的預判概率。可以是基于歷史數據的統計,可以由背景常識得出,也可以是人的主觀觀點給出。一般都是單獨事件概率

例如,如果我們對西瓜的色澤、根蒂和紋理等特征一無所知,按照常理來說,好瓜的敲聲是沉悶的概率更大,假設是60%,那么這個概率就被稱為先驗概率

1.2.2、后驗概率

后驗概率是指事件發生后的條件概率。后驗概率是基于先驗概率求得的反向條件概率。概率形式與條件概率相同

例如,我們了解到判斷西瓜是否好瓜的一個指標是紋理。一般來說,紋理清晰的西瓜是好瓜的概率更大,假設是75%,如果把紋理清晰當作一種結果,然后去推測好瓜的概率,那么這個概率就被稱為后驗概率

1.2.3、條件概率

條件概率是指一個事件發生后另一個事件發生的概率。一般的形式為P(B|A),表示事件A已經發生的條件下,事件B發生的概率
P ( B ∣ A ) = P ( A B ) P ( A ) P(B|A)=\frac{P(AB)}{P(A)} P(BA)=P(A)P(AB)?

1.2.4、貝葉斯公式

貝葉斯公式是基于假設的先驗概率與給定假設下觀察到不同樣本數據的概率提供了一種計算后驗概率的方法。樸素貝葉斯模型依托于貝葉斯公式
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)?

貝葉斯公式中:

  • P(A)是事件A的先驗概率,一般都是人主觀給定的。貝葉斯中的先驗概率一般特指它
  • P(B)是事件B的先驗概率,與類別標記無關,也稱標準化常量,通常使用全概率公式計算得到
  • P(B|A)是條件概率,又稱似然概率,一般通過歷史數據統計得到
  • P(A|B)是后驗概率,后驗概率是我們求解的目標

由于P(B)與類別標記無關,因此估計P(A|B)的問題最后就被我們轉化為基于訓練數據集樣本先驗概率P(A)和條件概率P(B|A)的估計問題

貝葉斯公式揭示了事件A在事件B發生條件下的概率與事件B在事件A發生條件下的概率的關系

更多關于條件概率、全概率公式與貝葉斯公式的介紹詳見文章:傳送門

1.3、貝葉斯定理的推導


根據條件概率公式可得
P ( A B ) = P ( B ∣ A ) P ( A ) P(AB)=P(B|A)P(A) P(AB)=P(BA)P(A)

同理可得
P ( B A ) = P ( A ∣ B ) P ( B ) P(BA)=P(A|B)P(B) P(BA)=P(AB)P(B)

設事件A與事件B互相獨立,即 P ( A B ) P(AB) P(AB)= P ( B A ) P(BA) P(BA),則有
P ( B ∣ A ) P ( A ) = P ( A ∣ B ) P ( B ) P(B|A)P(A)=P(A|B)P(B) P(BA)P(A)=P(AB)P(B)

由此可得貝葉斯公式
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)?

1.4、樸素貝葉斯及原理


基于貝葉斯定理的貝葉斯模型是一類簡單常用的分類算法。在假設待分類項的各個屬性相互獨立的前提下,構造出來的分類算法就稱為樸素的,即樸素貝葉斯算法

所謂樸素,就是假定所有輸入事件之間相互獨立。進行這個假設是因為獨立事件間的概率計算更簡單,當然,也更符合我們的實際生產生活

樸素貝葉斯模型的基本思想是,對于給定的待分類項 X { x 1 , x 2 , . . . , x n } X\{{x_1,x_2,...,x_n}\} X{x1?,x2?,...,xn?},求解在此項出現的條件下各個類別 P ( y i ∣ X ) P(y_i|X)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15555.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python——文件操作相關

1. 讀文件方式 第一種 有規律的名稱 第二種 無規律的名稱 2. 文件名稱 用 “{:05d}” 來規范輸出數字所占位數,例如: for i in range(100):gt_file Reference/ image "{:05d}".format(i) .jpgprint(gt_file)輸出: ... Re…

爬山算法的詳細介紹

目錄 🍉概述 🍉 步驟 🍉 優缺點 🍈優點 🍈缺點 🍈應對策略 🍉示例 🍈旅行商問題 🍍步驟 🍍分解代碼 🍎包含頭文件 🍎定義函…

Cortex-M3的SysTick 定時器

目錄 概述 1 SysTick 定時器 1.1 SysTick 定時器功能介紹 1.2 SysTick 定時器功能實現 1.3 SysTick在系統中的作用 2 SysTick應用的實例 2.1 建立異常服務例程 2.2 使能異常 2.3 鬧鐘功能 2.4 重定位向量表 2.5 消滅二次觸發 3 SysTick在FreeRTOS中的應用 3.1 STM…

【代碼】結構體

哈嘍大家好,我是學霸小羊,今天講講結構體。 先看例題: 例1.老師給了小楊一份同學們的考試成績,包括語數英三科,老師讓小明按照總分排序,請你幫幫他吧! 輸入數據: 第1行 學生總人…

在docker中運行SLAM十四講程序

《十四講》的示例程序依賴比較多,而且系統有點舊。可以在容器中運行。 拉取鏡像 docker pull ddhogan/slambook:v0.1這個docker對應的github:HomeLH/slambook2-docker 拉下來之后,假如是Windows系統,需要使用XLaunch用于提供X11…

面試大雜燴之kafka

面試這個領域最近環境不行,所以卷起來流量挺大 關于K8s 其實看我之前的博客,k8s剛有點苗頭的時候我就研究過,然后工作的時候間接接觸 也自己玩過 但是用的不多就忘記了,正苦于不知道寫什么,水一篇 用來面試應該是夠了…

C++ | Leetcode C++題解之第111題二叉樹的最小深度

題目&#xff1a; 題解&#xff1a; class Solution { public:int minDepth(TreeNode *root) {if (root nullptr) {return 0;}queue<pair<TreeNode *, int> > que;que.emplace(root, 1);while (!que.empty()) {TreeNode *node que.front().first;int depth que…

VC編譯sample_onnx_mnist提示無法打開輸入文件cudnn.lib

出現錯誤 LNK1181 無法打開輸入文件“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64\cudnn.lib” 解決辦法&#xff1a;下載cudnn&#xff0c;NVIDIA cuDNN | NVIDIA Developer 拷貝相應的文件到CUDA安裝的目錄下。 VC編譯libtorch提示無法打開輸入文件cu…

huggingface 筆記:PretrainModel

1 from_pretrained 從預訓練模型配置中實例化一個 PyTorch 預訓練模型默認情況下&#xff0c;模型使用 model.eval() 設置為評估模式&#xff08;Dropout 模塊被禁用&#xff09; 要訓練模型&#xff0c;應該首先使用 model.train() 將其設置回訓練模式 1.1 主要參數 pretra…

java 子類繼承父類

為什么需要繼承 我現在要有兩個類一個 一個是小學生&#xff0c;一個是大學生 代碼 小學生 package b; public class encapsulatio{public String name;public int age;public double score;public void setscore (double score) {this.scorescore;}public void testing() {S…

(三)MySQL 索引

歡迎訪問 什么是索引&#xff1f; 提高查詢效率的一種數據結構&#xff0c;索引是數據的目錄 索引的分類 按「數據結構」分類&#xff1a;Btree索引、Hash索引、Full-text索引。按「物理存儲」分類&#xff1a;聚簇索引、二級索引。按「字段特性」分類&#xff1a;主鍵索引…

Spring6 對 集成MyBatis 開發運用(附有詳細的操作步驟)

詳細實現操作步驟 具體實現內容&#xff1a;我們運用 Spring6 和 MyBatis 實現一個轉賬操作(該轉賬操作&#xff0c;進行一個事務上的控制&#xff0c;運用 MyBatis 執行 SQL 語句)。 第一步&#xff1a;準備數據庫表 使用t_act表&#xff08;賬戶表&#xff09; 連接數據庫的…

三個有意思的鏈表面試題的完成

上一篇博客我們已經完成了鏈表的所有內容&#xff0c;那么這一篇博客我們來看一下三個特別有意思的鏈表題目。 **第一個題目如下&#xff1a;**相信不少朋友看到這題目就已經暈了&#xff0c;那就簡單說明下這個題目&#xff0c;題目就是創建一個鏈表&#xff0c;其中每個節點…

深入探索Java中的流式編程:優雅地處理集合數據

Java流式編程&#xff08;Stream API&#xff09;是Java 8引入的一項重要特性&#xff0c;它為處理集合數據提供了一種更為優雅和函數式的方式。通過流式操作&#xff0c;開發者可以以更簡潔、更直觀的方式處理數據&#xff0c;從而提高代碼的可讀性和可維護性。本文將深入探討…

Android14 - 繪制系統 - 概覽

從Android 12開始&#xff0c;Android的繪制系統有結構性變化&#xff0c; 在繪制的生產消費者模式中&#xff0c;新增BLASTBufferQueue&#xff0c;客戶端進程自行進行queue的生產和消費&#xff0c;隨后通過Transation提交到SurfaceFlinger&#xff0c;如此可以使得各進程將緩…

【vue3+elementuiplus】el-select下拉框會自動觸發校驗規則

場景&#xff1a;編輯彈框省份字段下拉框必填&#xff0c;觸發方式change&#xff0c;有值第一次打開不會觸發校驗提示&#xff0c;關閉彈框再次打開觸發必填校驗提示&#xff0c;但是該字段有值 問題的原因是&#xff1a;在關閉彈層事件中&#xff0c;我做了resetfileds&…

SpringBoot + MybatisPlus

SpringBoot MybatisPlus 整合記錄 1. 硬件軟件基本信息2. 相關鏈接3. 通過idea快速生成一個Springboot項目4. 啟動報錯問題解決問題一&#xff1a;Springboot啟動的時候報錯提示 “沒有符合條件的Bean關于Mapper類型”問題二&#xff1a;啟動的時候提示需要一個Bean&#xff0…

電磁仿真--CST網格介紹

1. 簡介 網格會影響仿真的準確性和速度&#xff0c;花時間理解網格化過程是很重要的。 CST 中可用的數值方法包括FIT、TLM、FEM、MoM&#xff0c;使用不同類型的網格&#xff1a; FIT和TLM&#xff1a;六面體 FEM&#xff1a;四面體、平面 MoM&#xff1a;表面 CFD&#…

深入理解與防御跨站腳本攻擊(XSS):從搭建實驗環境到實戰演練的全面教程

跨站腳本攻擊&#xff08;XSS&#xff09;是一種常見的網絡攻擊手段&#xff0c;它允許攻擊者在受害者的瀏覽器中執行惡意腳本。以下是一個XSS攻擊的實操教程&#xff0c;包括搭建實驗環境、編寫測試程序代碼、挖掘和攻擊XSS漏洞的步驟。 搭建實驗環境 1. 安裝DVWA&#xff…

【408真題】2009-16

“接”是針對題目進行必要的分析&#xff0c;比較簡略&#xff1b; “化”是對題目中所涉及到的知識點進行詳細解釋&#xff1b; “發”是對此題型的解題套路總結&#xff0c;并結合歷年真題或者典型例題進行運用。 涉及到的知識全部來源于王道各科教材&#xff08;2025版&…