朴素贝叶斯算法对文本的分类

1.案例
总结一下:P©:就是在所有类别(5)中是C的次数(4)
P(c|C):c在C下出现的概率。在C类中,总共8个词,有5个c

朴素贝叶斯算法对文本的分类_第1张图片
2.为了防止像tokyo这种为零的情况,因此引入拉普拉斯平滑系数
朴素贝叶斯算法对文本的分类_第2张图片
在这里插入图片描述
8是在C中所有词个数,6是在所有特征词个数,一个类别只算一次
API
在这里插入图片描述
代码实现

from sklearn.datasets import fetch_20newsgroups
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.feature_extraction.text import TfidfVectorizer
#1.调用花的值变成4组集合,并设置随机数种子

    #步骤1:先实例化花类:
data_new = fetch_20newsgroups()
    #步骤二进行划分
x_train,x_test,y_train,y_test = train_test_split(data_new .data,data_new .target,random_state=22)
#2.用TF-IDF进行文本特征提取(注意朴素贝叶斯和KNN区别,朴素特征提取,KNN标准化)
transfer = TfidfVectorizer()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
from sklearn.datasets import fetch_20newsgroups
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
import  numpy as np
#1.调用花的值变成4组集合,并设置随机数种子

    #步骤1:先实例化花类:
data_new = fetch_20newsgroups()
    #步骤二进行划分
x_train,x_test,y_train,y_test = train_test_split(data_new .data,data_new .target,random_state=22)
print('训练集特征值为:\n',x_train,np.array(x_train).shape)
#这一步是为了看整体的新闻数据是啥,np.array(x_train).shape是最终的行列,不同于花的小数据分的很好,直接就是列表,这里需要先对英文文本进行列表处理才能用shape
#2.用TF-IDF进行文本特征提取是因为前一步发现是英文文章,所以必须先提取特征(注意朴素贝叶斯和KNN区别,朴素特征提取是因为是英文文本,KNN标准化是因为求距离容易受影响)
transfer = TfidfVectorizer()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
print('x_train:\n',x_train)
#这里和之前相同,测试集需要用到训练集的fit,所以只用transform
#3.对训练集进行训练,产生模型
estimator = MultinomialNB(alpha= 1)
estimator.fit(x_train,y_train)
#4.拿测试集进行测试对比
    #步骤1:对测试集进行预测
y_pridict = estimator.predict(x_test)
print("y_predict:\n", y_pridict)
    #步骤二:对测试集结果进行比对
print('对比预测值和正确值:\n',y_test == y_pridict)
    #步骤三:计算准确率
score = estimator.score(x_test,y_test)
print('准确率为:\n',score)


注意:一般的流程:1.数据获取 2. 数据处理(像花这种就不需要处理英文分得很好)3.特征工程(若是文本则要特征提取,若是需要平均化则需要标准化等)4.利用不同模型算法进行评估

结果:

E:\software\Anaconda3\python.exe "F:/机器视觉/new program/朴素贝叶斯算法案例.py"
y_predict:
 [ 0  8 11 ...  3 18  2]
对比预测值和正确值:
 [ True  True  True ...  True  True  True]
准确率为:
 0.8434075645104278

朴素贝叶斯算法对文本的分类_第3张图片

你可能感兴趣的:(python,机器学习)