欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 机器学习-朴素贝叶斯

机器学习-朴素贝叶斯

2024/11/30 6:50:57 来源:https://blog.csdn.net/h15366059/article/details/141001112  浏览:    关键词:机器学习-朴素贝叶斯

朴素贝叶斯

  • 贝叶斯
    • 1. 朴素贝叶斯
    • 2. 开发流程

贝叶斯

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

在这里插入图片描述

1. 朴素贝叶斯

"""
朴素贝叶斯在贝叶斯基础上增加: 特征条件独立的假设特征之间是互为独立的拉普拉斯平滑系数为了避免概率值为0, 在分子和分母分别加上一个数值公式α是拉普拉斯平滑系数, 一般指定为1N¡ 是 F1 符合条件 C 的样本数量N 是在条件C下所有样本的总数m 表示所有独立样本的总数APIsklearn.naive_bayes.MultinomialNB(alpha = 1.0)alpha:拉普拉斯平滑系数
"""

拉普拉斯平滑系数公式
在这里插入图片描述

2. 开发流程

"""
开发流程分析1. 获取数据2. 数据基本处理2.1 处理数据y2.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 处理数据ydata_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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com