樸素貝葉斯演算法python

2021-09-24 16:40:01 字數 1840 閱讀 3446

樸素貝葉斯演算法的工作原理主要是概率論和數理統計

通過屬性對分類的影響程度,所展現不同的結果

import numpy as np

x= np.array([

[0,1,0,1],

[1,1,1,0],

[0,1,1,0],

[0,0,0,1],

[0,1,1,0],

[0,1,0,1],

[1,0,0,1]]

)y= np.array([0,1,1,0,1,0,0])

counts = {}

for label in np.unique(y):

counts[label] = x[y == label].sum(axis = 0)

print("feature count:\n{}".format(counts))

其結果為:

0:[1,2,0,4],

1:[1,3,3,0]

對y分類為0,1

求出每個分類中相應x中的各個屬性為1的和

這就可以求出當y為1和0時,x中各個屬性的影響程度

from sklearn.model_selection import train_test_split

from sklearn.*****_bayes import bernoullinb

from sklearn.*****_bayes import gaussiannb

clf = bernoullinb()

clf.fit(x,y)

next_day = [[0,0,1,0]]

pre = clf.predict(next_day)

if pre == [1]:

print('下雨了')

else:

print('放心,是晴天')

print('下雨概率:{}'.format(clf.predict_proba(next_day)[0][1]))

print('不下雨概率:{}\n'.format(clf.predict_proba(next_day)[0][0]))

將y的0和1比喻晴天和下雨,x的屬性表示影響天氣的因素

則可以通過樸素貝葉斯演算法推導出下雨的概率

##腫瘤良性惡性

from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer()

print(cancer.keys())

x,y = cancer['data'],cancer['target']

gnb = gaussiannb()

x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=8)

gnb.fit(x_train,y_train)

print('得分:'.format(gnb.score(x_test,y_test)))

pre = gnb.predict([x[123]])

print('分類為:{}'.format(cancer['target_names'][pre][0]))

print('實際分類為:{}'.format(cancer['target_names'][y[123]]))

p = gnb.predict_proba([x[123]])[0][1]*100

print('良心腫瘤概率:%{}'.format(p))

通過內建資料模組load_breast_cancer

推測出患者是否患有癌症。

資料格式使用bunch物件。

樸素貝葉斯演算法

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

樸素貝葉斯演算法

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

樸素貝葉斯演算法

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