当前位置: 首页 > news >正文

机器学习算法-朴素贝叶斯(附带拉普拉斯平滑处理)

朴素贝叶斯-python实现

数据集 excel文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具体实现代码如下:
import pandas as pd
import numpy as npclass NavieBayes:def __init__(self):self.train_x = Noneself.train_y = Nonedef fit(self, X, Y, Labels):self.train_x = Xself.train_y = Ydef predict(self, x):uni_y = np.unique(self.train_y)p, n = 0.0, ""for res in uni_y:size = self.train_y.count(res)p_fz, p_fm = size / len(self.train_y), 1.0for xindex, xvalue in enumerate(x):c = [vx[xindex] for vx, vy in zip(self.train_x, self.train_y) if vy == res and vx[xindex] == xvalue]p_fz *= (len(c) / size)p_fm *= (len([item for item in self.train_x if item[xindex] == xvalue]) / len(self.train_y))if p_fz / p_fm > p:p = p_fz / p_fmn = resreturn n# 划分数据集
def split_test_data(path):df = pd.read_excel(path)x, y, labels = [], [], []labels = df.columns.tolist()res = labels.pop()y = df[res].tolist()for item in range(df.shape[0]):x.append(df.loc[item].tolist()[:len(labels)])return x, y, labelsX, Y, Labels = split_test_data("your excel file path")bayes_model = NavieBayes()
bayes_model.fit(X, Y, Labels)
# 输入 长相、性格、身高、上进 4个属性进行预测
print(f"贝叶斯预测:{bayes_model.predict(["", "", "","上进"])}")
引入拉普拉斯平滑

在这里插入图片描述
在这里插入图片描述

具体实现代码如下:
import numpy as np
import pandas as pddef split_test_data(path):df = pd.read_excel("./test_data.xlsx")x, y, labels = [], [], []labels = df.columns.tolist()res = labels.pop()y = df[res].tolist()for item in range(df.shape[0]):x.append(df.loc[item].tolist()[:len(labels)])return x, y, labelsX, Y, Labels = split_test_data("df")class NavieBayes:def __init__(self):self.train_x = []self.train_y = []self.labels = []def fit(self, x, y, l):self.train_x = xself.train_y = yself.labels = ldef predict(self, x):uni_y = np.unique(self.train_y)p, n = 0.0, " "for res in uni_y:size = self.train_y.count(res)p_fz, p_fm = size / len(self.train_y), 1.0for xindex, xvalue in enumerate(x):c = [vx[xindex] for vx, vy in zip(self.train_x, self.train_y) if vy == res and vx[xindex] == xvalue]d = [item[xindex] for item in self.train_x]+[x[xindex]]p_fz *= (len(c) / size+len(np.unique(d)))if p_fz > p:p = p_fzn = resreturn nbayes_model = NavieBayes()
bayes_model.fit(X, Y, Labels)
print(bayes_model.predict(['帅','巨好','特高','不上进']))
http://www.xdnf.cn/news/103825.html

相关文章:

  • 【JAVA】读取windows的串口信息
  • SqlSugar与Entity Framework (EF)的SWOT分析
  • Inxpect 新推高性价比版毫米波安全雷达:以经济实用护航工业安全
  • 游戏开发核心技术解析——从引擎架构到攻防体系的完整技能树
  • 阿里云 AI 搜索开放平台:RAG智能化工作流助力 AI 搜索
  • 【C语言】C语言中的字符函数和字符串函数全解析
  • Pingora vs. Nginx vs. 其他主流代理服务器性能对比
  • 2024从Maven-MySQL-Nginx部署
  • LeetCode热题100--283.移动零--简单
  • Linux中进程的属性:状态
  • 3.4 Agent的生命周期管理:任务分解、状态管理与反馈机制
  • leetcode-排序
  • 迅为RK3562开发板ARM四核A53核心板多种系统适配全开源
  • C++学习-入门到精通-【0】计算机和C++简介
  • C++学习:六个月从基础到就业——C++学习之旅:STL迭代器系统
  • 网站架构演进之路:从单体到垂直,再到缓存优化
  • Python爬虫(2)Python爬虫入门:从HTTP协议解析到豆瓣电影数据抓取实战
  • day31 学习笔记
  • DB-Day11笔记-函数和存储过程面试题讲解
  • 操作系统 : Linux库制作与原理
  • PNG透明免抠设计素材大全26000+
  • DCAN,ECAN和MCAN的区别
  • Vue3 + TypeScript 实现二维码生成与展示
  • 开源AI客户端Cherry Studio本地化部署自建大模型服务在线平台
  • HTML+CSS对角背景变色
  • es-存储与搜索优化
  • 网络编程——通信三要素
  • 文档构建:Sphinx全面使用指南 — 强化篇
  • 常见基础电能
  • docker部署seafile修改默认端口并安装配置onlyoffice实现在线编辑