# 使用樸素貝葉斯分類
def classify(dataset):
numentries = len(dataset)
# 計算出每種類別的數量
labelcounts = {}
for featvec in dataset:
currentlabel = featvec[-1]
labelcounts[currentlabel] = labelcounts.get(currentlabel, 0) + 1
# 計算出每個類的先驗概率
prob = {}
for key in labelcounts:
prob[key] = float(labelcounts[key]) / numentries
return prob
# 使用樸素貝葉斯**
def predict(prob, dataset, features, newobject):
numfeatures = len(dataset[0]) - 1
# 計算條件概率
for i in range(numfeatures):
labelvalues = [example[-1] for example in dataset if example[i] == newobject[features[i]]]
labelcounts = {}
for currentlabel in labelvalues:
labelcounts[currentlabel] = labelcounts.get(currentlabel, 0) + 1
for val in prob:
prob[val] *= float(labelcounts.get(val, 0)) / len(labelvalues)
# 找出最大返回
maxprob = -1.0
for val in prob:
if prob[val] > maxprob:
maxprob = prob[val]
label = val
return label
def main():
# 建立資料集
def createdataset():
dataset = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
features = ['no su***cing', 'flippers']
return dataset, features
dataset, features = createdataset()
prob = classify(dataset)
print(predict(prob, dataset, features, ))
print(predict(prob, dataset, features, ))
print(predict(prob, dataset, features, ))
print(predict(prob, dataset, features, ))
if __name__ == '__main__':
exit(main())
yes
nono
no
樸素貝葉斯分類
1 貝葉斯分類是一類分類演算法的總稱,這類演算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。2 樸素貝葉斯的思想基礎是這樣的 對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬於哪個類別。通俗來說,就好比這麼個道理,你在街上看到乙個黑人,我問你你猜這哥們 來的,...
樸素貝葉斯分類
摘自寫在公司內部的wiki 要解決的問題 表中增加欄位classification,有四個取值 0 初始值,未分類 1 positive 2 normal 99 negative review submit前,由樸素貝葉斯分類器決定該條review的flag屬於negative還是positive ...
分類 樸素貝葉斯
原始的貝葉斯公式為 p b a p a b p a p a b p b p a 1 在分類問題中,y為類別,x為樣本特徵,則已知待 的樣本特徵 x 它為類別yi 的概率為 p yi x p x yi p y i p x p yi jp xj y i p x 2 p yi 類別為y i的樣本 數總樣本...