机器学习-朴素贝叶斯

朴素贝叶斯

  • 贝叶斯
    • [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)
相关推荐
Danceful_YJ1 小时前
33.Transformer架构
人工智能·pytorch·深度学习
美狐美颜SDK开放平台3 小时前
美颜SDK性能优化实战:GPU加速与AI人脸美型的融合开发
人工智能·音视频
AI浩4 小时前
VSSD:具有非因果状态空间对偶性的视觉Mamba模型
人工智能·目标检测·计算机视觉
lqqjuly4 小时前
Lidar调试记录Ⅳ之Ubuntu22.04+ROS2+Livox_SDK2环境下编译Livox ROS Driver 2
人工智能·机器人·自动驾驶
qq_436962184 小时前
数据中台:打破企业数据孤岛,实现全域资产化的关键一步
数据库·人工智能·信息可视化·数据挖掘·数据分析
宇若-凉凉5 小时前
BERT 完整教程指南
人工智能·深度学习·bert
JD技术委员会5 小时前
如何在跨部门沟通失误后进行协调与澄清
人工智能
PcVue China5 小时前
PcVue X 工控——工厂数字化转型与落地巡回研讨会圆满举行
人工智能·软件工程·scada·监控平台·工控网
StarPrayers.6 小时前
自蒸馏学习方法
人工智能·算法·学习方法
咚咚王者6 小时前
人工智能之编程进阶 Python高级:第十一章 过渡项目
开发语言·人工智能·python