朴素贝叶斯算法实现文本分析

本文介绍了如何使用朴素贝叶斯算法进行文本分析。通过贝叶斯定理理解分类原理,并利用sklearn库中的MultinomialNB实现分类器。在用户发言分析项目中,将问题和标签数据导入,进行训练集划分、特征工程和模型训练。最终,模型评估和预测展示了算法的有效性。
摘要由CSDN通过智能技术生成
朴素贝叶斯算法实现文本分析

​ 最近在公司做的一个用户发言分析的项目中用到了文本分析,就产生一个对之前所学的文本分析方法做一个总结,今天主要想讲一讲朴素贝叶斯算法实现的文本分析.

朴素贝叶斯:

​ 在学习机器学习算法之前,必须明确的一点就是,任何一个算法都是基于一定的统计学方法对一个事件进行预估,并按照最大概率假设这件事的结果.朴素贝叶斯算法或者说朴素贝叶斯分类器就是基于朴素贝叶斯定理来实现的.

贝叶斯定理:贝叶斯定理是描述两个事件(事件A, 事件B)之间条件概率的定理.

有一个公式说明了这个定理:

img

简单来说,这个公式说明了在事件B发生的前提下,事件A发生的概率,可以用 事件A发生的前提下事件B发生的概率 乘以 事件A发生的概率 除以 事件B发生的概率得出.

来认识几个名词:

先验概率: P(A), P(B) 被称为先验概率, 这是因为其只考虑单事件的各方因素而忽略其他事件的影响而得出的.

后验概率:P(A|B), P(B|A)分别被称为A和B的后验概率,其综合了两个事件之间的联系而得出.

朴素贝叶斯分类:

在了解贝叶斯定理之后,朴素贝叶斯分类的实现也就不难理解了.

朴素贝叶斯分类是基于贝叶斯定理的,首先它是一个监督学习算法,也就是说,类别已经事先规定好,分类器需要做的事就是,计算该样本发生的情况下在各类别中出现的概率,然后对其进行排序,取概率最大的分类作为最后的结果.我们规定训练集中的每个样本必须唯一,因此 只需要计算p(B|A)XP(A)即可.

文本分析代码实现:

sklearn 是一个实现机器学习算法的第三方库,在此,我就直接借此库展示朴素贝叶斯算法实现的文本分析:

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
import pandas as pd

def verify():
    data = pd.read_excel('question.xlsx', index_col=0).head(120)
    x_train, x_test, y_train, y_test = train_test_split(data['questions'], 		data['flags'], test_size=0.2, random_state=23)
    
    # 特征工程
    transfer = TfidfVectorizer()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 朴素贝叶斯算法预估器
    estimator = MultinomialNB()
    estimator.fit(x_train, y_train)

    # 模型评估
    score = estimator.score(x_test, y_test)
    print(score)

    # 预测
    y1_predict = estimator.predict(x_test)
    data = pd.read_excel('question.xlsx', index_col=0).fillna('haha')
    x_predict = transfer.transform(data.iloc[120:, 0])
    y_predict = estimator.predict(x_predict)
    print(y_predict)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值