贝叶斯决策分类(附代码)

参考课件:https://wenku.baidu.com/view/c462058f6529647d2728526a.html

错误率最小化和风险最小化

代码:

import numpy as np
import matplotlib.pyplot as plt

from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_gaussian_quantiles

# Construct dataset
X1, y1 = make_gaussian_quantiles(mean=(1, 1),cov=0.2,
                                 n_samples=100, n_features=2,
                                 n_classes=1 )

X2, y2 = make_gaussian_quantiles(mean=(1.5, 1.5), cov=0.2,
                                 n_samples=100, n_features=2,
                                 n_classes=1)
X = np.concatenate((X1, X2))
y = np.concatenate((y1, y2+1 ))

# for class 1 error
errorNum = 0
for i in range(len(X)):
    if y[i] == 0 and X[i][0]+X[i][1]>2.5:
        errorNum += 1

print ‘exp1 error rate for class 1 is ‘+str(errorNum)+‘%‘

# for class 2 error
errorNum = 0
for i in range(len(X)):
    if y[i] == 1 and X[i][0]+X[i][1]<2.5:
        errorNum += 1

print ‘exp1 error rate for class 2 is ‘+str(errorNum)+‘%‘

# for class 1 risk
errorNum = 0
for i in range(len(X)):
    if y[i] == 0 and 0.368528*(X[i][0]*X[i][0]+X[i][1]*X[i][1])+0.07944*(X[i][0]+X[i][1])-1.119>0:
        errorNum += 1

print ‘exp1 risk error rate for class 1 is ‘+str(errorNum)+‘%‘

# for class 2 risk
errorNum = 0
for i in range(len(X)):
    if y[i] == 1 and 0.368528*(X[i][0]*X[i][0]+X[i][1]*X[i][1])+0.07944*(X[i][0]+X[i][1])-1.119<0:
        errorNum += 1

print ‘exp1 risk error rate for class 2 is ‘+str(errorNum)+‘%‘

plot_colors = "br"
plot_step = 0.02
class_names = "AB"

plt.figure(figsize=(8, 8))

# Plot the decision boundaries
plt.subplot(221)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),
                     np.arange(y_min, y_max, plot_step))
Z = np.sign(xx+yy-2.5)
cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
plt.axis("tight")

# Plot the training points
for i, n, c in zip(range(2), class_names, plot_colors):
    idx = np.where(y == i)
    plt.scatter(X[idx, 0], X[idx, 1],
                c=c, cmap=plt.cm.Paired,
                label="Class %s" % n)
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.legend(loc=‘upper right‘)
plt.xlabel(‘x‘)
plt.ylabel(‘y‘)
plt.title(‘exp1 mini error‘)

plt.subplot(222)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),
                     np.arange(y_min, y_max, plot_step))
Z = np.sign(0.368528*(xx*xx+yy*yy)+0.07944*(xx+yy)-1.119)
cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
plt.axis("tight")

# Plot the training points
for i, n, c in zip(range(2), class_names, plot_colors):
    idx = np.where(y == i)
    plt.scatter(X[idx, 0], X[idx, 1],
                c=c, cmap=plt.cm.Paired,
                label="Class %s" % n)
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.legend(loc=‘upper right‘)
plt.xlabel(‘x‘)
plt.ylabel(‘y‘)
plt.title(‘exp1 mini risk‘)

###############################################################################

# Construct dataset
X1, y1 = make_gaussian_quantiles(mean=(1, 1),cov=0.2,
                                 n_samples=100, n_features=2,
                                 n_classes=1 )

X2, y2 = make_gaussian_quantiles(mean=(3, 3), cov=0.2,
                                 n_samples=100, n_features=2,
                                 n_classes=1)
X = np.concatenate((X1, X2))
y = np.concatenate((y1, y2+1))

# for class 1 error
errorNum = 0
for i in range(len(X)):
    if y[i] == 0 and X[i][0]+X[i][1]>4:
        errorNum += 1

print ‘exp2 error rate for class 1 is ‘+str(errorNum)+‘%‘

# for class 2 error
errorNum = 0
for i in range(len(X)):
    if y[i] == 1 and X[i][0]+X[i][1]<4:
        errorNum += 1

print ‘exp2 error rate for class 2 is ‘+str(errorNum)+‘%‘

# for class 1 risk
errorNum = 0
for i in range(len(X)):
    if y[i] == 0 and 0.368528*(X[i][0]*X[i][0]+X[i][1]*X[i][1])+2.15888*(X[i][0]+X[i][1])-10.4766>0:
        errorNum += 1

print ‘exp2 risk error rate for class 1 is ‘+str(errorNum)+‘%‘

# for class 2 risk
errorNum = 0
for i in range(len(X)):
    if y[i] == 1 and 0.368528*(X[i][0]*X[i][0]+X[i][1]*X[i][1])+2.15888*(X[i][0]+X[i][1])-10.4766<0:
        errorNum += 1

print ‘exp2 risk error rate for class 2 is ‘+str(errorNum)+‘%‘

# Plot the decision boundaries
plt.subplot(223)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),
                     np.arange(y_min, y_max, plot_step))
Z = np.sign(xx+yy-4)
cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
plt.axis("tight")

# Plot the training points
for i, n, c in zip(range(2), class_names, plot_colors):
    idx = np.where(y == i)
    plt.scatter(X[idx, 0], X[idx, 1],
                c=c, cmap=plt.cm.Paired,
                label="Class %s" % n)
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.legend(loc=‘upper right‘)
plt.xlabel(‘x‘)
plt.ylabel(‘y‘)
plt.title(‘exp2 mini error‘)

