資料探勘之樸素貝葉斯演算法

2022-08-13 10:12:14 字數 1798 閱讀 9147

/*

樸素貝葉斯演算法思想: 舉個例子,假如某天是否要出去打網球,有兩種選擇:是和否,即最後分成兩個類別。但是受3個因素的影響,分別是天氣、溫度和是否有風。天氣有3個值:晴、多雲和有雨。溫度有3個值:高,正常和低。是否有風有兩個值:是和否。假如樣本a是,樣本b是,還有其他的樣本,可以得到樣本的某些先驗概率,即已經知道了是否打網球的結果某因素出現的概率。然後利用到貝葉斯公式的一些轉換(數學的知識不在這裡推),計算後驗概率,即知道因素的情況,估計打網球與不打網球各自的概率。

*/#include#include

#include

#include

#include

using

namespace

std;

vector

split(const

string& src,const

string& delimiter); /*

*分離字串*

*/void rejudge(); /*

*重新判斷原輸入資料的類別*

*/vector

string> > vect; /*

*二維容器*

*/map

category; /*

*存放類別*

*/map

pro_map; /*

*各種概率的map容器*

*/int

main()

else

string

temp_string;

vector

::size_type temp_size1=vect.size()-1; /*

*總行數*

*/vector

::size_type temp_size2=vect[0].size();/*

*總列數*

*/for(int i=0;i1;i++)

for(st_x=1;st_x1;st_x++)

else

temp_string.erase();}}

string

::size_type st;

cout

<<"

統計過程如下:

"

}cout

<<"

計算概率過程如下:

"

cout

}rejudge();

}cout

}vector

split(const

string& src,const

string&delimiter)

if(last_st!=src.size())

return

vect;

}void

rejudge()

}temp_map[it->first]=temp_pro;

}string

temp_string2;

temp_pro=0

; cout

<<"

後驗概率:";

for(map::iterator it2=temp_map.begin();it2!=temp_map.end();it2++)

}cout

<<"

歸類:"

<0][vect[0].size()-1]<<"="

}}

樸素貝葉斯演算法

首先樸素貝葉斯分類演算法利用貝葉斯定理來 乙個未知類別的樣本屬於各個類別的可能性,選擇可能性最大的乙個類別作為該樣本的最終類別。對於計算而言,需要記住乙個公式。p c x p x c p c p x 類似於概率論條件概率公式。其中x代表含義為最終類別,例如 yes?no。c為屬性。使用樸素貝葉斯演算...

樸素貝葉斯演算法

計算貝葉斯定理中每乙個組成部分的概率,我們必須構造乙個頻率表 因此,如果電子郵件含有單詞viagra,那麼該電子郵件是垃圾郵件的概率為80 所以,任何含有單詞viagra的訊息都需要被過濾掉。當有額外更多的特徵時,此概念的使用 利用貝葉斯公式,我們可得到如下概率 分母可以先忽略它,垃圾郵件的總似然為...

樸素貝葉斯演算法

對於樸素貝葉斯演算法,我的理解就是 使用已知的概率和結果,來 事情的條件。舉乙個例子就是,我們通過統計得到了不同年齡段喜歡吃冰激凌的比例,比如各採訪了500個青少年 中年人和老年人,得到有450個青少年 300個中年人和50個老年人喜歡吃冰激凌。我們還通過統計,知道了在社會中假設小孩子佔20 中年人...