(機器學習)樸素貝葉斯及其sklearn應用

2021-10-08 13:54:21 字數 3112 閱讀 8036

樸素貝葉斯的常見應用場景:

1、文字分類

2、影象識別

貝葉斯決策理論核心思想:

d是乙個資料集,(x,

y)

(x,y)

(x,y

)是d的乙個資料點,p1(

x,y)

p_1(x,y)

p1​(x,

y)表示( x,

y)

(x,y)

(x,y

)屬於類別1的概率,p2(

x,y)

p_2(x,y)

p2​(x,

y)表示( x,

y)

(x,y)

(x,y

)屬於類別2的概率,若:

1、p 1(

x,y)

>p2

(x,y

)p_1(x,y) > p_2(x,y)

p1​(x,

y)>p2

​(x,

y),則判定(x,

y)

(x,y)

(x,y

)屬於類別1;

2、p 2(

x,y)

>p1

(x,y

)p_2(x,y) > p_1(x,y)

p2​(x,

y)>p1

​(x,

y),則判定(x,

y)

(x,y)

(x,y

)屬於類別2;

貝葉斯準則:

p (x

∣y)=

p(y∣

x)∗p

(x)p

(y

)p(x|y) = \frac

p(x∣y)

=p(y

)p(y

∣x)∗

p(x)

​sklearn庫中multinomialnb的應用例項

from sklearn.datasets import fetch_20newsgroups #資料集

import tarfile #壓縮包處理

from sklearn.model_selection import train_test_split #分割函式:將源資料分割為測試集、訓練集 --from sklearn.cross_validation import train_test_split

from sklearn.feature_extraction.text import countvectorizer #文字特徵向量轉化模組 --

from sklearn.*****_bayes import multinomialnb #樸素貝葉斯

from sklearn.metrics import classification_report #模型評估模組

'''匯入資料

'''#解決辦法:#

#…………………第二步:將20new-sbydate.tar.gz檔案黏貼到python預設資料夾中

#…………………第三步:解壓:tarfile.open('20new-sbydate.tar.gz','r:gz').extractall()

#…………………第四步:再執行:news = fetch_20newsgroups(subset = 'all')

news = fetch_20newsgroups(subset =

'all'

)# tarfile.open('20new-sbydate.tar.gz','r:gz').extractall() #開啟壓縮包20new-sbydate.tar.gz,extractall:解壓包內所有檔案

'''分割訓練集和測試集

'''xtrain,xtest,ytrain,ytest = train_test_split(news.data,news.target,test_size=

0.25

,random_state=33)

# print(len(news.data[0]),'*****=\n',news.data[0],'*****=\n',xtrain[0],'*****=\n',ytrain[0])

'''使用貝葉斯分類對新聞進行**

'''vec = countvectorizer(

)#將文字資料集進行特徵向量化

xtrain = vec.fit_transform(xtrain)

xtest = vec.transform(xtest)

mnb = multinomialnb(

).fit(xtrain,ytrain)

#使用樸素貝葉斯模型對訓練集進行訓練

ypredict = mnb.predict(xtest)

#對測試集進行**

# print(ypredict[0])

print

(set

(ypredict)

)'''

模型評估

'''predict_score = mnb.score(xtest,ytest)

print

('準確率:%.2f'

%(predict_score*

100)

,'%'

)'''

分類指標的文字報告:

1、分類標籤名(target_names)

2、precision:精確率,**為正的樣本中,**正確的佔比;例:類別alt.atheism的精確率 = **為alt.atheism的樣本中,實際也為alt.atheism的樣本數佔比

3、recall:召回率,實際為正的樣本中,**正確的佔比;例:類別alt.atheism的召回率 = 實際為alt.atheism的樣本中被正確**為alt.atheism的樣本數佔比

4、f1-score:精確率和召回率的調和平均數,2*precision*recall/(precision+recall)

5、support:測試集中實際樣本數,例:測試集中有201樣本的實際類別為alt.atheism

'''print

('其他指標:'

,classification_report(ytest,ypredict,target_names = news.target_names)

)

機器學習 樸素貝葉斯

樸素貝葉斯原理 1.貝葉斯公式 2.樸素貝葉斯的模型 3.後驗概率最大化的含義 4.樸素貝葉斯的引數估計 4.1.特徵是離散值 假設符合多項式分布 4.2.特徵是稀疏的離散值 假設符合伯努利分布 4.3.特徵是連續值 假設符合正態分佈 5.樸素貝葉斯演算法過程 6.樸素貝葉斯演算法小結 scikit...

機器學習 樸素貝葉斯 例子

一 學習樸素貝葉斯之前先了解一下 條件概率下 貝葉斯公式 1 舉例是兩個工具機m1和m2 用例生產扳手機器 生產扳手 個數 mach1 30mach2 20不合格佔1 defective 機器 次品分布比例 mach1 50 mach2 50 2 問題 mach2生產的不合格產品的概率是多少?p m...

機器學習之樸素貝葉斯

寫在前面 本文寫自初學時,若後續學習過程中有新的理解,將不定期進行更新 若文中敘述有誤,望不吝賜教,也將及時修改 貝葉斯分類是一類分類演算法的總稱,這類演算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。而樸素樸素貝葉斯分類是貝葉斯分類中最簡單,也是常見的一種分類方法。在理解樸素貝葉斯之前,需要對兩個數...