樸素貝葉斯分類的Python實現

2021-09-30 14:11:05 字數 1698 閱讀 1266

# 使用樸素貝葉斯分類

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的樣本 數總樣本...