我使用的版本如下:
Python 3.10 sklearn 1.2.1 |
以下介紹使用python機器學習套件scikit-learn開發高斯貝式分類器(Gaussian bayes classifier),並進行訓練、驗證與預測,以下分成四大步驟:
- 建立資料
- 進行訓練
- 進行驗證
- 進行預測
最後提供完整程式碼
貝式分類器是很常見的統計分類器,在此我們假設每筆資料是從高斯分布而來(常態分佈),這樣的情況下就叫做高斯貝式分類器。接下來我們使用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)
結果如下:
步驟四:進行預測
#用來進行預測
#產生假資料,鳶尾花特徵是4個值, 我們隨機產生五筆進行預測
import numpy as np
testX = np.linspace(1,5,20); #先產生20個值
testX = np.array(testX).reshape(5,4); #將20個值使用5個array存放, 每個array放4個值
print(testX)
predictedY = nb.predict(testX);
print("預測的Y: ",predictedY);
建立假資料,我是使用numpy的linspace,再將資料型態轉成符合模型所需的樣子,就是一筆四個值,轉置的資料與預測結果如下:
以上就是使用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個值使用5個array存放, 每個array放4個值
print(testX)
predictedY = nb.predict(testX);
print("預測的Y: ",predictedY);
打完收工,歡迎留言交流
留言列表