MATLAB朴素贝叶斯(德国信用卡案例)

这篇具有很好参考价值的文章主要介绍了MATLAB朴素贝叶斯(德国信用卡案例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们matlab建模课的案例

数据以及代码

链接:https://pan.baidu.com/s/18qpV2qsHzwbnOgZBMBHdGQ?pwd=r8g2 
提取码:r8g2

参考书:MATLAB数学建模方法与实践(第三版)p63-p66

导入数据及分类

计算数据的x和y

clear;clc;
data = load('german.data-numeric');
[x,y] = size(data);

例:

MATLAB朴素贝叶斯(德国信用卡案例)

数据大小为1000x25

x = 1000

y =  25


最后一列为是否失约

原数据1代表失约 2代表未失约

% 模型数据---前1到5行 测试数据---第221行 取第一列,第二列,25列
train_data = data(1:5,[1,2,25])
text_data = data(117,[1,2,25])

例:

模型数据

MATLAB朴素贝叶斯(德国信用卡案例)

测试数据

MATLAB朴素贝叶斯(德国信用卡案例)

 【注:1 12 为参数 我们需要放进我们的贝叶斯模型里面跑 0 为他会失约 我们跑贝叶斯模型的时候要注意这一列不要放进去 相当于这是一个答案 我们放进贝叶斯里跑出来的0和1 和这个正确答案做比较 才可以算出正确率】

套入自制贝叶斯算法

p0【测试数据在失约下的概率】

p1【测试数据在未失约下的概率】

【注:此时虽然传进的是整个测试数据,但是测试数据的是否失约那一列并未使用,即最后一列】

% 自制贝叶斯模型 计算测试数据 对应位置p0 p1概率
p0 = [];
p1 = [];
[p0,p1] = beiyesi_train(train_data,text_data)

贝叶斯函数实现

function [p0,p1] = beiyesi_train(train_data,text_data)
% train_data 模型数据
% text_data 测试数据
% return
% p0 测试数据在失约下的概率
% p1 测试数据在未失约下的概率

% 算测试集和模型集的大小
[x_train,y_train] = size(train_data);
[x_text,y_text] = size(text_data);

% 后验0的概率 后验1的概率 对应存进p0 p1矩阵
p0 = [];
p1 = [];
for i = 1:x_text
    for j = 1:y_text-1
        [p0(i,j),p1(i,j)] = beiyesi_function(train_data,j,text_data(i,j),y_text);
    end
end



% 以下为计算贝叶斯值 即p0 p1最后一列

default = 0; % 违约的总个数 
for i = 1:x_train
    if train_data(i,y_train) == 0
        default = default+1;
    end
end
default = default/x_train; % 违约的概率 

nodefault = 0; % 未违约的总个数
for i = 1:x_train
    if train_data(i,y_train) == 1
        nodefault = nodefault+1;
    end
end
nodefault = nodefault/x_train;% 未违约的概率

p0(:,y_text) = 1;
p1(:,y_text) = 1;
for i = 1:x_text
    for j = 1:y_text-1
        p0(i,y_text) = p0(i,y_text) * p0(i,j);
        p1(i,y_text) = p1(i,y_text) * p1(i,j);
    end
    p0(i,y_text) = p0(i,y_text) * default;
    p1(i,y_text) = p1(i,y_text) * nodefault;
end

例:

p0

MATLAB朴素贝叶斯(德国信用卡案例)

p1

MATLAB朴素贝叶斯(德国信用卡案例)

【注:该算法为避免出现0的情况 采用如果概率为0 则概率赋值为1/[(0或1的个数)+1]

p0 p1各个位置对应着测试数据的大小,但是测试数据的最后一列并没有使用到,所以我把贝叶斯算法最后乘起来的值放在p0 p1对应位置的最后一列 即贝叶斯算法得到的值为p0 p1最后一列的值 剩下我们只需要遍历p0 p1】

p0 的 第一个位置 0.6667 为

p(1|0)= 2/3 = 0.6667

第二个位置 0.3333 为

p (12|0)= 1/3 = 0.3333

第三个位置 0.1333 为

p(1|0)x p (12|0)x  (0占最后一列的比例)= 2/3 x 1/3  x 3/5 = 0.13333

p1 的 第一个位置 0.5000 为

p(1|1)= 1/2 = 0.5

第二个位置 0.3333 为

p (12|1)= 0

由于概率为0所以赋值为1+(1在最后一列的个数+1)= 1/3 = 0.3333

第三个位置 0.0667 为

p(1|1)x p (12|1)x  (1占最后一列的比例)= 1/2 x 1/3  x 2/5 = 0.0667


模型答案与真实数据结果比对得出正确率

% 预测结果
p = [];
p = beiyesi_p(p0,p1)

% 真实结果
p_text = text_data(:,end)

% 自制贝叶斯分类结果
p_right = beiyesi_right(p,p_text)

% 正确率
right_ratio = (p_right(1,1)+p_right(2,2))/(p_right(1,1)+p_right(1,2)+p_right(2,1)+p_right(2,2))

例:

p 我们模型所预测值

MATLAB朴素贝叶斯(德国信用卡案例)

p_text 真实数据结果

MATLAB朴素贝叶斯(德国信用卡案例)

p_right 矩阵

 MATLAB朴素贝叶斯(德国信用卡案例)

 right_ratio 正确率

 MATLAB朴素贝叶斯(德国信用卡案例)


 放入更大的数据测试

% 模型数据---前800行 测试数据---后200行
train_data = data(1:800,:)
text_data = data(800:1000,:)

结果如下

MATLAB朴素贝叶斯(德国信用卡案例)

正确率74% 嘿嘿 

参考文章

信用评分卡建模—基于German Credit德国信用数据集 - 知乎 (zhihu.com)文章来源地址https://www.toymoban.com/news/detail-459565.html

到了这里,关于MATLAB朴素贝叶斯(德国信用卡案例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 删除AWS绑定的信用卡账户

    前言 想使用aws的免费一年的ec2服务,所以必须先绑定信用卡,试了绑定储蓄卡还不行。绑定信用卡的时候只需要写卡号,卡片到期日期以及户头名即可。买上面的服务都不需要输入密码就可以购买。如果你用的免费服务,如果到期1年之后有其他费用,会悄无声息的扣款你的

    2024年02月12日
    浏览(57)
  • 数据挖掘实战(2):信用卡诈骗分析

    ⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者: 秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们 点赞👍🏻、收藏

    2024年02月07日
    浏览(56)
  • 能正常支付的的虚拟信用卡汇总

    OpenAi采用的是Stripe Checkout进行付款,理论上支持大多数卡种,包括Visa、万事达和银联等。然而,由于OpenAI在Stripe中限制了部分国家的银行卡支付,因此可能会出现一些支付问题。最近您尝试使用了不少卡种,包括实体卡、虚拟卡等,但都未能成功绑定支付。同时,也尝试了全

    2023年04月23日
    浏览(48)
  • opencv-信用卡数字识别-模板匹配ocr

    2024年02月11日
    浏览(45)
  • 机器学习:基于XGBoost对信用卡欺诈行为的识别

    作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 大家好,我

    2024年02月08日
    浏览(66)
  • 【银行测试】银行项目,信用卡业务测试+常问面试(三)

    银行测试-信用卡业务 1、信用卡额度如何测试? 正常测试场景: 在ATM取款,取款的金额≤信用卡额度/2(例如:信用卡额度为:2W,在ATM可成功取款10000); 在POS机上刷卡消费金额,单笔金额≤信用卡额度,交易成功; 消费的金额,超过信用卡正常额度(1-10%)交易成功(例

    2024年01月16日
    浏览(55)
  • 深度学习图像处理基础工具——opencv 实战信用卡数字识别

    任务 信用卡数字识别 穿插之前学的知识点  形态学操作 模板匹配 等 总体流程与方法 1.有一个模板 2 用轮廓检测把模板中数字拿出来 外接矩形(模板和输入图像的大小要一致 )3 一系列预处理操作 问题的解决思路 1.分析准备:准备模板,读取文件——转化为灰度图——转化

    2024年04月15日
    浏览(51)
  • 机器学习:基于AdaBoost算法模型对信用卡是否违约进行识别

    作者:i阿极 作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 大家

    2024年02月08日
    浏览(49)
  • 【Python_Opencv图像处理框架】信用卡数字识别项目

    本篇文章是opencv学习的第六篇文章,前面主要讲解了对图像的一些基本操作,这篇文章我们就开始大展身手,将前面所学的基础操作活学活用。既能复习基础操作,又能学到一些新的知识。作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正🥰 我们通

    2024年02月03日
    浏览(52)
  • 解锁新体验:虚拟信用卡赋能Midjourney,带来前所未有的便利

    在这个快节奏的数字时代,我们生活中的一切都在迅速变化。而随着这一变化的趋势,越来越多的人开始转向虚拟信用卡。而在这一切之中,Midjourney便是其中的佼佼者。今天,我们就来深入探讨一下,如何利用虚拟信用卡代充Midjourney,为我们的生活带来便利。 首先,让我们

    2024年02月12日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包