close

我使用的版本如下:

Python 3.10

sklearn 1.2.1

以下介紹使用python機器學習套件scikit-learn開發高斯貝式分類器(Gaussian bayes classifier),並進行訓練、驗證與預測,以下分成四大步驟:

  1. 建立資料
  2. 進行訓練
  3. 進行驗證
  4. 進行預測

最後提供完整程式碼

 

貝式分類器是很常見的統計分類器,在此我們假設每筆資料是從高斯分布而來(常態分佈),這樣的情況下就叫做高斯貝式分類器。接下來我們使用python的機器學習套件scikit-learn進行實作。

 

步驟一: 建立資料

#貝式分類器,我們假設資料均從高斯分布而來,這樣的分類器叫做高斯貝式分類器

#建立資料
from sklearn import datasets
from sklearn.model_selection import train_test_split
#使用鳶尾花資料集
iris = datasets.load_iris()
x = iris.data
y= iris.target

print("鳶尾花第1筆資料: ",x[0])

#建立訓練資料與測試資料
xTrain, xTest, yTrain, yTest = train_test_split(x,y,test_size=0.2,random_state=0)

test_size=0.2 就是測試資料比例為20%random_state=0代表每次都用同一筆資料,不會隨機選

 

步驟二: 進行訓練

#模型訓練
from sklearn.naive_bayes import GaussianNB
nb = GaussianNB()
nb.fit(xTrain,yTrain)

Sklearn裡面有個naïve_bayes,直接從這取得 GaussianNB,並新建一個類別。

sklearn中,fit就是進行訓練,將我們分割好的訓練資料集餵進去,就訓練完成了。

 

步驟三:進行驗證

#驗證結果
answer = nb.score(xTest,yTest)
print("驗證結果: ",answer)

 

結果如下:

fig1.png

 

步驟四:進行預測

#用來進行預測
#產生假資料,鳶尾花特徵是4個值, 我們隨機產生五筆進行預測
import numpy as np
testX = np.linspace(
1,5,20); #先產生20個值
testX = np.array(testX).reshape(5,4); #20個值使用5array存放, 每個array4個值
print(testX)
predictedY = nb.predict(testX);

print("預測的Y: ",predictedY);

建立假資料,我是使用numpylinspace,再將資料型態轉成符合模型所需的樣子,就是一筆四個值,轉置的資料與預測結果如下:

fig1.png

 

以上就是使用scikit-learn開發高斯貝式分類器的步驟,完整程式碼如下:

#貝式分類器,我們假設資料均從高斯分布而來,這樣的分類器叫做高斯貝式分類器
#建立測試資料
from sklearn import datasets
from sklearn.model_selection import train_test_split
#使用鳶尾花資料
iris = datasets.load_iris()
x = iris.data
y = iris.target


#建立訓練與測試
xTrain, xTest, yTrain, yTest = train_test_split(x,y,test_size=0.2,random_state=0)

#模型訓練
from sklearn.naive_bayes import GaussianNB
nb = GaussianNB()
nb.fit(xTrain,yTrain)


#驗證結果
answer = nb.score(xTest,yTest)
print("驗證結果: ",answer)

#用來進行預測
#產生假資料,鳶尾花特徵是4個值, 我們隨機產生五筆進行預測
import numpy as np
testX = np.linspace(
1,5,20); #先產生20個值
testX = np.array(testX).reshape(5,4); #20個值使用5array存放, 每個array4個值
print(testX)
predictedY = nb.predict(testX);

print("預測的Y: ",predictedY);

打完收工,歡迎留言交流

arrow
arrow
    全站熱搜

    葛瑞斯肯 發表在 痞客邦 留言(0) 人氣()