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 中年人...