机器学习(8)朴素贝叶斯算法(20条新闻分类)
生活随笔
收集整理的這篇文章主要介紹了
机器学习(8)朴素贝叶斯算法(20条新闻分类)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
一、基礎(chǔ)理論
二、實戰(zhàn):20條新聞分類
?1、讀取數(shù)據(jù)
2、訓(xùn)練集劃分
3、特征工程(文本特征提取)
?4、樸素貝葉斯算法訓(xùn)練
?5、模型評估
方法一:預(yù)測值與真實值比對
方法二:計算準(zhǔn)確率
總代碼
一、基礎(chǔ)理論
樸素貝葉斯算法:(樸素:假設(shè)數(shù)據(jù)集屬性之間是相互獨(dú)立的)因此算法的邏輯性十分簡單,并且算法較為穩(wěn)定,當(dāng)數(shù)據(jù)呈現(xiàn)不同的特點時,樸素貝葉斯的分類性能不會有太大的差異。
樸素:假設(shè)特征與特征之間相互獨(dú)立。
貝葉斯:貝葉斯公式。
貝葉斯公式:
?最后概率最大的即為預(yù)測結(jié)果。
?
優(yōu)點:
有穩(wěn)定分類效率;
對確實數(shù)據(jù)不太敏感;
算法比較簡單,適合于文本分類;
分類準(zhǔn)確度高,速度快。
缺點:
由于有獨(dú)立性假設(shè),所以特征屬性有關(guān)聯(lián)時,分類效果不好。
二、實戰(zhàn):20條新聞分類
?1、讀取數(shù)據(jù)
# 1、讀取數(shù)據(jù)
news = fetch_20newsgroups(subset='all') #subset:獲取訓(xùn)練集
2、訓(xùn)練集劃分
# 2、數(shù)據(jù)集劃分
train_data, test_data, train_target, test_target = train_test_split(news.data, news.target)
3、特征工程(文本特征提取)
# 3、特征工程(文本特征抽取)
transfer = TfidfVectorizer()
train_data = transfer.fit_transform(train_data)
test_data = transfer.transform(test_data)
?4、樸素貝葉斯算法訓(xùn)練
# 4、樸素貝葉斯算法
estimstor = MultinomialNB()
estimstor.fit(train_data, train_target)
?5、模型評估
方法一:預(yù)測值與真實值比對
# 方法一:預(yù)測值與真實值比對
predict = estimstor.predict(test_data)
print(test_target == predict)
方法二:計算準(zhǔn)確率
# 方法二:計算準(zhǔn)確率
score = estimstor.score(test_data, test_target)
print('準(zhǔn)確率', score)
總代碼
# 新聞分類
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB# 1、讀取數(shù)據(jù)
news = fetch_20newsgroups(subset='all') #subset:獲取訓(xùn)練集# 2、數(shù)據(jù)集劃分
train_data, test_data, train_target, test_target = train_test_split(news.data, news.target)# 3、特征工程(文本特征抽取)
transfer = TfidfVectorizer()
train_data = transfer.fit_transform(train_data)
test_data = transfer.transform(test_data)# 4、樸素貝葉斯算法
estimstor = MultinomialNB()
estimstor.fit(train_data, train_target)# 5、模型評估
# 方法一:預(yù)測值與真實值比對
predict = estimstor.predict(test_data)
print(test_target == predict)# 方法二:計算準(zhǔn)確率
score = estimstor.score(test_data, test_target)
print('準(zhǔn)確率', score)
總結(jié)
以上是生活随笔為你收集整理的机器学习(8)朴素贝叶斯算法(20条新闻分类)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(实战)facebook地址预测
- 下一篇: 机器学习(9)决策树(决策树分类鸢尾花)