机器学习-朴素贝叶斯

朴素贝叶斯

  • 贝叶斯
    • [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)
相关推荐
java1234_小锋2 分钟前
Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 线性判别分析 (LDA)
python·机器学习·scikit-learn
小王爱学人工智能15 分钟前
OpenCV的阈值处理
人工智能·opencv·计算机视觉
新智元39 分钟前
刚刚,光刻机巨头 ASML 杀入 AI!豪掷 15 亿押注「欧版 OpenAI」,成最大股东
人工智能·openai
机器之心1 小时前
全球图生视频榜单第一,爱诗科技PixVerse V5如何改变一亿用户的视频创作
人工智能·openai
新智元1 小时前
2025年了,AI还看不懂时钟!90%人都能答对,顶尖AI全军覆没
人工智能·openai
湫兮之风1 小时前
OpenCV: Mat存储方式全解析-单通道、多通道内存布局详解
人工智能·opencv·计算机视觉
机器之心1 小时前
Claude不让我们用!国产平替能顶上吗?
人工智能·openai
程序员柳1 小时前
基于YOLOv8的车辆轨迹识别与目标检测研究分析软件源代码+详细文档
人工智能·yolo·目标检测
算家计算1 小时前
一站式高质量数字人动画框架——EchoMimic-V3本地部署教程: 13 亿参数实现统一多模态、多任务人体动画生成
人工智能·开源
API流转日记1 小时前
Gemini-2.5-Flash-Image-Preview 与 GPT-4o 图像生成能力技术差异解析
人工智能·gpt·ai·chatgpt·ai作画·googlecloud