step1: 庫函式匯入
import warnings
warnings.filterwarnings('ignore')
import numpy as np# 載入鶯尾花資料集
from sklearn import datasets# 匯入高斯樸素貝葉斯分類器
from sklearn.*****_bayes import gaussiannb
from sklearn.model_selection import train_test_splitstep2: 資料匯入&分析
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=ck)和類目 ck的先驗概率: ( = )p(y=ck)。
通過分析發現訓練資料是數值型別的資料,這裡假設每個特徵服從高斯分布,因此我們選擇高斯樸素貝葉斯來進行分類計算。
step3: 模型訓練# 使用高斯樸素貝葉斯進行計算
clf=gaussiannb(var_smoothing=1e-8)
clf.fit(x_train, y_train)
gaussiannb(var_smoothing=1e-08)step4: 模型**# 評估
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.63542393e-232 2.18880483e-006 9.99997811e-001]]
step5: 原理簡析
高斯樸素貝葉斯假設每個特徵都服從高斯分布,我們把乙個隨機變數x服從數學期望為μ,方差為σ^2的資料分布稱為高斯分布。對於每個特徵我們一般使用平均值來估計μ和使用所有特徵的方差估計σ^2。
( ( )= ( )| = )=12 2 ⎯⎯⎯⎯⎯⎯⎯⎯√exp(−( ( )− )22 2 )p(x(i)=x(i)|y=ck)=12πσy2exp(−(x(i)−μck)22σck2)
從上述例子中的**結果中,我們可以看到類別2對應的後驗概率值最大,所以我們認為類目2是最優的結果。
鳶尾花資料集
from sklearn import datasets iris datasets.load iris iris是乙個字典集keys iris.keys dict keys data target target names descr feature names data iris.data.sh...
機器學習 鳶尾花資料集
鳶尾花資料集採集的是鳶尾花的測量資料以及其所屬的類別。每個類的觀察值數量是均等的。一共有 150 個觀察值,4個輸入變數和1個輸出變數。測量資料報括 萼片長度 cm 萼片寬度 cm 花瓣長度 cm 花瓣寬度 cm 類別共分為三類 iris setosa,iris versicolour,iris v...
鳶尾花分類python演算法 BP演算法鳶尾花分類
bp演算法鳶尾花分類 網上很多鳶尾花例子,學習其他人後仿寫,我在執行其他人的時候會有溢位和錯誤。下述 準確率95 提取碼 y07d 如果有什麼不對的或者有什麼不懂iamzhubaoliang yeah.net 工程位址 import math import random import pandas ...