机器学习---朴素贝叶斯算法(20类新闻分类 文本特征抽取-tfidf)
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文件
- 点赞
- 收藏
- 关注作者
评论(0)