C#與人工智慧(第4講)創建樸素貝葉斯分類器

2021-01-11 老紀講人工智慧

今天,我給大家帶來C#與人工智慧的第4講——創建樸素貝葉斯分類器。#人工智慧#本文先實現一個簡單的貝葉斯分類器,輸入二進位,判斷0-7。後續文章會講述它的高級應用——貝葉斯推理機。

C#與人工智慧(第3講)創建神經網絡

C#與人工智慧(第2講)創建WinForm程序

C#與人工智慧(第1講)安裝C#編程環境

託馬斯·貝葉斯是18世紀英國數學家,概率論、貝葉斯統計的創立者。

貝葉斯方法基於貝葉斯原理,對樣本數據集進行分類。它綜合了先驗概率、後驗概率,避免僅用先驗概率產生的主觀偏見。

樸素貝葉斯分類器

首先,按第1講所述,安裝Visual Studio 2019編碼工具。然後,按第2講所述,創建一個Windows Form應用程式。然後,按第3講所述,下載安裝Accord插件。

準備好工具後,編寫如下代碼:

using Accord.MachineLearning.Bayes;

using Accord.Statistics.Filters;

using System;

using System.Data;

using System.Windows.Forms;

namespace WindowsFormsApp3 {

public partial class Form1 : Form {

public Form1() {

InitializeComponent();

}

private void Add(DataTable data, string 參數1, string 參數2, string 參數3, string 結果) {

// 新增一條記錄

DataRow dr = data.NewRow();

// 向欄位賦值

dr["參數1"] = 參數1;

dr["參數2"] = 參數2;

dr["參數3"] = 參數3;

dr["結果"] = 結果;

// 把新記錄加到表裡

data.Rows.Add(dr);

}

private void button1_Click(object sender, EventArgs e) {

// 創建一個DataTable實例。它就是一張數據表,但不用接入任何資料庫,直接在內存裡使用!

DataTable data = new DataTable("二進位運算");

// 創建 參數1 欄位,字符串類型

data.Columns.Add("參數1", typeof(string));

// 創建 參數2 欄位,字符串類型

data.Columns.Add("參數2", typeof(string));

// 創建 參數3 欄位,字符串類型

data.Columns.Add("參數3", typeof(string));

// 創建 結果 欄位,字符串類型

data.Columns.Add("結果", typeof(string));

// 通過Add()方法,插入8條記錄,對應著二進位0-7,完成樣本庫的構建

Add(data, "0", "0", "0", "0");

Add(data, "0", "0", "1", "1");

Add(data, "0", "1", "0", "2");

Add(data, "0", "1", "1", "3");

Add(data, "1", "0", "0", "4");

Add(data, "1", "0", "1", "5");

Add(data, "1", "1", "0", "6");

Add(data, "1", "1", "1", "7");

// 對DataTable樣本庫進行編碼

Codification codebook = new Codification(data, "參數1", "參數2", "參數3", "結果");

DataTable symbols = codebook.Apply(data);

int[][] inputData = new int[8][]; // 輸入的樣本

for (int r = 0; r < symbols.Rows.Count; r++) {

DataRow dr = symbols.Rows[r];

inputData[r] = new int[3];

inputData[r][0] = Convert.ToInt32(dr[0]);

inputData[r][1] = Convert.ToInt32(dr[1]);

inputData[r][2] = Convert.ToInt32(dr[2]);

}

int[] outputData = new int[8]; // 對應的輸出

for (int r = 0; r < symbols.Rows.Count; r++) {

DataRow dr = symbols.Rows[r];

outputData[r] = Convert.ToInt32(dr[3]);

}

// 創建樸素貝葉斯分類器

NaiveBayesLearning learner = new NaiveBayesLearning();

// 對樣本庫進行學習

NaiveBayes nb = learner.Learn(inputData, outputData);

// 創建一個新樣本(假設它是不在樣本庫裡的陌生樣本)

int[] instance = codebook.Translate("1", "1", "0");

int c1 = nb.Decide(instance);

// 返回分類結果(result=6)

string result = codebook.Translate("結果", c1);

// 查看每種可能性的概率值

double[] probs = nb.Probabilities(instance);

MessageBox.Show(result);

}

}

}

樸素貝葉斯的分類結果

如上圖所示,probs數組列出樣本庫裡每個樣本的概率,對於輸入的1、1、0來講,分類器認為概率最大的結果是6。

您可以刪除「Add(data, "1", "1", "0", "6");」那行代碼(注意要把inputData、outputData的數組長度從8改成7)。然後,再運行程序,分類器返回7,此時最接近的結論是1、1、1。

