day12-貝葉斯

今天學習了有關貝葉斯分類器的基本知識

樸素貝葉斯分類器的基本原理

例:用sklearn中的樸素貝葉斯庫函數(shù)做分類

代碼如下:

import numpy as np
#導入高斯樸素貝葉斯
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score

x = np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])
y = np.array([1,1,1,2,2,2])

clf =GaussianNB()
clf.fit(x,y)
GaussianNB(priors = None)
print(clf.predict([[-0.8,-1]]))

輸出:[1]

例:用貝葉斯做拼寫檢查

代碼如下:

import re
import collections
alphabet = 'abcdefghijklmnopqrstuvwxyz'
# 把語料中的單詞全部抽取出來, 轉成小寫, 并且去除單詞中間的特殊符號
def words(text): return re.findall('[a-z]+', text.lower()) 
# 返回詞頻 
def train(features):
    model = collections.defaultdict(lambda: 1)#給沒有出現(xiàn)但要返回的詞默認lambda: 1
    for f in features:
        model[f] += 1
    return model 
NWORDS = train(words(open('./data/big.txt').read()))#字典格式{單詞:單詞頻率}
#返回所有與單詞 w 編輯距離為 1 的集合
def edits1(word):
    n = len(word)
    return set([word[0:i]+word[i+1:] for i in range(n)] +                     # 刪除
               [word[0:i]+word[i+1]+word[i]+word[i+2:] for i in range(n-1)] + # 交換
               [word[0:i]+c+word[i+1:] for i in range(n) for c in alphabet] + # 替換
               [word[0:i]+c+word[i:] for i in range(n+1) for c in alphabet])  # 插入

#返回所有與單詞 w 編輯距離為 2 的集合
#在這些編輯距離小于2的詞中間, 只把那些正確的詞作為候選詞
def edits2(word):
    return set(e2 for e1 in edits1(word) for e2 in edits1(e1))
def known(words): return set(w for w in words if w in NWORDS)
#如果known(set)非空, candidate 就會選取這個集合, 而不繼續(xù)計算后面的
def correct(word):
    candidates = known([word]) or known(edits1(word)) or known_edits2(word) or [word]
    return max(candidates, key=lambda w: NWORDS[w])
correct('laste')

輸出:last

例:用貝葉斯算法做新聞分類。

算法涉及:1、用jieba分詞器;2、TF_IDF提取關鍵字;3、LDA主題模型;4、使用貝葉斯進行分類。
代碼鏈接如下:使用貝葉斯做新聞分類

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容