step1: 庫函式匯入
import warnings
warnings.filterwarnings(
'ignore'
)#忽略了警告錯誤的輸出
import numpy as np
# 載入鶯尾花資料集
from sklearn import datasets
print
(sklearn.__version__)
# 匯入高斯樸素貝葉斯分類器
#一共有3個樸素貝葉斯的分類演算法:
#gaussiannb,先驗為高斯分布的樸素貝葉斯
#multinomialnb,先驗為多項式分布的樸素貝葉斯
#bernoullinb,先驗為伯努利分布的樸素貝葉斯
from sklearn.*****_bayes import gaussiannb
#train_test_split是sklearn中用於劃分資料集,即將原始資料集劃分成測試集和訓練集兩部分的函式
from sklearn.model_selection import train_test_split
#x_train,x_test,y_train,y_test = train_test_split(x,y,train_size = 0.75, random_state=14, stratify=y)
#train_size:訓練集大小
#test_size:測試集大小,預設值是0.25
#random_state:可以理解為隨機數種子,主要是為了復現結果而設定
#shuffle:表示是否打亂資料位置,true或者false,預設是true
#stratify:表示是否按照樣本比例(不同類別的比例)來劃分資料集
0.19.2
step2: 資料匯入&分析
x, y = datasets.load_iris(return_x_y=
true
)x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=
0.2, random_state=
0)
我們需要計算兩個概率分別是:條件概率:p(x
(i)=
x(i)
∣y=c
k)
p(x^=x^|y=c_k)
p(x(i)
=x(i
)∣y=
ck)
和類目c
kc_k
ck的先驗概率:p(y
=ck)
p(y=c_k)
p(y=ck
)。通過分析發現訓練資料是數值型別的資料,這裡假設每個特徵服從高斯分布,因此我們選擇高斯樸素貝葉斯來進行分類計算。
step3: 模型訓練
# 使用高斯樸素貝葉斯進行計算
#help(gaussiannb)
clf = gaussiannb(priors=
none
)#var_smoothing=1e-8
clf.fit(x_train, y_train)
gaussiannb(priors=none)
# 評估
y_pred = clf.predict(x_test)
acc = np.
sum(y_test == y_pred)
/ x_test.shape[0]
print
("test acc : %.3f"
% acc)
# **
y_proba = clf.predict_proba(x_test[:1
])print
(clf.predict(x_test[:1
]))print
("預計的概率值:"
, y_proba)
test acc : 0.967
[2]預計的概率值: [[1.63380783e-232 2.18878438e-006 9.99997811e-001]]
step5: 原理簡析
高斯樸素貝葉斯假設每個特徵都服從高斯分布,我們把乙個隨機變數x服從數學期望為μ,方差為σ2的資料分布稱為高斯分布。對於每個特徵我們一般使用平均值來估計μ和使用所有特徵的方差估計σ2。
p (x
(i)=
x(i)
∣y=c
k)=1
2πσy
2exp(
−(x(
i)−μ
ck)2
2σck
2)
p(x^=x^|y=c_k) = \frac} \exp\left(-\frac - \mu_)^2}}\right)
p(x(i)
=x(i
)∣y=
ck)
=2πσ
y2
1exp(−2
σck
2(x
(i)−
μck
)2
)從上述例子中的**結果中,我們可以看到類別2對應的後驗概率值最大,所以我們認為類目2是最優的結果。
鳶尾花分類 機器學習 鳶尾花資料集 貝葉斯分類
step1 庫函式匯入 import warnings warnings.filterwarnings ignore import numpy as np 載入鶯尾花資料集 from sklearn import datasets 匯入高斯樸素貝葉斯分類器 from sklearn.bayes im...
貝葉斯分類
貝葉斯分類 有意義區分和無意義區分 既然要區分兩種點那麼兩種點必然有區別,當區分有區別的點時說是有意義區分。而完全區分那種一模一樣的點則是無意義區分。所以我們所討論的都是有意義的區分。完全區分和不完全區分 貝葉斯分類器是一種概率上的區分,而假如兩種點一種是黑的一種是白的那不需要用貝葉斯分類器區分,因...
貝葉斯分類
樸素貝葉斯模型是一組非常簡單快速的分類演算法,通常適用於維度非常高的資料集,因為執行速度快,而且可調引數少,因此非常適合為分類問題提供快速粗糙的基本方案。貝葉斯分類 樸素貝葉斯分類器建立在貝葉斯分類方法上,其數學基礎是貝葉斯定理,乙個描述統計計量條件概率關係的公式。在貝葉斯分類中,我們希望確定乙個具...