1.导入德国信用卡数据

data = load('german.data-numeric');

2.进行数据处理,选取模型数据与测试数据

数据处理

% 最后一列变成0-1
for i = 1:xdata(i,y) = data(i,y)-1;
end

选取数据

train_data = data(1:5,[1,2,25])
text_data = data(76,[1,2,25])

先选取小样本数据,之后再扩大数据样本,这里选取了1-5行的1,2,25列作为模型数据,第76行的1,2,25列作为测试数据

3.接下来进行贝叶斯模型概率的计算

(1)当贝叶斯概率为0时不进行拉普拉斯平滑(即在当贝叶斯概率为0时不额外增加样本数据)

function [default,nodefault] = beiyesi_function(data,columns,value,index)[x,y] = size(data);p_default = 0; % 违约
for i = 1:xif data(i,index) == 0p_default = p_default+1;end
endp_nodefault = 0; % 未违约
for i = 1:xif data(i,index) == 1p_nodefault = p_nodefault+1;end
end% columns,value 且 违约
default = 0;
for i = 1:xif data(i,columns) == value && data(i,index) == 0default = default+1;end
end
default = default/p_default;% columns,value 且 不违约
nodefault = 0;
for i = 1:xif data(i,columns) == value && data(i,index) == 1nodefault = nodefault+1;end
end
nodefault = nodefault/p_nodefault;
function [p0,p1] = beiyesi_train(train_data,text_data)
% 算测试集和模型集的大小
[x_train,y_train] = size(train_data);
[x_text,y_text] = size(text_data);% 后验0的概率 后验1的概率
p0 = [];
p1 = [];
for i = 1:x_textfor j = 1:y_text-1[p0(i,j),p1(i,j)] = beiyesi_function_old(train_data,j,text_data(i,j),y_text);end
enddefault = 0; % 违约
for i = 1:x_trainif train_data(i,y_train) == 0default = default+1;end
end
default = default/x_train;nodefault = 0; % 未违约
for i = 1:x_trainif train_data(i,y_train) == 1nodefault = nodefault+1;end
end
nodefault = nodefault/x_train;p0(:,y_text) = 1;
p1(:,y_text) = 1;
for i = 1:x_textfor j = 1:y_text-1p0(i,y_text) = p0(i,y_text) * p0(i,j);p1(i,y_text) = p1(i,y_text) * p1(i,j);endp0(i,y_text) = p0(i,y_text) * default;p1(i,y_text) = p1(i,y_text) * nodefault;
end

主要算法思想为

先进行计算最后一列0跟1的概率

然后计算测试样本(1,12)在概率1跟0时的概率

(2) 当贝叶斯概率为0时进行拉普拉斯平滑(即在当贝叶斯概率为0时额外增加一条样本数据)

由上方概率结果可知,此样本只有在P(12|1)时概率为0,导致后面计算P((1,12)|1)时的概率也为0

若在此时进行拉普拉斯平滑后(在样本数据后面自己增加一条当第三列为1时第二列是12的数据),其概率变成

4.接下来计算贝叶斯的正确率

代码参考文章(6条消息) MATLAB朴素贝叶斯(德国信用卡案例)_huaye0101的博客-CSDN博客

(1)当没进行拉普拉斯平滑时小样本正确矩阵及正确率

(2)当进行了拉普拉斯平滑时小样本正确矩阵及正确率

5.接着进行数据量的扩大(更容易比较出两者的区别)

将前800行作为模型数据,后200行作为测试数据

train_data = data(1:800,:)
text_data = data(801:1000,:)

(1)当没进行拉普拉斯平滑时大样本正确矩阵及正确率

(2)当进行了拉普拉斯平滑时大样本正确矩阵及正确率

6.总结

拉普拉斯平滑的核心思想:平等对待新出现的样本与特征值 。

在朴素贝叶斯概率等于0时使用拉普拉斯平滑后正确率会比没有使用拉普拉斯平滑后的正确率高

代码参考文章(6条消息) MATLAB朴素贝叶斯(德国信用卡案例)_huaye0101的博客-CSDN博客

