樸素貝葉斯演算法的工作原理主要是概率論和數理統計
通過屬性對分類的影響程度,所展現不同的結果
其結果為: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中各個屬性的影響程度
將y的0和1比喻晴天和下雨,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]))
則可以通過樸素貝葉斯演算法推導出下雨的概率
通過內建資料模組load_breast_cancer##腫瘤良性惡性
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))
推測出患者是否患有癌症。
資料格式使用bunch物件。
樸素貝葉斯演算法
首先樸素貝葉斯分類演算法利用貝葉斯定理來 乙個未知類別的樣本屬於各個類別的可能性,選擇可能性最大的乙個類別作為該樣本的最終類別。對於計算而言,需要記住乙個公式。p c x p x c p c p x 類似於概率論條件概率公式。其中x代表含義為最終類別,例如 yes?no。c為屬性。使用樸素貝葉斯演算...
樸素貝葉斯演算法
計算貝葉斯定理中每乙個組成部分的概率,我們必須構造乙個頻率表 因此,如果電子郵件含有單詞viagra,那麼該電子郵件是垃圾郵件的概率為80 所以,任何含有單詞viagra的訊息都需要被過濾掉。當有額外更多的特徵時,此概念的使用 利用貝葉斯公式,我們可得到如下概率 分母可以先忽略它,垃圾郵件的總似然為...
樸素貝葉斯演算法
對於樸素貝葉斯演算法,我的理解就是 使用已知的概率和結果,來 事情的條件。舉乙個例子就是,我們通過統計得到了不同年齡段喜歡吃冰激凌的比例,比如各採訪了500個青少年 中年人和老年人,得到有450個青少年 300個中年人和50個老年人喜歡吃冰激凌。我們還通過統計,知道了在社會中假設小孩子佔20 中年人...