plt.subplot(224)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),
                     np.arange(y_min, y_max, plot_step))
Z = np.sign(0.368528*(xx*xx+yy*yy)+2.15888*(xx+yy)-10.4766)
cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
plt.axis("tight")

# Plot the training points
for i, n, c in zip(range(2), class_names, plot_colors):
    idx = np.where(y == i)
    plt.scatter(X[idx, 0], X[idx, 1],
                c=c, cmap=plt.cm.Paired,
                label="Class %s" % n)
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.legend(loc=‘upper right‘)
plt.xlabel(‘x‘)
plt.ylabel(‘y‘)
plt.title(‘exp2 mini risk‘)

plt.tight_layout()
plt.subplots_adjust(wspace=0.35)
plt.show()
时间: 2024-10-13 10:19:12

贝叶斯决策分类(附代码)的相关文章

大数据量分页存储过程效率测试附代码

在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750  内存:2G 软件:Windows server 2003    +   Sql server 2005 OK,我们首先创建一数据库:data_Test,并在此数据库中创建一表:tb_TestTable 按 Ctrl+C 复制代码1create database data_Test --创建数据库data_Test 2GO 3use data

【独家】阿里天池IJCAI17大赛第四名方案全解析(附代码)

[独家]阿里天池IJCAI17大赛第四名方案全解析(附代码) https://mp.weixin.qq.com/s?__biz=MzAxMzA2MDYxMw==&mid=2651560625&idx=1&sn=bd8ca61516ac57937e1abf52c6a2cbd6&chksm=805765dbb720eccd660cc2cd727c9761b07ec00c1359a0a12f370331e4449a3caa856f99f245&scene=0&pa

c#万能视频播放器(附代码)

原文:c#万能视频播放器(附代码) c#万能视频播放器 本人之前很多的文章中均提到了使用libvlc为播放器内核制作的播放器,也许有些朋友对此感兴趣,于是我用c#写了一个调用libvlc api实现的万能视频播放器,与大家分享一下.说它“万能”,当然是因为我们站在了vlc的肩膀上. vlc是一个强大而且开源的多媒体播放器,也可以说是一个多媒体平台.它支持非常广泛的媒体格式的本地播放,完全可以媲美mplayer,其对视频网络流的处理能力更是非常强悍.libvlc就是指的vlc的核心,它向外提供了一

android动画-动画分类及代码示例

原来一直对动画一知半解,只知道按照网上的方法会用就行了,但是自己写起来感觉确实有点费劲,今天终于研究了代码实现,一下子感觉清晰多了.先把总结如下,代码中有详细的注释. 动画分类 1.Peoperty Animation 这个动画是Android3.0之后推出的目前用处不大. 2.View Animation 这类动画也叫tween animation 主要分为 渐变动画(AlphaAnimation)旋转动画(RotateAnimation) 缩放动画(ScaleAnimation)位移动画(T

分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载

一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用的程序之中写数据库轮循代码,这样就会产品一个很严重的两个问题,第一个问题是延迟,轮循机制要定时执行,必须会引起延迟,第二个问题是数据库压力过大,当进行高频度的轮循会生产大量的数据库查询,并且如果有大量的使用者进行轮循,那数据库的压力就更大了. 那么在这个时间,就需要一套能支持发布-订阅模式的分布式消

Android拍照+方形剪裁——附代码与效果图

本文链接    http://blog.csdn.net/xiaodongrush/article/details/29173567 参考链接    http://stackoverflow.com/questions/12758425/how-to-set-the-output-image-use-com-android-camera-action-crop 1. 缘起 要开发一个头像上传的模块,头像上传过程分两步.第一步,相机拍照或者从图库选取照片,产生一个照片,第二步,提供头像剪裁,一般是

分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.NET Socket Tcp 技术实现的分布消息总线,也是一个简单的发布订阅框架: 并且以案例的形式为大家演示了如何使用这个分布式消息总线架构发布订阅架构模式的应用程序,在得到各位同仁的反馈的同时,大家也非常想了解订阅者离线的情况,即支持离线构发布订阅框架. 二.离线架构 不同于订阅者.发布者都同时在

链表讲解和基本操作练习附代码

以下都是单链表的基本操作,我都写了一遍,链表时间长不写一定会陌生,留给自己以后忘了看一眼,顺便给想学习链表的同学一点提示吧 首先先写头文件head.h,这里都是我定义好的函数分别有 这里的所有例子都是有头结点的链表,都是单链表操作 1)头插发建表 2)尾插法建表 3)打印链表 4)对链表赋值的时候进行插入排序 5)将链表翻转 6)找到链表倒数第n个元素 7)将两个链表连在一起 8)使单链表变成环链表 9)判断链表是否有环 10)将现有的链表排序进行插入排序(与4)不同,4)是在建立链表的时候进行

IOS的滑动菜单(Sliding Menu)的详细写法(附代码)

滑动菜单是一个非常流行的IOS控件 先上效果图:        这里使用github的JTReveal框架来开发,链接是https://github.com/agassiyzh/JTRevealSidebarDemo/commit/ac03d9d7be4f1392020627e5fe8c22b972de4704 我们的ViewController要实现protocol JTRevealSidebarV2Delegate的两个optional方法 @optional - (UIView *)vie

腾讯搜搜的分类搜索代码

<html> <head> <title>腾讯搜搜的分类搜索代码丨kiddy官网|河北塑胶地板</title> <style> body,table,select,ul,li{font-size:12px;line-height:20px;} body{margin:0;background:#fff;} body,table,select,ul,li,td{font-family:"宋体";} form{margin:0;p