朴素贝叶斯0概率时不进行拉普拉斯平滑与进行了拉普拉斯平滑后正确率对比(德国信用卡案例)相关推荐

  1. 朴素贝叶斯算法概率相关概念

    贝叶斯原理是英国数学家托马斯·贝叶斯于18 世纪提出的,当我们不能直接计算一件事情(A)发生的可能性大小的时候,可以间接的计算与这件事情有关的事情(X,Y,Z)发生的可能性大小,从而间接判断事情(A) ...

  2. 统计学习方法|朴素贝叶斯原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  3. 情感分类与朴素贝叶斯

    本文介绍一种机器学习分类算法--朴素贝叶斯算法及其在NLP中的应用.具体实现部分可参考朴素贝叶斯用于情感分类的实现 NLP中的分类 许多自然语言处理任务涉及分类,分类也是人类和机器智能的核心. 文本分 ...

  4. 机器学习之朴素贝叶斯算法详解

    文章目录 一. 朴素贝叶斯 1.概率基础知识: 2.朴素贝叶斯模型流程: ①计算流程: ②三个阶段: 3.拉普拉斯平滑 二. 半朴素贝叶斯分类器 概念 三.朴素贝叶斯的面试题 一. 朴素贝叶斯 1.概 ...

  5. 朴素贝叶斯模型简单理解

    小白一个,如果有问题欢迎大家指正. 朴素贝叶斯法 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.对于给定的训练数据集,首先基于特征条件独立假设学习输入\输出的联合概率分布:然后基于此模型, ...

  6. 机器学习(二)--sklearn之逻辑斯蒂回归和朴素贝叶斯

    文章目录 1.逻辑斯蒂回归 2.朴素贝叶斯 3.三种分类算法的比较 上回说到,sklearn中的k近邻算法解决多分类问题.k近邻的基本步骤是:收集数据.创建分类器.训练.预测.评估性能.调参(参数就是 ...

  7. 【朴素贝叶斯】深入浅出讲解朴素贝叶斯算法(公式、原理)

    本文收录于<深入浅出讲解自然语言处理>专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅! ​个人主页:有梦想的程序星空 ​个人介绍:小编是人工智能领域硕士,全栈工 ...

  8. 用朴素贝叶斯和SVM进行文本分类

    写在前面的感悟: 测试集文件删除一定要shift+delete!!!!!要不然回收站直接爆炸,用几个小时打开,然后再用几个小时清空.文本分类的数据集看似只有几个G那么大,但是架不住文件数量多,导致各种 ...

  9. 机器学习 第三讲 机器学习基础、机器学习算法(K-近邻算法、朴素贝叶斯算法)

    文章目录 一.机器学习基础 1.明确几点问题 2.机器学习算法的判别依据 3.机器学习算法分类 4.机器学习开发流程 二.机器学习算法 1.sklearn数据集 (1)数据集划分 (2)sklearn ...

  10. sklearn中的朴素贝叶斯

    1 概述 1.1 真正的概率分类器 在许多分类算法应用中,特征和标签之间的关系并非是决定性的.如想预测一个人究竟是否能在泰坦尼克号海难中生存下来,可以建一棵决策树来学习训练集.在训练中,其中一个人的特 ...

最新文章

  1. Dart Metadata 使用
  2. 傅里叶级数FS, 离散傅里叶变换DFT
  3. object C 数据类型
  4. 数据结构(6) -- 查找
  5. 超好用的C#控制台应用模板
  6. Linux下打印调试管理
  7. Python 线程定时器 Timer - Python零基础入门教程
  8. 2017.10.23 卡牌游戏 失败总结
  9. 在线CSV转Excel工具
  10. 【渝粤教育】国家开放大学2018年春季 7138-22T人际交流与沟通 参考试题
  11. C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}...
  12. 为什么登录MySQL会闪退_MySql登录时闪退的快速解决办法
  13. 对《人工智能的进化》这一人工智能方面科普书籍的学习/摘抄/总结
  14. Ubuntu下,用键盘定义鼠标按键
  15. 计算机考研300分什么水平,工科考研300分什么概念
  16. 电机磁链和反电动势系数辨识
  17. 华硕打不开vm里面的Linux,华硕主板 Vmware虚拟机 二进制转换与此平台上的长模式不兼容...
  18. CentOS配置本地yum源/阿里云yum源/163yuan源
  19. 增速放缓、对手打劫,顺丰雄风不再?
  20. linux中vsc是什么作用,在Linux上开始使用Visual Studio代码(VSC)

热门文章

  1. 2个方法解决PDF转成WORD
  2. 关于分布式服务中的中间件技术入门概述
  3. 中国物流行业“十四五”前景规划及创新战略研究报告2022年版
  4. 【开发工具】【Bus Hound】USB抓包工具(Bus Hound)的使用
  5. 使用pdfobject.js实现在线浏览PDF--前端显示PDF
  6. 怎样更改itunes备份位置_什么是iTunes备份文件?
  7. CCNA考试题库中英文翻译版及答案3
  8. 内存碎片的定义、种类、产生原因以及解决办法
  9. 三国古城和108将地图已恢复
  10. 遥感原理与应用总结——第二章:遥感平台及运行特点