机器学习-朴素贝叶斯

朴素贝叶斯

  • 贝叶斯
    • [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)
相关推荐
一水鉴天12 小时前
映射、哈希表与哈斯图:计算机科学的三种基线 20261003(元宝)
开发语言·人工智能
198******1263412 小时前
2026 企业 AI 办公产品选型指南:从场景匹配判断工具价值
人工智能
玫瑰互动GEO12 小时前
GEO优化学习九级模型:开发者从认知层切入
人工智能·ai·ai搜索·gem·生成式引擎优化·gem优化
海绵宝宝转agent12 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
每天都要写算法(努力版)13 小时前
【行业前沿报告】DAgger:让智能体在自己走到的状态上学习
人工智能·学习·机器学习
liron7113 小时前
智能实体演化系统的统一性概念
人工智能·深度学习·神经网络
小小龙学IT13 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
呆萌很13 小时前
常用骨干网络预训练输入尺寸
人工智能
Yolanda_202213 小时前
19.神经网络-最大池化的使用
人工智能·深度学习·神经网络
W***259213 小时前
2026 企业 AI 办公平台选型指南:可完成全链路任务的 AI 工具评估
人工智能