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