机器学习-朴素贝叶斯

朴素贝叶斯

  • 贝叶斯
    • [1. 朴素贝叶斯](#1. 朴素贝叶斯)
    • [2. 开发流程](#2. 开发流程)

贝叶斯

python 复制代码
"""
贝叶斯公式
	P(C) 表示C出现的概率, 一般是目标值
	P(W|C) 表示C条件下 W出现的概率
	P(W) 表示W出现的概率
"""

1. 朴素贝叶斯

python 复制代码
"""
朴素贝叶斯
	在贝叶斯基础上增加: 特征条件独立的假设
	特征之间是互为独立的

拉普拉斯平滑系数
	为了避免概率值为0, 在分子和分母分别加上一个数值
	公式
		α是拉普拉斯平滑系数, 一般指定为1
		N¡ 是 F1 符合条件 C 的样本数量
		N 是在条件C下所有样本的总数
		m 表示所有独立样本的总数
	API
		sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
		alpha:拉普拉斯平滑系数
"""

拉普拉斯平滑系数公式

2. 开发流程

python 复制代码
"""
开发流程分析
	1. 获取数据
	2. 数据基本处理
		2.1 处理数据y
		2.2 加载停用词
		2.3 处理数据x 把文档分词
		2.4 统计词频矩阵 作为句子特征
		2.5 准备训练集 测试集
	3. 模型训练
		3.1 实例化贝叶斯 添加拉普拉斯平滑参数
	4. 模型预测
	5. 模型评估
"""
# 1.导入依赖包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import jieba
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB # 多项分布朴素贝叶斯


def MultinomialDemo():
    # 2.获取数据
    data_df = pd.read_csv('./data/书籍评价.csv', encoding ='gbk')
    print('data_df -->\n', data_df)
    # 3.数据基本处理
    # 3-1 处理数据y
    data_df['评论标号'] = np.where(data_df['评价'] == '好评', 1, 0)
    y = data_df['评论标号']
    print('data_df -->\n', data_df)
    # 3-2 加载停用词
    stopwords = []
    with open('./data/stopwords.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()
        stopwords = [line.strip() for line in lines]
    stopwords = list(set(stopwords))  # 去重
    # 3-3 处理数据x 把文档分词
    comment_list = [','.join(jieba.lcut(line)) for line in data_df['内容']]
    # print('comment_list-->\n', comment_list)
    # 3-4 统计词频矩阵 作为句子特征
    transfer = CountVectorizer(stop_words=stopwords)
    x = transfer.fit_transform(comment_list)
    mynames = transfer.get_feature_names_out()
    x = x.toarray()
    # 3-5 准备训练集测试集
    x_train = x[:10, :]  # 准备训练集
    y_train = y.values[0:10]
    x_test = x[10:, :]  # 准备测试集
    y_test = y.values[10:]
    print('x_train.shape-->', x_train.shape)
    print('y_train.shape-->', y_train.shape)
    # 4.模型训练
    # 4-1 实例化贝叶斯 # 添加拉普拉修正平滑参数
    mymultinomialnb = MultinomialNB()
    mymultinomialnb.fit(x_train, y_train)
    # 5.模型预测
    y_pred = mymultinomialnb.predict(x_test)
    print('预测值-->', y_pred)
    print('真实值-->', y_test)
    # 6.模型评估
    myscore = mymultinomialnb.score(x_test, y_test)
    print('myscore-->', myscore)
相关推荐
奈落244 小时前
AI辅助的另一面:从2026年国际AI安全报告的“故障”清单到国内专家的可靠性短板,自主行动的Agent为什么更难及时干预
人工智能·安全·agent·本地部署·ai 办公
火山引擎开发者社区5 小时前
eMudhra 证书失陷:容器用户最容易忽略的镜像信任链漏洞
人工智能
LabVIEW开发6 小时前
LabVIEW 机载 DIAL:每秒万次甲烷测量
人工智能·labview·labview知识·labview功能·labview程序
飞猫的边缘AI7 小时前
英特尔量子生意
人工智能·量子计算·边缘ai
深蓝AI7 小时前
桌面 Agent 缺的不是视觉:Vercel 开源 agent-desktop,用无障碍树 ref 替代截图坐标
人工智能·程序员
镜子AI7 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
向哆哆8 小时前
羊行为目标检测数据集:4类别、2,000张图像 | 目标检测
人工智能·yolo·目标检测·目标跟踪
如若1238 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
赛博守夜人9 小时前
AI安全攻防与治理之十六:对抗样本、恶意文件与多模态攻击,AI 内容安全检测的真实盲区
人工智能·安全
罗西的思考9 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习