鶯尾花資料集 貝葉斯分類 day5

2021-10-12 10:23:03 字數 2715 閱讀 1673

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​​

1​exp(−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...

貝葉斯分類

貝葉斯分類 有意義區分和無意義區分 既然要區分兩種點那麼兩種點必然有區別,當區分有區別的點時說是有意義區分。而完全區分那種一模一樣的點則是無意義區分。所以我們所討論的都是有意義的區分。完全區分和不完全區分 貝葉斯分類器是一種概率上的區分,而假如兩種點一種是黑的一種是白的那不需要用貝葉斯分類器區分,因...

貝葉斯分類

樸素貝葉斯模型是一組非常簡單快速的分類演算法,通常適用於維度非常高的資料集,因為執行速度快,而且可調引數少,因此非常適合為分類問題提供快速粗糙的基本方案。貝葉斯分類 樸素貝葉斯分類器建立在貝葉斯分類方法上,其數學基礎是貝葉斯定理,乙個描述統計計量條件概率關係的公式。在貝葉斯分類中,我們希望確定乙個具...