朴素贝叶斯
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
朴素贝叶斯分类
alpha:拉普拉斯平滑系数
案例:20类新闻分类
分割数据集
tfidf进行的特征抽取
朴素贝叶斯预测
#朴素贝叶斯对sklearn中的新闻集进行分类
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
def nb_news():
#获取所有新闻数据集
news=fetch_20newsgroups(subset="all")
# 进行数据集抽取
x_train,x_test,y_train,y_test=train_test_split(news.data,news.target,random_state=20)
# 文本特征值抽取
transfer=TfidfVectorizer()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)
# 朴素贝叶斯计算
estimator=MultinomialNB()
estimator.fit(x_train,y_train)
y_predict=estimator.predict(x_test)
# 结果计算
print("准确率",estimator.score(x_test,y_test))
print(news.target)
if __name__ == '__main__':
nb_news()
准确率 0.8550509337860781
[10 3 17 ... 3 1 7]
Process finished with exit code 0
总结
优点:
朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
对缺失数据不太敏感,算法也比较简单,常用于文本分类。
分类准确度高,速度快
缺点:
由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好