用樸素貝葉斯演算法對sklearn自帶的新聞進行分類

2021-10-10 18:21:57 字數 1242 閱讀 7895

from sklearn.datasets import fetch_20newsgroups

from sklearn.feature_extraction.text import tfidfvectorizer

from sklearn.*****_bayes import multinomialnb

from sklearn.model_selection import train_test_split

def nb_news()

: #1

)載入資料

news=

fetch_20newsgroups

(data_home=r"d:\桌面上的檔案\資料探勘"

,subset=

"all"

) #2)資料劃分

x_train,x_test,y_train,y_test=

train_test_split

(news.data,news.target)

#3)文字特徵抽取

transfer=

tfidfvectorizer()

transfer.

fit_transform

(x_train)

transfer.

transform

(x_test)

#4)構建樸素貝葉斯演算法預估器

estimator=

multinomialnb()

estimator.

fit(x_train,y_train)

# 5)模型評估

# 方法一:直接比對真實值和**值

y_predict = estimator.

predict

(x_test)

print

("結果:"

, y_predict)

print

("直接比對真實值和**值"

, y_test == y_predict)

# 方法二:計算準確率

score = estimator.

score

(x_test, y_test)

print

("準確率為:"

, score)

return none

if __name__ ==

'__main__'

: # 執行函式

nb_news

()

樸素貝葉斯演算法

首先樸素貝葉斯分類演算法利用貝葉斯定理來 乙個未知類別的樣本屬於各個類別的可能性,選擇可能性最大的乙個類別作為該樣本的最終類別。對於計算而言,需要記住乙個公式。p c x p x c p c p x 類似於概率論條件概率公式。其中x代表含義為最終類別,例如 yes?no。c為屬性。使用樸素貝葉斯演算...

樸素貝葉斯演算法

計算貝葉斯定理中每乙個組成部分的概率,我們必須構造乙個頻率表 因此,如果電子郵件含有單詞viagra,那麼該電子郵件是垃圾郵件的概率為80 所以,任何含有單詞viagra的訊息都需要被過濾掉。當有額外更多的特徵時,此概念的使用 利用貝葉斯公式,我們可得到如下概率 分母可以先忽略它,垃圾郵件的總似然為...

樸素貝葉斯演算法

對於樸素貝葉斯演算法,我的理解就是 使用已知的概率和結果,來 事情的條件。舉乙個例子就是,我們通過統計得到了不同年齡段喜歡吃冰激凌的比例,比如各採訪了500個青少年 中年人和老年人,得到有450個青少年 300個中年人和50個老年人喜歡吃冰激凌。我們還通過統計,知道了在社會中假設小孩子佔20 中年人...