机器学习---朴素贝叶斯算法(20类新闻分类 文本特征抽取-tfidf)

举报
Pengpengpeng 发表于 2024/12/29 16:41:03 2024/12/29
【摘要】 本文基于jupyter notebook编辑器,使用朴素贝叶斯算法实现了20类新闻分类

20类新闻分类

1)获取数据
2)划分数据集
3)特征工程
	文本特征抽取
4)朴素贝叶斯预估器流程
5)模型评估

·
·
from sklearn.datasets import fetch_20newsgroups#导入 scikit-learn 库中的 fetch_20newsgroups 函数,该函数主要用于加载 20 个新闻组的文本数据集。
from sklearn.model_selection import train_test_split # Scikit-learn 中的一个常用方法,用于将数据集划分为训练集和测试集。
from sklearn.preprocessing import StandardScaler #用于对特征数据进行标准化处理,使其均值为 0,标准差为 1,有助于提升模型的性能。
from sklearn.neighbors import KNeighborsClassifier #K-最近邻分类器(KNN)的实现,适用于分类任务。通过计算样本之间的距离,寻找最近的 K 个邻居并预测分类。
from sklearn.model_selection import GridSearchCV #用于网格搜索的工具,可以通过交叉验证来选择模型的最佳超参数。
from sklearn.feature_extraction.text import TfidfVectorizer #用于将文本数据转换为 TF-IDF 特征矩阵,常用于文本分类、聚类和信息检索任务。
from sklearn.naive_bayes import MultinomialNB # 朴素贝叶斯分类器,主要用于离散数据(例如文本分类任务中的词频或 TF-IDF 特征)。
·

获取数据

news = fetch_20newsgroups(subset="all")

2)划分数据集

x_train,x_test,y_train,y_test = train_test_split(news.data, news.target)

3) 特征工程:文本特征抽取-tfidf

transfer =TfidfVectorizer()
x_train = transfer.fit_transform(x_train)
x_test =transfer.transform(x_test)

4) 朴素贝叶斯算法预估器流程

estimator = MultinomialNB()
estimator.fit(x_train,y_train)

5)模型评估

方法1 直接比对真实值和预测值

y_predict=estimator.predict(x_test)
print("y_predict:\n",y_predict)
print("直接比对真实值和预测值:\n",y_test == y_predict)

方法2 计算准确率

score = estimator.score(x_test,y_test)
print("准确率为:\n",score)

y_predict:
 [11  3  8 ... 14 16 14]
直接比对真实值和预测值:
 [ True  True  True ...  True  True  True]
准确率为:
 0.8465619694397284

·
·
·
·
附件为markdown PDF文件

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。