1. 參考資料
http://cwiki.apachecn.org/pages/viewpage.action?pageId=10814109
http://www.cnblogs.com/Scorpio989/p/4760281.html
http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html
http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html
2. iris數(shù)據(jù)集
http://archive.ics.uci.edu/ml/datasets/Iris
iris是一個植物數(shù)據(jù)庫,我們可以通過植物的特征判斷它的產(chǎn)地,數(shù)據(jù)集特征:
實例數(shù):150(三類中的每一類為50)其中:
特征向量有四個:
- 萼片長度(厘米)
- 萼片寬度(厘米)
- 花瓣長度(厘米)
- 花瓣寬度(厘米)
類有三個: - Setosa
- Versicolour
- Virginica
3. 使用貝葉斯定理睛低,根據(jù)植物特征服傍,預(yù)測其產(chǎn)地
"""
=========================================
Gaussian Naive Bayes ( 高斯樸素貝葉斯 )
=========================================
"""
print(__doc__)
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB
import numpy as np
# 裝載測試數(shù)據(jù)集
iris = datasets.load_iris()
# 600 共600/4=150個樣本
print("Number of test points %d" % (iris.data.shape[0]))
# 打印特征名稱
print("Feature names: ")
print(iris.feature_names)
# 打印分類名稱
print("Target class names: ")
print(iris.target_names)
gnb = GaussianNB()
# 輸入樣本與分類,開始訓(xùn)練
gnb.fit(iris.data, iris.target)
# 指定植物特征向量預(yù)測產(chǎn)地
plant = np.array([5.9, 3., 5.1, 1.8])
class_pred = gnb.predict([plant])
print("Predict class is %s" % (iris.target_names[class_pred[0]]))
# 對訓(xùn)練數(shù)據(jù)再次運行分類吹零,這個可以看作是一種回歸測試,通常不會和target完全一致套蒂,否則可能造成過擬合問題
y_pred = gnb.predict(iris.data)
# 打印有多少個樣本不一致
print("Number of mislabeled points out of a total %d points : %d"
% (iris.data.shape[0], (iris.target != y_pred).sum()))