如果喜歡,請關注我,或長按「點讚」按鈕,後續會有更多編程知識分享給大家。

相關焦點

  • python實現高斯樸素貝葉斯分類器
    python實現高斯樸素貝葉斯分類器    在這篇文章中,我們將使用我最喜歡的機器學習庫scikit-learn在Python中實現樸素貝葉斯分類器。接下來,我們將使用經過訓練的樸素貝葉斯(監督分類法)模型來預測人口收入。
  • 樸素貝葉斯與文本分類
    樸素貝葉斯 (Naive Bayesian algorithm) 是一種基於概率統計的分類方法,主要用到了貝葉斯定理和特徵條件獨立性假設。樸素貝葉斯具有悠久的歷史,其算法邏輯比較簡單,有健壯的性能,通常可以用於文本分類、信用評估等方面。
  • 「NLP」經典分類模型樸素貝葉斯解讀
    貝葉斯分類器在早期的自然語言處理任務中有著較多實際的應用,例如大部分的垃圾郵件處理都是用的貝葉斯分類器。貝葉斯分類器的理論對於理解後續的NLP模型有很大的進益,感興趣的小夥伴一定要好好看看,本文會詳細的講述貝葉斯分類器的原理。本文會是我們NLP基礎系列最後一篇機器學習模型的講解,後面會進入深度學習相關的內容。
  • 基於貝葉斯定理的算法——樸素貝葉斯分類
    不過今天我們介紹的樸素貝葉斯分類器通過獨立假設簡化了概率的計算,節省了內存,可以很好地用於數據量大的情況。下面我們首先來了解這一算法的數理背景——貝葉斯定理。這一算法是由我們在概率論中學到的貝葉斯定理延伸出來的。我們知道貝葉斯公式為:其中,
  • 樸素貝葉斯分類器詳解及中文文本輿情分析(附代碼實踐)
    樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假設的分類方法,它通過特徵計算分類的概率,選取概率大的情況,是基於概率論的一種機器學習分類(監督學習)方法,被廣泛應用於情感分類領域的分類器。
  • C#與人工智慧(第3講)創建神經網絡
    通過前面兩講,大家已經學會安裝Visual Studio 2019編碼工具、創建WinForm應用程式。C#與人工智慧(第1講)安裝C#編程環境C#與人工智慧(第2講)創建WinForm程序神經網絡從本講開始,正式講述人工智慧編程。#人工智慧#筆者不想講述太多理論,而是側重於實際應用開發。對理論感興趣的讀者,建議去參考書籍《神經網絡與機器學習》,這本書非常經典。
  • 科普丨樸素貝葉斯了解一下
    您可能聽說過文檔檢索系統、基於文本的情感分類器等任務是使用樸素貝葉斯算法的最佳應用場景。但為什麼?這是因為我們從文檔中提取的大多數單詞是相互獨立的。而且,樸素貝葉斯的工作很快,即使有很多功能和基於文本的分類器,你可以輕鬆獲得超過40000–50000個獨特的單詞,這意味著40k-50k的特徵!樸素貝葉斯如同閃電般快速的原因是它只計算概率,計算成本低廉。
  • 樸素貝葉斯實戰篇之新浪新聞分類
    這樣,我們的樸素貝葉斯分類器就改進完畢了。三、樸素貝葉斯之過濾垃圾郵件在上篇文章那個簡單的例子中,我們引入了字符串列表。使用樸素貝葉斯解決一些現實生活中的問題時,需要先從文本內容得到字符串列表,然後生成詞向量。下面這個例子中,我們將了解樸素貝葉斯的一個最著名的應用:電子郵件垃圾過濾。
  • 樸素貝葉斯(Naive Bayes)和校正曲線(Calibration Curve)
    算法回顧圖片來源:medium.com貝葉斯分類算法屬於有監督機器學習(Supervised Learning)。貝葉斯分類器是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。其中樸素貝葉斯分分類是貝葉斯分類中最簡單的,也是最常見的一種分類方法。樸素貝葉斯分類算法的核心如下公式:P(A):它是先驗(Prior Probability),是A發生的概率。P(B): 是邊際可能性(Marginal Likelihood):是B發生的概率。
  • 為什麼樸素貝葉斯定理會被叫做樸素的?
    樸素貝葉斯算法是一種基於著名貝葉斯定理的分類算法。那麼讓我們先了解一下Bayes定理是怎麼說的,並為樸素貝葉斯算法定理建立自己的理解,它是如何工作的,它為什麼被稱作樸素的?貝葉斯定理在深入研究貝葉斯定理之前,我們需要了解一些術語-獨立事件和從屬事件邊際概率聯合概率條件概率獨立事件和從屬事件考慮兩個事件A和B。
  • 解讀實踐中最廣泛應用的分類模型:樸素貝葉斯算法
    貝葉斯模型在機器學習以及人工智慧中都有出現,cherry 分類器使用了樸素貝葉斯模型算法,經過簡單的優化,使用 1000 個訓練數據就能得到 97.5% 的準確率。雖然現在主流的框架都帶有樸素貝葉斯模型算法,大多數開發者只需要直接調用 api 就能使用。但是在實際業務中,面對不同的數據集,必須了解算法的原理,實現以及懂得對結果進行分析,才能達到高準確率。
  • 樸素貝葉斯詳解及中文輿情分析(附代碼實踐)
    樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假設的分類方法,它通過特徵計算分類的概率,選取概率大的情況,是基於概率論的一種機器學習分類(監督學習)方法,被廣泛應用於情感分類領域的分類器。
  • 樸素貝葉斯算法及其應用
    在這篇文章中,我們將嘗試以簡單的方式理解什麼是樸素貝葉斯,它是如何工作的以及我們如何應用樸素貝葉斯分類器將文本或評論分類為「肯定」或「否定」,我們將通過電影評論案例進行研究。什麼是樸素貝葉斯?貝葉斯定理是由Reverend Bayes開發的最早的概率推理算法之一(他過去常常嘗試推斷上帝的存在)並且對於某些用例仍然表現得非常好。
  • 樸素貝葉斯算法及應用案例
    作者:陳千鶴 來源:人工智慧學習圈本篇主要介紹樸素貝葉斯算法及應用案例。以Tatinic數據集為例進行應用,同時介紹數據處理,數據集的劃分,算法效果評估等內容。一、簡介樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法 。
  • 基於人工智慧的貝葉斯分類算法
    基於人工智慧的貝葉斯分類算法  貝爾斯算法的應用:  1.百度實時路況  2.騰訊新聞分類  3.數據清洗:數據補全  4.數據歸類  5.垃圾郵箱  什麼是貝爾斯算法  貝爾斯算法就是貝葉斯所研究的逆向概率: 給出一個條件
  • 機器學習算法之樸素貝葉斯
    假設抽出紅球的概率為B選中容器A的概率為A則有:P(B) = 8/20,P(A) = 1/2,P(B|A) = 7/10按照公式,則有:P(A|B) = (7/10)*(1/2) / (8/20) = 0.875故得出結論:這個球來自容器A的概率是0.875三、樸素貝葉斯貝葉斯公式: P(
  • 樸素貝葉斯:幫助AI產品經理「小步快跑,快速迭代」
    貝葉斯定理相信不少人都接觸過,這個看似只屬於數學領域的定理,在AI產品經理看來有怎樣的魅力呢?我們常常遇到這樣的場景。與友人聊天時,一開始可能不知道他要說什麼,但是他說了一句話之後,你就能猜到接下來他要講什麼內容。友人給的信息越多,我們越能夠推斷出他想表達的含義,這也是貝葉斯定理所闡述的思考方式。
  • 【華泰金工林曉明團隊】金工:人工智慧選股之樸素貝葉斯模型
    本報告對樸素貝葉斯模型及線性判別分析、二次判別分析進行系統測試  「生成模型」是機器學習中監督學習方法的一類。本文中,我們從樸素貝葉斯算法入手,分析比較了幾種常見的生成模型(包括線性判別分析和二次判別分析)應用於多因子選股的異同,希望對本領域的投資者產生有實用意義的參考價值。  樸素貝葉斯模型構建細節:月頻滾動訓練,結合基於時間序列的交叉驗證  樸素貝葉斯模型的構建包括特徵和標籤提取、特徵預處理、訓練集合成和滾動訓練等步驟。
  • 人工智慧研學社 · 入門組 | 《終極算法》研習第二期
    The Master Algorithm Program 是研學社現下推出的一個入門級項目,基於 Pedro Domingos 所著的 The Master Algorithm 的閱讀和討論,旨在聚集起以此書入門機器學習的初學者,鼓勵自由提問和開放式討論,定期匯總問題並整理出相應的詮釋,以創建一個有良好氛圍的學習社區。
  • 模式識別與機器學習(教學大綱)|向量|貝葉斯|算法|神經網絡_網易訂閱
    以貝葉斯學習思想貫穿始終,並適時與其他重要知識點(如支持向量機、深度學習)等進行交叉和關聯,便於讀者在形成良好知識體系的同時保持對整個領域知識的把握。  全書共14章和4個附錄,循序漸進地剖析模式識別與機器學習領域。