机器学习-朴素贝叶斯

朴素贝叶斯

  • 贝叶斯
    • [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)
相关推荐
数字孪生家族2 小时前
视频孪生与空间智能:重构数字时空认知,定义智能决策新范式
人工智能·重构·空间智能·视频孪生与空间智能
FL171713143 小时前
Pytorch保存pt和pkl
人工智能·pytorch·python
jieshenai3 小时前
5090显卡,基于vllm完成大模型推理
人工智能·自然语言处理
逻极4 小时前
云智融合:AIGC与云计算服务新范式(深度解析)
人工智能·云计算·aigc·云服务
雪兽软件5 小时前
人工智能(AI)的商业模式创新路线图
人工智能
俊哥V5 小时前
AI一周事件(2025年11月12日-11月18日)
人工智能·ai
算法与编程之美5 小时前
提升minist的准确率并探索分类指标Precision,Recall,F1-Score和Accuracy
人工智能·算法·机器学习·分类·数据挖掘
拓端研究室5 小时前
专题:2025年全球机器人产业发展白皮书-具身智能时代的技术突破|附39份报告PDF、数据、可视化模板汇总下载
人工智能
金智维科技官方5 小时前
政务自动化中,智能体如何实现流程智能审批?
人工智能·自动化·政务·智能体